• 【题解】Luogu P1648 看守


    原题传送门:P1648 看守

    这题目让求得的是d维( d <=4 )空间中n个点( 2 <= N <= 1000000 )之间最大的哈曼顿距离

    模拟,emm,能拿30分,不错

    因为d <= 4,所以考虑枚举每一维的正负情况

    求出每个点每一位的数字之和(数字符号为+或-,所以最多16个状态)

    最后先枚举每一个状态,再枚举每一个点,求出数字之和最大和最小,求一下差,和ans比较谁大

    复杂度为O(N 2^D)

    the end

    #pragma GCC optimize("O3")
    #include <bits/stdc++.h>
    #define N 1000005
    #define inf 0x3f3f3f3f
    using namespace std;
    inline int read()
    {
        register int x=0,f=1;register char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    inline int Max(register int a,register int b)
    {
        return a>b?a:b;
    }
    inline int Min(register int a,register int b)
    {
        return a<b?a:b;
    }
    int cnts[4]={2,4,8,16};
    int a[N][6],n,d,cnt,add[20][N],ans=0;
    int main()
    {
        n=read(),d=read();
        cnt=cnts[d-1];
        for(register int i=1;i<=n;++i)
        {
            for(register int j=1;j<=d;++j)
                a[i][j]=read();
            for(register int j=0;j<cnt;++j)
            {
                int tmp=j;
                for(register int k=1;k<=d;++k)
                {
                    if(tmp&1)
                        add[j][i]+=a[i][k];
                    else
                        add[j][i]-=a[i][k];
                    tmp>>=1;
                }
            }
        }
        for(register int i=0;i<cnt;++i)
        {
            int maxx=-inf,minn=inf;
            for(register int j=1;j<=n;++j)
            {
                maxx=Max(maxx,add[i][j]);
                minn=Min(minn,add[i][j]);
            }
            ans=Max(ans,maxx-minn);
        }
        printf("%d",ans);
        return 0;			
    } 
    
  • 相关阅读:
    JavaScript String常用方法和属性
    JavaScript null 和 undefined
    document.write()
    MyBatis中的@MapKey注解
    Zookeeper实现分布式锁
    zookeeper相关
    二阶段提交和三阶段提交
    代理模式
    模板方法模式
    策略模式
  • 原文地址:https://www.cnblogs.com/yzhang-rp-inf/p/9743431.html
Copyright © 2020-2023  润新知