摘要: 题目链接:http://codeforces.com/problemset/problem/337/D参考博客:http://www.cnblogs.com/chanme/p/3265913题目大意:给你一个n个点的无向树。任意两点的距离为中间经过的边数。现在某个点上有本魔法书,这本书对与这个点距离小于等于d的点有影响。给你收集到的m个受影响的点(信息不一定全对)。要你判断有多少个点可能放魔法书。算法思路:我参考别人的想法,自己开始怎么也想不出好的算法,n也太大。这题用树形dp,两遍dfs来统计出每一个点到所有这个m个受影响点的距离的最大值。只要这个最大值#include#include#in 阅读全文
posted @ 2013-09-20 21:35 等待最好的两个人 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/212/E题目大意:给你一个无向树,现在用两种颜色去给这颗树上的节点染色。用(a,b)表示两种颜色分别染的节点数。满足以下条件:1.任何一种颜色至少使用一次,即a>=1&&b>=1。2.两种颜色染的节点不能相邻,即不能有边的两端染不同色。要你使a+b值最大下输出不同的(a,b),按照a升序输出。算法思路:很容易得出一个结论:a+b的最大值就是取n-1,即只有一个点不染色。我们就想到树形dp。先dfs求出以每个节点为根的树的节点数。假如我们讨论以u为根的树的染色方案,我们就要知 阅读全文
posted @ 2013-09-20 16:59 等待最好的两个人 阅读(707) 评论(1) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1057题目大意:在二维矩阵中,给你一个起点和至多15个的目标点。要你求出从起点出发经过完所有的点后回到起点的最短路径值。每个点一步可以向 八个方向走。算法思路:一看就觉得是tsp,用状态压缩。而任意两点的距离就是相应横纵坐标差的较大值。具体看代码。代码:#include#include#include#includeusing namespace std;const int maxn = 1>T; for(int cas=1; cas>m>>n; char s 阅读全文
posted @ 2013-09-20 15:14 等待最好的两个人 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1051题目大意:给你一个字符串,只包含大写字母和‘?’,如果字符串中出现了连续三个以上的元音字母或者连续五个以上的辅音字母,则这个字符串是bad,不然就是good.‘?’号可以替换任意字母。替换以后如果既可以出现连续三个以上的元音字母或者连续五个以上的辅音字母,也可以不出现,则输出Mixed.算法思路(参考别人的):这个地方出现不含‘?’的连续三个以上的元音字母或者连续五个以上的辅音字母则为BAD, 如果含‘?’,则看替换后的情况。具体看代码。代码:#include#include. 阅读全文
posted @ 2013-09-20 13:55 等待最好的两个人 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738题目大意:给一些点,用一些边把这些点相连,每一条边上有一个权值。现在要你破坏任意一个边(要付出相应边权值的代价),使得至少有两个连通块。输出最小代价值。算法思路:这题坑多,要考虑仔细:1.图是边双连通图,就做不到删除一边得到两个连通块,这种情况输出-1. 2.图是连通但不边双联通,就用tarjan找出桥中权值最小的,这里有个巨坑,如果桥最小的权值为0,这时根据题意,要输出1而不是0(看看题就能理解)。3.图不是连通的,就不需要去删边,即直接输出0。4.还要注意,输入的边有可能出现重边,这个要. 阅读全文
posted @ 2013-09-20 12:24 等待最好的两个人 阅读(278) 评论(0) 推荐(0) 编辑