要求使用一種資料結構進行批量染色操作,且要求後面可以檢測是否被"其他顏色汙染"。
則看了題解很容易想到,使用某種資料結構做批量增加的操作,之後檢測增加後的值是否能夠整除原來的元素。
考慮如果直接按照1、2、3、4進行賦值就會有:同樣是染色2次,有3+3 = 6和2+2+2 = 6,無法有效判斷整除。考慮加乙個操作:增加染色次數的判定,但是同樣也會有3+3 = 6 = 2+4的問題,因此對陣列進行重新設計,則直覺告訴我們,1,2,4,7,......an,an+n這個數列可以完美解決這個問題——不存在第2種組合可以使用相同數目的數列元素相加得到數列的某個其他元素。
因此,使用一位陣列開足夠大的陣列之後,動態的按照二維陣列的方式進行定址,即可完成上述操作。
#includeusingnamespace
std;
#define ll intmax_t
const
int maxn=4000233
;ll farm[maxn];
ll times[maxn];
ll color[maxn];
int maxx_numebr = 1
;int add_number = 1
;int
m,n,k;
void insert_mex(ll *v,int a,int
b,ll key)
a+=a&(-a);
}}ll find_mex(ll *v,int a,int
b) a-=a&(-a);
}return
cntt;
}void insert(ll *v,int a,int b,int c,int
d,ll key)
ll find(ll *v,int a,int
b)void
init()
}for(int i=0;ii)
int cntt = n*m;
int pos = 0
;
for(int i=0;ii)
}cout
}int
main()
牛客多校第二場 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...
18牛客第二場 J farm
示例1輸入 2 2 2 1 22 3 1 1 2 2 2 2 1 2 1 1 輸出題意 給出乙個n m的區域,t次操作 每個點都是一種植物 t次操作區域覆蓋肥料,如果區域裡面的植物不等於覆蓋的飛亮那麼就植物死亡,求有多少植物死亡。思路 我們將每種植物的座標存下來,然後我也將每種肥料的覆蓋區域座標存下...
牛客多校第二場Jfarm(隨機化演算法)
牛客多校第二場jfarm 隨機化演算法 題目大意 有一塊大小為n m的農田,每乙個地上都種著種類為a i j 的植物,接下來要進行t次農藥噴灑,每次會對左上角為 x1,y1 右下角為 x2,y2 的矩陣噴灑型別為k的農藥,如果被噴灑的植物的種類和農藥的種類不同 也就是a i j k 這個植物就會死掉...