luogu上提交直接能过。但是一本通OJ上的评测把我hack了 90分

P1854 花店橱窗布置

``` #include<cstdio> #include<iostream> #define MAXN 110 #define INF 0x3f3f3f using namespace std; int f,v; int be[MAXN][MAXN]; int dp[MAXN][MAXN]; inline void show(int nowf,int nowv){//花 和 瓶 for(int i=nowv-1;i>=1;i--){ if(nowf==1) break; if(dp[nowf-1][i]==dp[nowf][nowv]-be[nowf][nowv]){ show(nowf-1,i); printf("%d ",i); return; } } } int main(){ scanf("%d%d",&f,&v); for(int i=1;i<=f;i++) for(int j=1;j<=v;j++) scanf("%d",&be[i][j]); for(int i=1;i<=v;i++) dp[1][i]=be[1][i]; for(int i=2;i<=f;i++) for(int j=1;j<=v;j++){ dp[i][j]=-INF; for(int k=1;k<j;k++) dp[i][j]=max(dp[i][j],dp[i-1][k]+be[i][j]); } int maxl=-INF; for(int i=v;i>=1;i--) maxl=max(maxl,dp[f][i]); printf("%d\n",maxl); for(int i=v;i>=1;i--) if(dp[f][i]==maxl){ show(f,i); printf("%d",i); break; } return 0; } ``` 这是我的代码。重点就是show函数(也就是输出函数
by Hinanawi_Feng @ 2018-09-03 20:47:08


|