@[yejuncenyyds](/user/1044914) 正常
by ryf20100124 @ 2023-09-02 10:50:15
@[ryf20100124](/user/761649) 啊这……
by yejuncenyyds @ 2023-09-02 10:51:12
@[yejuncenyyds](/user/1044914) 说明你写的有问题,看看题解思路吧,数据太水所以O2水过去了。
by 聊机 @ 2023-09-02 11:20:43
我记得我初学的时候把一道堆排的题,硬生生sort了n次然后开O2过了。
by 聊机 @ 2023-09-02 11:21:30
@[yejuncenyyds](/user/1044914) 看看我的提交记录:<https://www.luogu.com.cn/record/113577555>
```cpp
#include<bits/stdc++.h>
using namespace std;
int p[100010],q[100010],dp[1010];
int main(){
int s1,s2;scanf("%d:%d",&s1,&s2);
int t1,t2;scanf("%d:%d",&t1,&t2);
int n;scanf("%d",&n); int m=t1*60+t2-s1*60-s2;
int k=0; for(int i=1;i<=n;i++){
int u,v,cnt=1;scanf("%d%d",&u,&v);
int w;scanf("%d",&w); if(w==0) w=1000;
while(cnt<w) p[++k]=u*cnt,q[k]=v*cnt,w-=cnt,cnt<<=1;
if(w!=0) p[++k]=u*w,q[k]=v*w;
}
for(int i=1;i<=k;i++){
for(int j=m;j>=p[i];j--){
dp[j]=max(dp[j],dp[j-p[i]]+q[i]);
}
}
printf("%d",dp[m]); return 0;
}
```
没开 O2,没有卡常,最久测试点也才 159 ms,总用时也只有 310 ms。
by zhlzt @ 2023-09-02 11:22:47