[BZOJ]1021 循环的债务
来源:互联网 发布:上淘宝网怎么注册 编辑:程序博客网 时间:2024/05/01 07:36
[BZOJ]1021
题意:
给出三个人之间的欠钱关系和他们各自持有的钱币种类和个数,求能不能各自把钱还清,如果不能输出”Impossible”,如果能输出最小的给钱张数。
题解:
Dp太神了!(弱菜自带遇Dp必跪flag)总之就是Dp。
可以按钱币种类划分阶段,那么方程可以为
初始值
代码
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define INF 33686018using namespace std;const int Maxn = 1010;int val[7] = {0,100,50,20,10,5,1},cnt[Maxn][Maxn],d[Maxn],e[Maxn],sum,a,b,c,dp[3][Maxn][Maxn];int main(){ scanf("%d%d%d",&a,&b,&c); for(int i = 1;i <= 3;i++){ for(int j = 1;j <= 6;j++){ scanf("%d",&cnt[i][j]); sum += cnt[i][j] * val[j];//统计总钱数 d[i] += cnt[i][j] * val[j];//统计第i个人的初始总钱数 e[j] += cnt[i][j];//统计第j种钱币的总钱数 } } int Ta = d[1] - a + c,Tb = d[2] - b + a; if(Ta < 0 || Tb < 0 || sum - Ta - Tb < 0){printf("impossible\n");return 0;} memset(dp[0],2,sizeof(dp[0]));int pre = 0,now = 0;dp[0][d[1]][d[2]] = 0; for(int i = 1;i <= 6;i++){ pre = now;now ^= 1;memset(dp[now],2,sizeof(dp[now])); for(int j = 0;j <= sum;j++){ for(int k = 0;j + k <= sum;k++){ if(dp[pre][j][k] == INF)continue; dp[now][j][k] = min(dp[now][j][k],dp[pre][j][k]);//相当于初值 for(int l = 0;l <= e[i];l++){ for(int o = 0;o + l <= e[i];o++){ int DeltaA = l - cnt[1][i],DeltaB = o - cnt[2][i]; int TCost1 = j + DeltaA * val[i],TCost2 = k + DeltaB * val[i]; if(TCost1 < 0 || TCost2 < 0 || sum - TCost1 - TCost2 < 0)continue; dp[now][TCost1][TCost2] = min(dp[now][TCost1][TCost2],dp[pre][j][k] + (abs(DeltaA) + abs(DeltaB) + abs(DeltaA + DeltaB)) / 2); } } } } } if(dp[now][Ta][Tb] == INF){printf("impossible\n");return 0;} else printf("%d\n",dp[now][Ta][Tb]); return 0;}
0 0
- [BZOJ]1021 循环的债务
- 【BZOJ 1021】 [SHOI2008]Debt 循环的债务
- 【dp】bzoj 1021 循环的债务
- 【BZOJ 1021】[SHOI2008]Debt 循环的债务
- 1021: [SHOI2008]Debt 循环的债务
- bzoj1021 循环的债务 dp + 暴力
- 债务的加入
- 债务的加入
- 乱搞 Evensgn 的债务
- 技术债务管理以及Firefox/Chromium的债务评价
- 技术债务(母鸡的遭遇)
- 技术债务真正的代价
- 技术债务真正的代价
- .技术债务真正的代价
- 技术债务(母鸡的遭遇)
- 技术债务(母鸡的遭遇)
- 老码农看到的技术债务
- 债务美元是怎样“炼成”的
- Java中的IO流系统详解
- 激发你创意的碎碎语公众平台应用。
- 摘要验证浅析
- 没做程序员,没做算法工程师,现在是一名审查员
- c++指针 引用 以及对象
- [BZOJ]1021 循环的债务
- 使用Glide框架时报出,java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity
- Java中移除list元素小结
- javaWEB总结(29):理解多个Filter代码的执行顺序
- Android Things:外设I/O接口-UART
- 状态模式(State)-七十二变
- leetcode33. Search in Rotated Sorted Array
- CentOS7.2升级安装PHP7
- 题目1040:Prime Number