社区讨论
40tps,求调
P1833樱花参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhju24og
- 此快照首次捕获于
- 2025/11/04 08:30 4 个月前
- 此快照最后确认于
- 2025/11/04 08:30 4 个月前
40tps,求调
CPP#include<bits/stdc++.h>
using namespace std;
int n,h1,h2,m1,m2;
int v;
int w,c,a;
int dp[100001];
void ZeroOnePack(int c,int w){
for(int j=v;j>=c;j--){
dp[j]=max(dp[j],dp[j-c]+w);
}
return;
}
void CompletePack(int c,int w){
for(int j=c;j<=v;j++){
dp[j]=max(dp[j],dp[j-c]+w);
}
return;
}
void MultiplePack(int c,int w,int m){
if(c*m>=v||m==0){
CompletePack(c,w);
}else{
int k=1;
while(k<=m){
ZeroOnePack(c*k,w*k);
m-=k;
k*=2;
}
if(!m) ZeroOnePack(c*m,w*m);
}
}
int main(){
scanf("%d:%d %d:%d %d\n",&h1,&m1,&h2,&m2,&n);
v=h2*60+m2-h1*60-m1;
for(int i=1;i<=n;i++){
cin>>c>>w>>a;
if(a==0) CompletePack(c,w);
else if(a==1) ZeroOnePack(c, w);
else MultiplePack(c,w,a);
}
cout<<dp[v];
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...