博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lightoj 1037 - Agent 47(状压dp)
阅读量:5126 次
发布时间:2019-06-13

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

题目链接:

 

1 #include 
2 #include
3 #include
4 #define inf 0X3f3f3f3f 5 using namespace std; 6 int dp[1 << 16] , hp[20]; 7 char dam[20][20]; 8 int main() { 9 int t , ans = 0;10 scanf("%d" , &t);11 while(t--) {12 int n;13 scanf("%d" , &n);14 for(int i = 0 ; i < n ; i++) scanf("%d" , &hp[i]);15 for(int i = 0 ; i < n ; i++) {16 scanf("%s" , dam[i]);17 }18 memset(dp , inf , sizeof(dp));19 dp[0] = 0;20 for(int i = 0 ; i < (1 << n) ; i++) {21 for(int j = 0 ; j < n ; j++) {22 if(i & (1 << j)) continue;23 else {24 dp[i | (1 << j)] = min(dp[i | (1 << j)] , dp[i] + hp[j]);25 for(int k = 0 ; k < n ; k++) {26 if(i & (1 << k)) {27 int tm = 1;28 if(dam[k][j] - '0') tm = dam[k][j] - '0';29 dp[i | (1 << j)] = min(dp[i | (1 << j)] , dp[i] + hp[j] / tm + (hp[j] % tm == 0 ? 0 : 1));30 }31 }32 }33 }34 }35 printf("Case %d: %d\n" , ++ans , dp[(1 << n) - 1]);36 }37 return 0;38 }

 

题解:简单的状压dp存一下被kill的人的状态就行。

转载于:https://www.cnblogs.com/TnT2333333/p/7119611.html

你可能感兴趣的文章
MyBaits动态sql语句
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JAVA开发环境搭建
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
SDN第四次作业
查看>>
django迁移数据库错误
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
距离公式汇总以及Python实现
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>