牛客多校第二場Jfarm(隨機化演算法)

2021-08-25 11:22:26 字數 894 閱讀 9988

牛客多校第二場jfarm(隨機化演算法)

題目大意:

有一塊大小為n*m的農田,每乙個地上都種著種類為a[i][j]的植物,接下來要進行t次農藥噴灑,每次會對左上角為(x1,y1),右下角為(x2,y2)的矩陣噴灑型別為k的農藥,如果被噴灑的植物的種類和農藥的種類不同(也就是a[i][j]!=k),這個植物就會死掉。問在t次噴灑之後這n*m個植物有多少個死掉了。

思路:

如果噴灑的農藥之和%它本身的種類!=0,植物肯定死掉了。而植物死掉了噴灑的農藥之和%它本身的種類!=0則是個偽命題。比如植物種類為2,噴灑了1和3,種子死掉了,但是(1+3)%2=0.

如果我們想用這個方法來判斷種子是否死掉了,可以先把hash處理資料,或者使用隨機數,這樣就不容易出現我們不想要的意外情況。

我們使用隨機數來解決這個問題

#include

#include

#include

using namespace std;

vectorran;//這是生成乙個存放100w個隨機數vector

vectorp[1000002];//存的是初始資訊

vectorf[1000002];//二維字首和的資訊

int main()

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

for (int j = 1; j <= m; j++)

for (int i = 0; i < t; i++)//用二維字首和更新區間

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

for (int j = 1; j <= m; j++)

printf("%lld\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...

牛客暑假多校第二場J farm

要求使用一種資料結構進行批量染色操作,且要求後面可以檢測是否被 其他顏色汙染 則看了題解很容易想到,使用某種資料結構做批量增加的操作,之後檢測增加後的值是否能夠整除原來的元素。考慮如果直接按照1 2 3 4進行賦值就會有 同樣是染色2次,有3 3 6和2 2 2 6,無法有效判斷整除。考慮加乙個操作...

18牛客第二場 J farm

示例1輸入 2 2 2 1 22 3 1 1 2 2 2 2 1 2 1 1 輸出題意 給出乙個n m的區域,t次操作 每個點都是一種植物 t次操作區域覆蓋肥料,如果區域裡面的植物不等於覆蓋的飛亮那麼就植物死亡,求有多少植物死亡。思路 我們將每種植物的座標存下來,然後我也將每種肥料的覆蓋區域座標存下...