最后一个点过不了,求助

P2938 [USACO09FEB] Stock Market G

建议去大牛分站交一遍,那里好像开o2优化,能过
by a155936453 @ 2017-08-15 16:10:47


#大牛分站优化
by __世界第一弱__ @ 2017-08-15 16:13:00


大牛的确过了。。
by Paperback_Writer @ 2017-08-15 16:17:02


对,大牛这边快很多
by 太阳之神2015 @ 2017-08-21 09:11:41


//02
by wangziyuan @ 2019-10-16 14:48:35


@[EricPaul](/user/27454) 试试过滤掉下跌的和一张都买不起的股票再DP?
by 035966_L3 @ 2021-08-10 01:18:16


@[EricPaul](/user/27454) ```cpp #include<bits/stdc++.h> using namespace std; int p[52][12]; int t[500012]; int y[52]; int x[52]; int bag(int n,int m) { memset(t,0,sizeof(t)); for(int i=0;i<=m;++i) for(int j=1;j<=n;++j) t[i+y[j]]=max(t[i+y[j]],t[i]+x[j]); int ans=0; for(int i=m>>1;i<=m;++i) ans=max(ans,t[i]); return ans; } int main() { int s,d,m,sum; scanf("%d %d %d",&s,&d,&m); for(int i=1;i<=s;++i) for(int j=1;j<=d;++j) scanf("%d",&p[i][j]); sum=m; for(int i=1;i<d;++i) { memset(y,0,sizeof(y)); memset(x,0,sizeof(x)); int bsc=0; for(int j=1;j<=s;++j) if(p[j][i+1]>p[j][i]&&p[j][i]<=sum) bsc++,y[bsc]=p[j][i],x[bsc]=p[j][i+1]-p[j][i]; sum+=bag(bsc,sum); } printf("%d",sum); return 0; } ```
by 035966_L3 @ 2021-08-10 01:19:29


|