20260412-初级班-dp练习
已结束
IOI
开始于: 2026-4-12 8:00
4
小时
主持人:
37
dp练习
//dp[j] : 支付j元 有多少种方式
//答案: dp[w]
//转移方程
//初始化:
//dp[0]=1 dp[j]=0
// dp[j]+=dp[j-a[i]]
// dp[j]%=1000000007;
//2
for(int j=1;j<=w;j++){
for(int i=1;i<=n;i++){
if(a[i]<=j) dp[j]+=dp[j-a[i]];
}
}
//3
for(int i=1;i<=n;i++){
for(int j=1;j<=w;j++){
if(a[i]<=j) dp[j]+=dp[j-a[i]];
}
}
//定义 dp[i][j][k]:
//考虑了前i个物品,花费了j体积,花费了k的重量
// 的火力最大情况
//i -> T[i] V[i] G[i]
//转移方程
//O(n^3) 500x500x500 1e7
//dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-V[i]][k-G[i]]+T[i])
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=v;j++){
for(int k=1;k<=g;k++){
if(j-V[i]>=0&&k-G[i]>=0)//防止越界
dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-V[i]][k-G[i]]+T[i]);
}
}
}
for(int j=1;j<=v;j++){
for(int k=1;k>=g;k++){
ans=max(ans,dp[n][j][k]);
}
}
- 状态
- 已结束
- 规则
- IOI
- 题目
- 6
- 开始于
- 2026-4-12 8:00
- 结束于
- 2026-4-12 12:00
- 持续时间
- 4 小时
- 主持人
- 参赛人数
- 37