51nod1489回溯构造
来源:互联网 发布:js copy对象 编辑:程序博客网 时间:2024/06/04 14:59
#include<iostream>using namespace std;const int INF = 0x3f3f3f3f;int n, a, b;int turn(int D[15],int x){ if (D[x] >= 0) return (D[x] / b) + 1; else return 0;}int tans = INF;void fun(int DD[15],int id,int c){ if (id == n - 1) { tans = (tans < c) ? tans : c; } else { int x = DD[id]; if (x < 0) fun(DD, id + 1, c); else { int cnta = 0, cntb = (DD[id] / b) + 1; while (cntb>=0) { int DDx[15]; for (int i = 0; i < n; i++) { DDx[i] = DD[i]; } DDx[id] -= (cnta*a + cntb*b); DDx[id + 1] -= (cntb*a + cnta*b); DDx[id + 2] -= (cntb*b); fun(DDx, id + 1, c + cnta + cntb); cntb--; int t = DD[id] - cntb*b; cnta = 1 + (t / a); } } }}int main(){ cin >> n >> a >> b; int D[15]; for (int i = 0; i < n; i++) { cin >> D[i]; } int cnt1 = turn(D,0); D[0] -= cnt1*b; D[1] -= cnt1*a; D[2] -= cnt1*b; int cntn = turn(D,n - 1); D[n - 1] -= cntn*b; D[n - 2] -= cntn*a; D[n - 3] -= cntn*b; int ans = 0; ans += cnt1+cntn; fun(D, 1, 0); ans += tans; cout << ans << endl; return 0;}
//注意hp为0的时候还不算死亡
0 0
- 51nod1489回溯构造
- 51NOD1489搜索的错误
- POJ 2362 Square(DFS回溯构造)
- hdu 5355 Cake(构造+回溯)
- HDU 4536 XCOM Enemy Unknown(DFS+回溯构造)
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 使用 JavaScript 下载文件
- 图像定位(一)、坐标变换
- 占整个屏的设计,滑动
- Hungarian method (匈牙利算法)----解决指派问题(转)
- Node.js初体验(一)
- 51nod1489回溯构造
- Android混淆应注意的编码习惯
- Android书单
- 0314-form表单标签的使用
- 看懂RS232,RS485,TTL
- mysql的触发器
- spring依赖注入
- MySQl 获得表的下一个自增值
- Java创建线程的两种方式