博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-4310 Hero 贪心Or动态规划
阅读量:6852 次
发布时间:2019-06-26

本文共 888 字,大约阅读时间需要 2 分钟。

这题用贪心是很容易过的,直接先杀死对方单位时间输出较高的对象。

这题的动态规划解是将N个敌人压缩到一个int数里面,dp[j] 表示在剩余了j这个数里面所蕴含的敌人的情况下的最大扣血量。

dp方程为 dp[s] = min( dp[s - {bit}] + sumdps[s] * h[bit] ) 其中bit枚举每一位。

代码如下:

#include 
#include
#include
#include
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<

转载于:https://www.cnblogs.com/Lyush/archive/2012/07/27/2611040.html

你可能感兴趣的文章
(转)java 中变量存储位置总结
查看>>
系统架构介绍
查看>>
oracle唯一约束
查看>>
C++获取类成员函数地址
查看>>
【MOOC手写体】王文敏教授.《人工智能原理》 第10章 机器学习的任务 Part5 C10.2 Classification 分类...
查看>>
Plot transpant lines in Matleb 在Matlab中绘制透明线条
查看>>
MsChart<1> 线性图
查看>>
C# 调试之 Debug.WriteLine()、Trace.WriteLine()
查看>>
META Header实例讲解(转)
查看>>
自动备份5天前的日志
查看>>
一个小方法解决RGBA不兼容IE8
查看>>
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
查看>>
Linux基础-优良文本处理工具awk
查看>>
DIV 全屏遮罩
查看>>
nexus 开机自启动
查看>>
Median of Two Sorted Arrays
查看>>
Go中链路层套接字的实践
查看>>
linux驱动的异步通知(kill_fasync,fasync)---- 驱动程序向应用程序发送信号
查看>>
安装Pycharm
查看>>
Laravel 4 Blade模板引擎
查看>>