HDU-4310 Hero 贪心Or动态规划
这题用贪心是很容易过的,直接先杀死对方单位时间输出较高的对象。
这题的动态规划解是将N个敌人压缩到一个int数里面,dp[j] 表示在剩余了j这个数里面所蕴含的敌人的情况下的最大扣血量。
dp方程为 dp[s] = min( dp[s - {bit}] + sumdps[s] * h[bit] ) 其中bit枚举每一位。
代码如下:
#include <cstdlib> #include <cstring> #include <cstdio> #include <algorithm> using namespace std;int dp[1200000], N, h[30], dps[30], c[1200000], sum[1200000];// dp[j] 代表剩余j数字所含二进制位的敌人所扣的最少血量void dfs(int x, int num, int step, int tot) {if (step == N) {c[x] = num;sum[x] = tot;return;}dfs(x<<1, num, step+1, tot);dfs(x<<1|1, num+1, step+1, tot+dps[N-step]); }void DP() {int lim = 1 << N;for (int i = N-1; i >= 0; --i) {for (int j = 0; j < lim-1; ++j) {if (c[j] == i) {for (int k = 0; k < N; ++k) { if (!(j & (1<<k))) {dp[j] = min(dp[j], dp[j|(1<<k)] + sum[j|(1<<k)] * h[k+1]);}} }}}printf("%d\n", dp[0]); }int main() {while (scanf("%d", &N) == 1) {memset(dp, 0x3f, sizeof (dp));for (int i = 1; i <= N; ++i) {scanf("%d %d", &dps[i], &h[i]);}dfs(0, 0, 0, 0);dp[(1<<N)-1] = 0;DP();}return 0; }
转载于:https://www.cnblogs.com/Lyush/archive/2012/07/27/2611040.html
HDU-4310 Hero 贪心Or动态规划相关推荐
- Dijkstra 贪心算法 动态规划
我认为 Dijkstra算法 的本质是 广度优先搜索, 而此处的广度是定义在路程的cost之上的. (就好比从圆心处向外扩散一个圆环,首次碰到的就是最近) 动态规划泛指,重叠子问题与原问题的推算关系( ...
- 分治、贪心、动态规划的简单理解
分治.贪心.动态规划都是要将问题划分为一个子问题,然后通过解决子问题进而求解最终问题 分治: 将问题分解为结构相似独立子问题,递归求解各个子问题,然后合并子问题的解来求解最终问题. 动态规划: 适用于 ...
- 数据结构与算法(二):排序(递归、回溯、数论、插入、希尔、归并、选择、冒泡、快排、贪心、动态规划)
算法排序:递归.回溯.数论.插入.希尔.归并.选择.冒泡.快排.贪心.动态规划 数论思想:利用数学公式或者定理或者规律求解问题: 算法思想中最难的点:递归+动态规划:树论:二叉树,红黑树 思考题: 微 ...
- DSt:数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构、数据运算【十大排序/四大查找-图三大搜索-树三大遍历】、高级算法【贪心/分治/动态规划】之详细攻略
DSt:数据结构的简介.最强学习路线(逻辑结构[数组-链表-栈和队列/树-图-哈希].物理结构[元素/关系].数据运算[十大排序/四大查找-图三大搜索-树三大遍历].高级算法[贪心/分治/动态规划]) ...
- HDU 4310 贪心算法 C++版
Problem - 4310 (dingbacode.com)https://acm.dingbacode.com/showproblem.php?pid=4310当然是先选择攻击值最高的打了,一开始 ...
- hdu 5248(二分+贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5248 解题思路:这道题我原本的思路是动态规划,结果看到数很大,结果放弃了.然后想到二分,思路是对的,只 ...
- hdu 5246(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5246 解题思路:先排序,在采用贪心的方法,先给百小度找到合适的初始战斗力,找到比初始战斗力上限小的中最 ...
- HDU1257 最少拦截系统 贪心或动态规划
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- hdu 4296 Buildings (贪心)
http://acm.hdu.edu.cn/showproblem.php?pid=4296 题意: 给出n个石板的重量w和它的承受能力s,将这n个石板累在一起,这样每个石板都有一个PDV = (Σw ...
最新文章
- C#中的委托,匿名方法和Lambda表达式
- 【杂谈】为什么有三AI自断财路,从来不接广告
- SpringBoot使用StringRedisTemplate操作Redis字符串
- PartnerSet in IBASE
- 了解SQL Server触发器及触发器中的事务
- android搜索文字变色_Android实现TextView字符串关键字变色的方法
- JS_typeof()函数返回类型总结
- 电子助力方向机控制模块_17款路虎揽胜:偶发性电子助力失效
- php 类自动执行,php类中的魔术方法及类的自动加载
- android中实现GPS定位功能,Android中实现GPS定位的简单例子
- 五种常用源代码开源协议
- 数字图像处理 冈萨雷斯(第四版)图像配准
- Word论文参考文献排版
- 35KV变电站及10KV供配电系统倒闸操作屏QY-PGD09
- python里创建数据库表Column常用参数总结
- 论文解读-通过建模时空动态生成活动轨迹
- 使用QT开发的简易音乐播放器
- 信息系统项目管理师必背核心考点(四十三)预期货币价值(EMV)
- 信号完整性分析-笔记
- 查看php安装路劲,如何查看php安装位置
热门文章
- luoguP1090 合并果子 (贪心+优先队列)
- Elasticsearch 2.3.0 重建索引
- 【工具】FormatUtil.ava 常用工具类
- ubuntu linux 使用常见问题
- CentOS 6.3下Apache+SVN部署Web版本同步
- Python——模拟轮盘抽奖游戏
- python socket send_全网最详细python中socket套接字send与sendall的区别
- Python接口自动化之数据驱动
- 报告:上周比特币基金流出9800万美元,ETH、ADA等投资需求上升
- 新泽西州男子因无牌运营比特币交易所或面临5年监禁