LightOJ 1037 - Agent 47 (状压dp)
来源:互联网 发布:php获取访客唯一标识 编辑:程序博客网 时间:2024/05/19 16:36
题意:
给出n个目标,n<=15,再给出一个n∗n的矩阵,开始他对任何一个目标的伤害是1
等他杀死一个目标后,可以使用那个目标的武器来杀死其他目标,问杀死所有目标,最少需要射击多少次
分析:
直接状压dp[s]:=当前剩余敌人状态为s还需要射击多少次
直接n2暴力转移就好了,总复杂度O(n2∗2n),case不多可以接受
代码:
//// Created by TaoSama on 2015-11-13// Copyright (c) 2015 TaoSama. All rights reserved.////#pragma comment(linker, "/STACK:1024000000,1024000000")#include <algorithm>#include <cctype>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <map>#include <queue>#include <string>#include <set>#include <vector>using namespace std;#define pr(x) cout << #x << " = " << x << " "#define prln(x) cout << #x << " = " << x << endlconst int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;int n, a[15], dp[1 << 15];char b[15][15];int dfs(int s) { int& ret = dp[s]; if(!s) return 0; if(~ret) return ret; ret = INF; for(int i = 0; i < n; ++i) { if(s >> i & 1) { int maxv = 1; for(int j = 0; j < n; ++j) maxv = max(maxv, s >> j & 1 ? 0 : b[j][i] - '0'); ret = min(ret, dfs(s ^ (1 << i)) + (a[i] + maxv - 1) / maxv); } } return ret;}int main() {#ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);// freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);#endif ios_base::sync_with_stdio(0); int t; scanf("%d", &t); int kase = 0; while(t--) { scanf("%d", &n); for(int i = 0; i < n; ++i) scanf("%d", a + i); for(int i = 0; i < n; ++i) scanf("%s", b[i]); memset(dp, -1, sizeof dp); printf("Case %d: %d\n", ++kase, dfs((1 << n) - 1)); } return 0;}
0 0
- lightoj 1037 - Agent 47 (状压DP)
- LightOJ 1037 - Agent 47 (状压dp)
- LightOJ 1037 Agent 47(状压DP)
- Lightoj 1037 Agent 47(状压DP)
- LightOJ - 1037 Agent 47(状压DP)
- LightOJ 1037 - Agent 47(状压DP)
- lightoj 1037 - Agent 47 状压DP
- lightoj 1037 - Agent 47 【状压dp】
- LightOJ 1037 - Agent 47(dp)
- Lightoj 1037 - Agent 47 详解(状压DP)
- lightoj 1037 Agent-47(状态压缩dp~)
- lightoj 1037 Agent 47
- LightOJ 1037 Agent 47
- lightoj 1037 - Agent 47
- 1037 - Agent 47(状压DP)
- Light oj 1037 - Agent 47(状压dp)
- Light OJ 1037 Agent 47 (状压DP)
- Light OJ 1037 Agent 47 (状压DP)
- CI 文件上传 --文件上传目录
- SmartCai的OpenGL ES教程02-移动,比例,旋转
- 一致性哈希算法
- GitHub上史上最全的Android开源项目分类汇总(一)
- 开发中的问题:adb.exe' and can be executed
- LightOJ 1037 - Agent 47 (状压dp)
- jquery幻灯片更新版
- 欢迎使用CSDN-markdown编辑器
- 贪心算法之背包问题
- Linux中使用ptrace获取pthread线程的寄存器信息
- 自己动手 CentOS-6.5 安装Oracle11g R2
- webshell定时器与CAS单点冲突的奇葩问题
- Ckeditor在线文本编辑器
- 我们为什么要现在就开始写博客