IOI1999 花店橱窗布置
生活随笔
收集整理的這篇文章主要介紹了
IOI1999 花店橱窗布置
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Luogu
這可能是繼數(shù)字金字塔后IOI最水的一道題了。(然而我也就只能做這種水題
設(shè)\(dp[i,j]\)表示第\(i\)行選到第\(j\)個(gè)最優(yōu)解,狀態(tài)轉(zhuǎn)移方程很顯然,如下
\[dp[i,j]=\max_{i-1\le k<j}\{dp[i-1,k]+A[i,j]\}\]
其中\(A[i,j]\)表示的是第\(i\)束花插♂在第\(j\)個(gè)花盆中的美學(xué)值。
然后一個(gè)sb喜聞樂(lè)見(jiàn)的因?yàn)闆](méi)有發(fā)現(xiàn)有負(fù)權(quán)值而wa50了無(wú)數(shù)次
#include <bits/stdc++.h>const int max_n=1000+5; const int inf=0x3f3f3f3f;int N,M,Ans=-inf,Ansi; int A[max_n][max_n],dp[max_n][max_n],last[max_n][max_n];inline int read() {register int x=0,v=1;register char ch=getchar();while(!isdigit(ch)){if(ch=='-') v=-1;ch=getchar();}while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar(); }return x*v; }void out(int x,int y) {if(x!=1) out(x-1,last[x][y]);printf("%d ",y); }int main() {N=read(),M=read();for(int i=1;i<=N;++i)for(int j=1;j<=M;++j)A[i][j]=read();memset(dp,-inf,sizeof(dp));dp[0][0]=0;for(int i=1;i<=N;++i){for(int j=i;j<=M-N+i;++j){for(int k=i-1;k<j;++k){if(dp[i][j]<dp[i-1][k]+A[i][j]){dp[i][j]=dp[i-1][k]+A[i][j];last[i][j]=k;} }}}for(int i=N;i<=M;++i)if(Ans<dp[N][i]) Ans=dp[N][i],Ansi=i;printf("%d\n",Ans);out(N,Ansi);return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/zcdhj/p/8407378.html
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的IOI1999 花店橱窗布置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaScript动画:offset和
- 下一篇: Ocelot 集成Butterfly 实