連続最大積hdu 4567
れんぞくさいだいせき
時間制限:1000 ms
メモリ制限:32768 KB
HDU ID: 4561
64ビット整数:Javaクラス名:
前の問題
実行結果統計ディスカッションの発行
次の問題
タイトルの説明
小明と彼の良い友达の小西は1つのゲームを游んで、コンピュータからランダムに1つの-2,0,2の3つの数からなる配列を生成して、しかも约束して、谁が先にこの配列の中である1段の连続要素の积み重ねの最大値を算出して、たとえ谁が胜っても!
たとえば、次のランダム配列があります.
2 2 0 -2 0 2 2 -2 -2 0
この配列の多くの連続サブシーケンスの中で,2 2−2−2という連続サブシーケンスの積が最大であった.
今、明ちゃんはこの最大値を算出してください.
入力
1行目には、T組のデータが合計であることを示す正の整数Tが入力される(T<=200).
次のT組のデータは、各組のデータの最初の行にNを入力し、配列の要素の総個数(1<=N<=10000)を表す.
次に0,−2,2からなるN個の要素を入力し,要素間をスペースで区切る.
しゅつりょく
データのセットごとにCase数を出力します.
最終的な答えが0以下の場合は、0を直接出力します.
そうでなければ答えが2^xであればxを出力すればよい.
各グループのデータは1行を占め、具体的な出力フォーマットはサンプルを参照してください.
サンプル入力
サンプル出力
ソース
2013金山西山居クリエイティブゲームプログラム挑戦試合-再試合(2)
前の問題
実行結果統計ディスカッションの発行
次の問題
管理人QQ 153295823
考え方:この問題を見たばかりでdpだと思っていましたが、どうしても間違っていました.私が使っている方法は、
コミットを開始すると、過ぎてしまいますが、その後、コミット、タイムアウト、同じコード、知らない
バックグラウンドのデータに問題が発生したかどうか、インターネットで調べてみると、一つの考えが特別だ.
良いコード、参考にして(思想も特に簡単です)私のコードも貼り付けます
さあ、大神さん、ちょっと教えてください.
いくつかのグループのデータを考えて、みんなはテストして、結果を比較して、コードを探して
の誤り.
3
2 -2 2
3
-2 2 2
6
2 -2 2 -2 2 -2
6
-2 2 -2 2 -2 2
大神の:
時間制限:1000 ms
メモリ制限:32768 KB
HDU ID: 4561
64ビット整数:Javaクラス名:
前の問題
実行結果統計ディスカッションの発行
次の問題
タイトルの説明
小明と彼の良い友达の小西は1つのゲームを游んで、コンピュータからランダムに1つの-2,0,2の3つの数からなる配列を生成して、しかも约束して、谁が先にこの配列の中である1段の连続要素の积み重ねの最大値を算出して、たとえ谁が胜っても!
たとえば、次のランダム配列があります.
2 2 0 -2 0 2 2 -2 -2 0
この配列の多くの連続サブシーケンスの中で,2 2−2−2という連続サブシーケンスの積が最大であった.
今、明ちゃんはこの最大値を算出してください.
入力
1行目には、T組のデータが合計であることを示す正の整数Tが入力される(T<=200).
次のT組のデータは、各組のデータの最初の行にNを入力し、配列の要素の総個数(1<=N<=10000)を表す.
次に0,−2,2からなるN個の要素を入力し,要素間をスペースで区切る.
しゅつりょく
データのセットごとにCase数を出力します.
最終的な答えが0以下の場合は、0を直接出力します.
そうでなければ答えが2^xであればxを出力すればよい.
各グループのデータは1行を占め、具体的な出力フォーマットはサンプルを参照してください.
サンプル入力
2
2
-2 0
10
2 2 0 -2 0 2 2 -2 -2 0
サンプル出力
Case #1: 0
Case #2: 4
ソース
2013金山西山居クリエイティブゲームプログラム挑戦試合-再試合(2)
前の問題
実行結果統計ディスカッションの発行
次の問題
管理人QQ 153295823
考え方:この問題を見たばかりでdpだと思っていましたが、どうしても間違っていました.私が使っている方法は、
コミットを開始すると、過ぎてしまいますが、その後、コミット、タイムアウト、同じコード、知らない
バックグラウンドのデータに問題が発生したかどうか、インターネットで調べてみると、一つの考えが特別だ.
良いコード、参考にして(思想も特に簡単です)私のコードも貼り付けます
さあ、大神さん、ちょっと教えてください.
いくつかのグループのデータを考えて、みんなはテストして、結果を比較して、コードを探して
の誤り.
3
2 -2 2
3
-2 2 2
6
2 -2 2 -2 2 -2
6
-2 2 -2 2 -2 2
大神の:
#include
int main()
{
int T,n,a[10010],i,j,k,sum,MAX,flag;
scanf("%d",&T);
k=1;
while(T--)
{
scanf("%d",&n);
for (i=0; i0)
{
if (sum<0)
{
sum=sum-1;
}
else
sum=sum+1;
}
else if (a[i]<0)
{
if (sum<0)
{
sum=-sum+1;
}
else
sum=-sum-1;
}
else
sum=0;
if (sum>MAX)
{
MAX=sum;
}
}
sum=0;
for (i=n-1; i>=0; i--)
{
if (a[i]>0)
{
if (sum<0)
{
sum=sum-1;
}
else
sum=sum+1;
}
else if (a[i]<0)
{
if (sum<0)
{
sum=-sum+1;
}
else
sum=-sum-1;
}
else
sum=0;
if (sum>MAX)
{
MAX=sum;
}
}
printf("Case #%d: %d
",k++,MAX);
}
return 0;
}
:
#include
#include
int a[10000+1];
int main()
{
int t,n,h=0;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int m,term=0,k=0,max=0,s=0;
for(int i=0; imax)
max=term;
if(term>max&&k==0)
max=term;
if(k%2&&s>max)
max=s;
}
}
printf("Case #%d: %d
",++h,max);
}
return 0;
}
:
#include
#include
int a[10000+1];
int main()
{
int t,n,h=0;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int m,term=0,k=0,max=0,s=0;
for(int i=0; imax)
max=term;
if(k%2&&s>max)
max=s;
}
term=0; k=0; s=0;
for(int i=n-1; i>=0; i--)
{
if(a[i]==0)
{
term=0;
k=0;
s=0;
continue;
}
if(a[i]==-2)
{
k++;
s=0;
}
else s++;
term++;
if(k%2==0&&term>max)
max=term;
if(k%2&&s>max)
max=s;
}
printf("Case #%d: %d
",++h,max);
}
return 0;
}