90分,最后一个点TLE求救!!

P1190 [NOIP2010 普及组] 接水问题

@[Mr_耿](/space/show?uid=109642) 想法是对的,但是每个时间点每个时间点操作的话,一定是会超时的。 每次选m个大于0的减一操作的次数是选的m个中最小的那个的时间,实际上可以直接操作一次,直接用选的m个减去m个中最小的那个的时间。 我一朋友今晚做这题,代码几乎和你一样23333
by HoshiuZ @ 2019-11-03 23:44:34


@[Yuzuriha_Inori](/user/71936) 2333,因为不想思考太多,就打了一个纯模拟,知道问题在哪里了23333
by xiao_gy @ 2019-11-09 17:01:03


```cpp #include<bits/stdc++.h> using namespace std; int w[10005],sum[105]; int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>w[i]; } if(m>n) { int ans=0; for(int i=1;i<=n;i++) { ans=max(ans,w[i]); } cout<<ans<<endl; return 0; } for(int i=1;i<=n;i++) { int s=INT_MAX,k; for(int j=1;j<=m;j++) { if(sum[j]<s) { s=sum[j]; k=j; } } sum[k]+=w[i]; } int ans=0; for(int i=1;i<=m;i++) { ans=max(ans,sum[i]); } cout<<ans<<endl; return 0; } ```
by 陈斯齐 @ 2020-02-16 14:45:54


|