UESTC 1901 方方是個壞孩子

2021-06-19 18:25:25 字數 1537 閱讀 1097

方方是個壞孩子

方方是乙個調皮的孩子,每天到處搞破壞把妹子,鄰居都討厭他。一天

方方不小心把鄰居

老姚神的魔法棒給摔成了n段,長度分別為a0,a

1,……,a

n-1。方方雖然調皮,但還是不敢招惹可怕的

老姚神,修復魔棒是如此的艱難,只能請求另乙個鄰居

哈利波特大

用魔法把魔棒修復,但

哈利波特大

正在忙著統計霍格沃茨的男女比例,沒有太多時間幫

方方修魔棒,只答應只為

方方使用一次魔法。

哈利波特大

的魔法很奇怪,魔法只能把一段

連續的魔棒片段連在一起,並且連線的片段的長度之和必須為p的倍數,(例如n=6,p=11,a0到a

n-1分別為11,11,1,6,7,9,

哈利波特大

可以把a0和a

1連在一起,或者把a

3, a

4, a

5連在一起),注意

老姚神的魔棒必須按順序接,也就是說,

方方不能隨意改動a

0, a

1,... a

n-1的順序。

方方想把盡可能多的魔法棒片段連在一起,現在想找你幫忙。

第一行包含乙個正數 t (t <= 50),表示資料組數。

接下來每組資料報含兩行。

第一行包含兩個整數 n, p (1<=n<=100000, 1<=p<=11),代表魔法棒有n段,連線的長度之和必須為p的倍數。

第二行包含n個正整數分別表示a0,a1……,a(n-1),(1 <= ai <= 1000, 0 <= i < n)。

對於每組資料輸出一行,表示能最多能連線起來的魔棒片段個數。.

56 11

11 11 1 6 7 9

1 21

1 33

10 2

1 2 3 4 5 6 7 8 9 10

4 31 2 3 431

193注意在第二組樣例中,事實上魔法根本無法施展,但是答案是1,因為即使不使用魔法,片段也是乙個乙個的~

#include#include#include#include#define n 100005

const int p=15;

int a[n],sum; //定義 sum(第i個sum)= (a[1] + a[2] +... + a[i]) 稱為i位置的字首和。 (1 <= i <= n),特別的有sum[0] = 0。

int front[p]; //front[i]代表最小的下標x,使得sum[x] % p = i,rear[i]則代表最大的下標x滿足相同的條件。列舉答案即可;

int rear[p];

int max(int a,int b)

int main()

{ int t,i,n,p;

scanf("%d",&t);

while(t--)

{ scanf("%d%d",&n,&p);

sum=0;

for(i=0;i

1901 賞賜 OR 災難

time limit 1 sec memory limit 128 mb submitted 418 solved 110 大g南征北戰終於打下了大片土地成立了g國,大g在開國大典上傳召幫助自己南征北戰的三大開國元勳小a,小b,小c進殿,並要賞賜三人大量寶物以顯示天恩浩蕩。大g在征服其他國家的時候搶...

vue 使用技巧總結 19 01

上面的函式中使用箭頭,會導致 this 捕獲不到 vue 例項。各位道友切記切記.目前通常使用的方式是 然後在查資料的時候翻到了乙個統一管理的方式 asynccomponent.js 檔案 export const component01 import views export const comp...

UESTC 我要長高

題意是 就是題目描述的那樣了吧 題意很顯而易見,一眼dp題 dp i j 代表第i個人身高為j時的最小消耗,dp i j min dp i 1 k abs j k c j h i 2 複雜度o n h i 2 很明顯有點大,學習了一下單調佇列優化dp之後,發現形如dp i min max dp j ...