AOJ 2607: Invest Master
久しぶりにPKUクオリティのオンラインジャッジ環境。(問題と呼べる条件を満たせない典型例)
1日ごとに全部売るのが最善であることが結構わかりにくい。
データが修正されたと書いてあるのに未だにデータに不備がある。AOJは機能もついているし何も損しないんだから最初から全部データ公開すべきだと思う。
結局データ作成者のコードを予測するだけの問題だった(ループの内外を逆にしたりtoの更新位置を変えたりすると明らかに不備っぽいケースで落ちる)。解法は結構よいだけにかなりもったいない。
#include<stdio.h> #include<algorithm> using namespace std; int dp[210000]; int d[11][11]; int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); for(int i=0;i<b;i++)for(int j=0;j<a;j++)scanf("%d",&d[i][j]); int now=c; for(int i=0;i<b-1;i++){ for(int j=0;j<210000;j++)dp[j]=-99999999; dp[0]=0; int to=now; for(int k=0;k<a;k++){ for(int j=0;j<=now;j++){ dp[j+d[i][k]]=max(dp[j+d[i][k]],dp[j]+d[i+1][k]); } } for(int j=0;j<=now;j++)to=max(to,dp[j]+now-j); now=to; } printf("%d\n",now); }