what??!

P1833 樱花

@[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


|