牛客网暑期ACM多校训练营(第二场)J farm 二维差分数组+随机化

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const LL mod=1e9+7;
const int maxn=1e6+10;
#define lowbit(x) (x&(-x))
struct BIT
{
    LL**a;int n,m;
    BIT(){a=0;n=m=-1;}
    BIT(int n,int m):n(n),m(m)
    {
        a=new LL*[n+1];
        for(int i=0;i<=n;i++)a[i]=new LL[m+1]();
    }
    ~BIT(){
        for(int i=0;i<=n;i++) free(a[i]);
        if(a!=0)free(a);
    }
    void add(int x,int y,int v)
    {
         if(x<=n&&x>=1&&y<=m&&y>=1)
         a[x][y]+=v;
    }
    void sum()
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
    }
};
inline int read()
{
    int x=0,f=1;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;
}
int main()
{
#ifdef shuaishuai
    freopen("in.txt","r",stdin);
#endif // shuaishuai
 
    int n,m,k;
    scanf("%d%d%d",&n,&m,&k);
    BIT t(n,m);
    vector<int>id(n*m+1);
    srand(time(NULL));
    for(int i=1,sz=n*m;i<=sz;i++)
    {
        id[i]=1000007+rand()*rand()+rand();
    }
    vector<int>a[n+1];
     for(int i=1;i<=n;i++)
    {
        a[i].resize(m+1);
        for(int j=1;j<=m;j++)
           a[i][j]=id[read()];
    }
    while(k--)
    {
        int x1,y1,x2,y2,v;
        x1=read(),y1=read(),x2=read(),y2=read(),v=id[read()];
        t.add(x1,y1,v);t.add(x2+1,y1,-v);t.add(x1,y2+1,-v);t.add(x2+1,y2+1,v);
    }
    t.sum();
    int ans=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
    {//判断是否会死的关键是对于该点施肥种类的累计和应被该花对应化肥种类值整除 所以随机1e6以上的数能高概率不能整除
        if(t.a[i][j]%a[i][j]!=0)ans++;
    }
    printf("%d\n",ans);
    return 0;
}

 

转载于:https://www.cnblogs.com/polya/p/9892518.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值