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 · 1104 阅读 · 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 评论
分享