
uva
TIMELIMITE
Time is not enough. I must hurry up !
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
uva 11795 Mega Man's Mission 状压dp
// uva 11795 Mega Man's Mission 状压dp// 设r[i]表示第i个机器人所拥有的武器的数目// r[0]表示初始时洛克人所拥有的武器数// w[s]表示杀死集合s中的机器人后所得的武器数// d[s]表示能杀死集合s中的机器人的顺序总数// d[s] = sigma(d[s-{i}]) 其中i是集合s中的机器人// 还有一点就是w[S-{i}]的武器可原创 2015-06-18 15:53:04 · 747 阅读 · 0 评论 -
uva 1627 Team them up! 二分图 + 连通分量 + 背包
// uva 1627 Team them up! 二分图 + 连通分量 + 背包//// 解题思路:// // 同组之内每个人相互认识,如果a和b不相互认识,则// a和b只能分在两个不同的组.所以以不相互认识作为边// 建图,对于每个联通块判断是否是二分图.如果不是,没有// 方案,如果有,那么进行背包.// d[i][j]表示前i个连通块第一个队伍人数比第二个// 队原创 2015-09-17 15:42:31 · 722 阅读 · 0 评论 -
uva 10618 Tango Tango Insurrection 动态规划
// uva 10618 Tango Tango Insurrection 动态规划//// 解题思路:// // 这是看的条件最多的一个动态规划了.看了很久很久,虽然// 状态很好理解,但是限制特别多.// d[i][a][b][s]表示到达第i个指示灯的时候,左脚在a,右脚// 在b,上一次移动的脚为s(没有移动0,左脚1,右脚2)所需的最小花// 费.并将四个方向分别编原创 2015-09-16 17:51:13 · 1105 阅读 · 0 评论 -
uva 10817 Headmaster's Headache 状压dp
// uva 10817 Headmaster's Headache 状压dp//// 解题思路://// 因为数据范围很小,所以想到状压dp。// // dp(i,s1,s2) 表示到前i个人,已经一门课只有一个老师教的集合// 为s1,一门课有两个老师教的集合为s2.则状态转移为//// dp(i,s1,s2) = min(dp(i+1,s1,s2),dp(i+1,原创 2015-09-14 21:32:31 · 533 阅读 · 0 评论 -
uva1252 Twenty Questions 状压dp
// uva1252 Twenty Questions 状压dp//// 解题思路:// // 状压dp.//// dp[s,a]表示已经问的特征的集合为s,想象中物品的集合为a最少还要问// 多少次.则状态转移为// dp[s,a] = min(dp[s,a],max(dp[s+(k),a],dp[s+(k),a+(k)])+1);// 我们已经知道已询问的特征集为原创 2015-09-15 17:40:09 · 483 阅读 · 0 评论 -
uva 12186 Another Crisis 树形dp
// uva 12186 Another Crisis 树形dp//// 对于一个节点u,有k个子节点,则至少有c = (k * T - 1) / 100 + 1才能// 发信,即c / k >= T / 100,则 c 的值为 k * T /100,上取整变成上式// 将所有的子节点d从小到大排序,取前c个就是d[u]的值// 紫书上的一题,之前看了好久好久,觉得挺好的,然而一直原创 2015-08-05 20:45:29 · 704 阅读 · 0 评论 -
uva 11538 Chess Queen
// uva 11538 Chess Queen//// 题目大意://// 在 n * m 的棋盘中,放两个皇后,一个黑的,一个白的// 求能让两个皇后相互攻击的放法,有多少种//// 解题思路://// 皇后攻击的方式只有在同一行,同一列,或者同一对角线// 上,分类讨论://// 1): 同一行,则白的放法有 n * m 种,黑的放法有m-1种//// 2原创 2015-08-05 13:20:12 · 602 阅读 · 0 评论 -
uva 624 CD 01背包打印路径
// 集训终于开始了,来到水题先#include #include #include #include using namespace std;int a[23];int d[23][100000];int flag[23];int W,n;void init(){ cin >> n; for (int i=1;i<=n;i++) cin >原创 2015-07-22 11:30:53 · 946 阅读 · 0 评论 -
uva 11361 Investigating Div-Sum Property 数位dp
// uva 11361 Investigating Div-Sum Property 数位dp//// 题目大意:// // 给你一个整数a和一个整数b,问在[a,b]范围内,有多少个自身被k整除并且// 各位数之和也能被k整除.比如k = 7 ,322满足条件,因为332能被整除7,并// 3 + 2 + 2 = 7 也能被7整除//// 解题思路://// 求原创 2015-08-09 21:48:08 · 958 阅读 · 0 评论 -
uva 10534 Wavio Sequence LIS
// uva 10534 Wavio Sequence// // 可以将题目转化为经典的LIS。// 从左往右LIS记作d[i],从右往左LIS记作p[i];// 则最后其中的min(d[i],p[i])就是这个波动序列的一半// 在这最后的min(d[i],p[i]) * 2 + 1 的最大值就是我们所要求的答案//// 这题开始想的最后的答案是d[i]==p[i]的时候求最大。原创 2015-06-11 13:39:45 · 641 阅读 · 0 评论 -
uva 11825 ,Hacker's Crackdown 状态压缩 dp
// uva 11825 Hacker's Crackdown//// 题目意思看了很久才看懂,有n台计算机,有n种服务,每台计算机上运行所有// 的服务,并且其中有的计算机与某些计算机相互邻接,对于每台计算机,// 你可以选择一项服务,停止这项服务,则与它邻接的计算机的该服务也停止了// 你的目的是让经量多的服务完全瘫痪//// 换而言之,这个问题就是在n个集合中(p[1]....原创 2015-05-26 12:01:56 · 899 阅读 · 0 评论 -
uva 11552 Fewest Flops 线性dp
// uva 11552 Fewest Flops//// 二维线性dp//// 首先,块内肯定是相同的字母放在一起,先记录下每个块内有多少种字母// 记作counts[i];// // 令f[i][j]表示前i个块以字母j为结尾的最小分块数//// 如果第i块的开始字母与第i-1块的结束字母相同// f[i][j] = min(f[i][j],f[i-1][k] + coun原创 2015-06-11 21:56:10 · 714 阅读 · 0 评论 -
uva 11584 Partitioning by Palindromes 线性dp
// uva 11584 Partitioning by Palindromes 线性dp//// 题目意思是将一个字符串划分成尽量少的回文串//// f[i]表示前i个字符能化成最少的回文串的数目//// f[i] = min(f[i],f[j-1] + 1(j到i是回文串))//// 这道题还是挺简单的,继续练#include #include #include #i原创 2015-06-03 21:26:01 · 800 阅读 · 0 评论 -
uva 1218 Perfect Service 树形dp
// uva 1218 Perfect Service 树形dp//// 解题思路:// // d[u][0]表示节点本身是服务器// d[u][1]表示节点的父节点是服务器// d[u][2]表示节点的孩子是服务器// d[u][0] = sigma(d[v][0],d[v][1]); // 自己是服务器,那么孩子可以是服务器// // 也可以不是原创 2015-11-02 18:26:55 · 585 阅读 · 0 评论