1 条题解

  • 1
    @ 2022-7-20 21:54:15
    #include <bits/stdc++.h>
    #define lowbit(x) (x&(-x))
    using namespace std;
    int c[130][130];
    int ans=0,maxn=-0x3f3f3f3f;
    void add(int x,int y,int k)
    {
        for(int i=x;i<=129;i+=lowbit(i))
        {
            for(int j=y;j<=129;j+=lowbit(j))
            {
                c[i][j]+=k;
            }
        }
    }
    int query(int x,int y)
    {
        int ans=0;
        for(int i=x;i>=1;i-=lowbit(i))
        {
            for(int j=y;j>=1;j-=lowbit(j))
            {
                ans+=c[i][j];
            }
        }
        return ans;
    }
    int main()
    {
        int d,n;
        cin>>d>>n;
        for(int i=1;i<=n;i++)
        {
            int x,y,k;
            scanf("%d%d%d",&x,&y,&k);
            add(x+1,y+1,k);
        }
        for(int i=1;i<=129;i++)
        {
            for(int j=1;j<=129;j++)
            {
                int i1=i-d;
                if(i1<=0)
                {
                    i1=1;
                }
                int i2=(i+d);
                if(i2>=130)
                {
                    i2=129;
                } 
                int j1=(j-d);
                if(j1<=0)
                {
                    j1=1;
                }
                int j2=(j+d);
                if(j2>=130)
                {
                    j2=129;
                } 
                int ans1=query(i2,j2)-query(i2,j1-1)-query(i1-1,j2)+query(i1-1,j1-1);
                if(ans1>maxn)
                {
                    ans=1;
                    maxn=ans1;
                }
                else if(ans1==maxn)
                {
                    ans++;
                }
            }
        }
        cout<<ans<<" "<<maxn;
    }
    
    • 1

    [NOIP2014 提高组] 无线网络发射器选址

    信息

    ID
    998
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    3
    已通过
    2
    上传者