UESTC 760は悪い子が制限されている最大の連続と


方は悪い子だ
Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit  Status
方方は1人のやんちゃな子供で、毎日あちこちで妹を破壊して、隣人はすべて彼を嫌っています.ある日方方方はうっかり隣の姚神の魔法の棒をn段に投げて、長さはそれぞれ
a 0,a 1,⋯,an−1である.方方はやんちゃだが、恐ろしい姚神を招く勇気がなく、魔棒を修復するのはこんなに難しく、もう一人の隣人のハリー・ポッターに魔法で魔棒を修復するように頼むしかない.
しかし、ハリー・ポッターはホグワーツの男女の割合を統計するのに忙しい.
ハリー波特大の魔法は奇妙で、魔法は連続した魔棒の断片をつなぐしかなく、接続された断片の長さの和はpの倍数でなければならない(例えばn=6、p=11、a 0
an−1がそれぞれ11,11,1,6,7,9になるまで、ハリー・ポッターはa 0とa 1をつなぐか、a 3,a 4,a 5をつなぐことができる)、姚神の魔棒が順番に受け取らなければならないことに注意しなければならない.つまり、
方方はa 0,a 1,⋯an−1の順序を勝手に変えることはできない.
できるだけ多くの魔法の棒の断片をつなぎ合わせたいと思っていますが、今あなたに手伝ってもらいたいです.
Input
第1行は、データ群数を表す正数T(T≦50)を含む.
次に、各グループのデータには2行が含まれます.
第1行は2つの整数n,p(1≦n≦100000,1≦p≦11)を含み、魔法棒にnセグメントがあることを表し、接続の長さの和はpの倍数でなければならない.
2行目は、a 0,a 1,⋯,an−1,(1≦ai≦1000,0≦iOutput
各セットのデータ出力1行について、最大接続可能な魔棒フラグメント数を表す.
Sample input and output
Sample Input
Sample Output
5
6 11
11 11 1 6 7 9
1 2
1
1 3
3
10 2
1 2 3 4 5 6 7 8 9 10
4 3
1 2 3 4
3
1
1
9
3

Hint
第2のグループの例では、実際には魔法は使えませんが、答えは1です.魔法を使わなくても、断片は1つずつですから.
My Solution
コントロールするものはたくさん使います.
上手に書けたと思いますが、☺☺
☺☺
☺☺.
最外部のループ制御は予想個数,中間制御開始座標を議論し,最奥は開始座標と予想個数で重畳する.
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

const int maxn=100000+5;
int a[maxn];
//           
int main()
{
    int T,n,p,sum,cotr;
    scanf("%d",&T);
    while(T--){
        cotr=-1;
        scanf("%d%d",&n,&p);
        memset(a,0,sizeof(a));//!       。。。。。。。          
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);   //       cstdio iostream    

        for(int i=n;i>0;i--){//!i   0 ,1         ,          
            for(int j=0;j<=(n-i);j++){
                sum=0;
                for(int k=j;(k-j+1)<=i;k++)  //k-j   
                    sum+=a[k];
                    //{cout<<a[k];sum+=a[k]; }  //!sum      ,      
                if(sum%p==0) {printf("%d
",i);cotr=1;break;} } if(cotr==1) {cotr=0;break;} //cotr=-1; } if(cotr==-1) printf("1
"); } return 0; }

ありがとう