3783. 【NOIP2014模擬8.19】簽到題

(File IO): input:checkin.in output:checkin.out

Time Limits: 1000 ms  Memory Limits: 524288 KB  Detailed Limits    Special Judge

Description

給定n個數,求出這n個數的一個非空子集,使得這個子集中的數的和能被n整除,無解輸出-1.

Input

第一行爲數據組數T
接下來T組數據,每組數據第一行爲一個正整數n,第二行爲n個用空格分開的數。

Output

對於每一組數據,如果無解輸出一行一個整數-1;否則第一行輸出一個正整數m,表示子集的大小,然後在第二行輸出m個數,分別是這個子集中的數。如果有多種方案,輸出任意一種。

Sample Input

1
1
1
 

Sample Output

1
1
 

Data Constraint

對於30%的數據  n<=20
對於50%的數據  n<=100
對於70%的數據  n<=1000
對於100%的數據  n<=100000,T<=10

 

總結:

這道題水法竟然能切。

等等, 非空子集爲什麼非要是連續的?

不解WA0。

我考場的做法:

f[i][j]到第i位和爲j的方案數, g[i][j]爲ij下是從哪個位置轉移來的。

然後從後往前找f[i][0]!=0, 往前回溯。

爲什麼錯?

 

正解:

若數列中有0, 輸出即可。

考慮前綴和數列, 有n + 1個取值。

mod n 後在[0, n)之間, 故至少有一對是相等的, 找出就行。

 

加上桶O(n)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章