关于超时

P2938 [USACO09FEB] Stock Market G

您这常数也太神仙了吧
by FerventTemp0 @ 2020-07-28 11:17:54


@[xiexiaobin](/user/279777) ~~因为您其他地方耗时太多了,导致读入时间要非常短~~
by KokiNiwa @ 2020-07-28 15:49:57


@[YouthRhythms](/user/75715) 哦,谢谢了。
by Lucky_Star @ 2020-07-28 16:06:54


@[xiexiaobin](/user/279777) ~~其实我觉得我的上一句话没有什么营养。。。~~
by KokiNiwa @ 2020-07-28 16:19:01


@[YouthRhythms](/user/75715) 我主要是想确定一个优化方向。
by Lucky_Star @ 2020-07-28 16:30:44


@[HansBrent](/user/279777) 试试过滤掉下跌的和一张都买不起的股票再DP?
by 035966_L3 @ 2021-08-09 13:52:01


```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-09 13:54:14


|