LightOJ 1037 Agent 47
2015-11-26 14:05
357 查看
状压dp
dp[s]:干掉s所对应敌人的最少开枪数
转移时枚举下一个目标
dp[s]:干掉s所对应敌人的最少开枪数
转移时枚举下一个目标
#include <cstdio> #include <cmath> #include <algorithm> using namespace std; int dp[1 << 15]; int n, hp[15], att[15][15]; int solve() { dp[0] = 0; for(int s = 1; s < (1 << n); s++) dp[s] = 1e9; for(int s = 0; s < (1 << n); s++) { int a[15]; for(int i = 0; i < n; i++) a[i] = 1; for(int i = 0; i < n; i++) if(s & (1 << i)) for(int j = 0; j < n; j++) a[j] = max(a[j], att[i][j]); for(int i = 0; i < n; i++) { int ns = s | (1 << i); if(ns != s) dp[ns] = min(dp[ns], dp[s] + (int)ceil(1.0 * hp[i] / a[i])); } } return dp[(1 << n) - 1]; } int main() { int T; scanf("%d", &T); for(int ca = 1; ca <= T; ca++) { scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &hp[i]); char s[18]; for(int i = 0; i < n; i++) { scanf("%s", s); for(int j = 0; j < n; j++) att[i][j] = s[j] - '0'; } printf("Case %d: %d\n", ca, solve()); } return 0; }
相关文章推荐
- 如何定义和调用扩展方法
- Spring 学习日记 (四) Spring 整合Mybaits 和 struts2 框架的配置文件
- 微软私有云SCCM2012 R2培训
- Android系统主题样式属性
- 三,位操作类指令:包括逻辑运算指令,测试指令和移位指令
- ZeroClipboard跨浏览器复制到剪切板
- div滚动条设置
- nodejs 导出csv
- ie的兼容方法,条件注释的方法
- 网页的缓存
- Swift 使用nib文件做iOS界面,在Ios界面跳转传递数据
- Jquery中request和request.form和request.querystring的区别
- android adb bundle下载
- LeetCode Shortest Word Distance
- js字符串主要操作方法
- 关于安卓学习的方法(简单补充)
- 使用c语言调用python小结
- centos6.5搭建docker私有库
- LeetCode代码迁移
- Hexagon SDK部分模块架构分析