牛客多校第二場 J(隨機 矩陣二維字首和)

2021-08-21 18:06:24 字數 1400 閱讀 9608

時間限制:c/c++ 4秒,其他語言8秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

the first line of input contains 3 integers n,m,t(n*m<=1000000,t<=1000000)

for the next n lines, each line contains m integers in range[1,n*m] denoting the type of plant in each grid.

for the next t lines, the i-th line contains 5 integers x1,y1,x2,y2,k(1<=x1<=x2<=n,1<=y1<=y2<=m,1<=k<=n*m)

print an integer, denoting the number of plants which would die.

示例1複製

2 2 2

1 22 3

1 1 2 2 2

2 1 2 1 1

複製

3
隨機生成1~1e6對應的權值。

更新的時候,對整個矩陣加對應位置的權值,並記錄這個店被更新的次數。

之後用二維字首和來得到(i,j)上的總權值sum(i,j)和被更新的次數cnt(i,j)

如果sum(i,j)!=cnt(i,j)*rand(a(i,j)) 說明存在乙個數更新的時候跟他本身不等,讓答案+1

#include#define mp make_pair

#define fir first

#define se second

#define ll long long

#define pb push_back

using namespace std;

const int maxn=1e6+10;

const ll mod=1e9+7;

const int maxm=1e6+10;

const double eps=1e-7;

const int inf=0x3f3f3f3f;

vectorv[maxn],cnt[maxn],sum[maxn];

int n,m,t;

ll w[maxn];

int main()

}for (int i=1;i<=n;i++)

}while (t--)

for (int i=1;i<=n;i++)

}int ans=0;

for (int i=1;i<=n;i++)}}

printf("%d\n",ans);

return 0;

}

牛客多校第二場 J farm

輸入描述 the first line of input contains 3 integers n,m,t n m 1000000,t 1000000 for the next n lines,each line contains m integers in range 1,n m denotin...

2019牛客多校第二場

蒙特卡洛 猜答案 注意答案要累乘 最大的可以用rmq rmqrm q做然後挖掉四個角分別再做一次即可 掛一下大佬的鏈結 最重要的是學會了字首和查詢相差為1 11的時候的奇技淫巧 include include define fo i,a,b for i a i b i define fd i,a,b...

2019牛客多校第二場

乙個0到n 1的環,初始在0,每次隨機前進或後退一格,當所有點都訪問過就結束,問結束時站在k的概率是多少。注意輸出的是字首積 一開始站在0,最後顯然不可能在0,剩下n 1格,隨機數打表發現概率相同,都為 frac include using namespace std typedef long lo...