- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 Codeforces Round #202 (Div. 2) (A、B、C、D)
这场比赛发挥的不太好吧,当时只做了两题,第三题当时已经想到正解了,但不知发什么神经去想别的解法了。。。果然晚上的状态不好啊。 A. Cinema Line 非常水……一队人排队买票,每个人只有25、50和100的面值的钱,问买票的人最开始手里没有钱,能否给每个买票的人找钱。直接模拟即可~ 代码: #include#include#include#inclu
2013-09-29 16:38:44 1373
原创 hdu 4582 DFS spanning tree
题意:给出一棵dfs生成树,让你选一些树上的边,使得所有T-Simple Circles至少包含一条你选的边。思路:由于给出的是dfs生成树,所以这里是没有横叉边的,直觉告诉我们选择的边应该在树上尽量“高”,对于生出树上的边(u,v),可以考虑这条边是否必须被选择,如果必须被选,那么就选择它,并把v的子树上的点都标记掉,这些点的反向边都包含(u,v)了。 一条边是否必须
2013-09-27 09:40:50 888
原创 hdu 3534 Tree
题意:给出一棵树,求最长路的个数。思路:最开始的时候想用树形dp,但是没什么好想法,然后突然想到可以用点分治去做,写完点分治以后又想了想树形dp,发现树形dp更好写,下面说一下树形dp的思路吧,点分治可以参考漆子超的论文《分治算法在树的路径问题中的应用》。假设
2013-09-26 18:11:16 821
原创 hdu 4756 & hdu 4126 & hdu 4081
hdu 4756是南京网赛的题,这题和2011年福州现场赛的一道题,也就是hdu4126很像,比赛前十几天明明做过的说,结果比赛的时候没看到这题,唉。今天一不小心又翻到了一个和这两题也很像的题——hdu 4081,还是2011北京现场赛的题,晕了,既然这样就直接都放在一起算了。 这三个题思路都差不多,问题都是先要求一个最小生成树,然后删掉一条边,询问剩下的最小生成树的情况(
2013-09-24 18:23:49 1208
原创 hdu 4753 Fishhead’s Little Game
这题思路很快就想出来了,但是怎么去写却想了一上午,好囧……其实还算比较简单的状压dp+博弈吧,但是状态有些不好弄,因为最开始已经下了一些了,怎么去枚举剩下的状态,还有如何判断这个状态是否能得分呢?我的思路是把每条边按顺序编号,然后记录每条边是横边还是竖边,根据它们的关系,判断在一个状态下添加一条边是否可以得分其实还是比较简单的,只要算出与其相邻的边判断是否存在就行了。然后是状态,我的想法是把已经添
2013-09-23 19:04:36 600
原创 hdu 4738 Caocao's Bridges
题意:给出一个无向图,让你去掉一条边,令这个图不连通,并且令花费最小,去掉一条边的花费必须大于等于这条边的权值。思路:比较简单的一个求桥的问题吧。但是有两个trick,第一个是如果这个图不连通,那么花费为0,另一个是,如果有一个桥是0,那么结果是1,因为至少要排一个人带炸弹。代码:#include#include#include#include#include#i
2013-09-16 18:40:59 673
原创 hdu 4747 Mex
题意:给出n个数,mex(L,R)定义为区间[L,R]中没有出现的最小负数,求sum{mex(i,j)}。思路:虽然数列的数的范围很大,最大有10^9,但是仔细想一下就会发现超过n的数其实是没有用的,因为一定有一个数是小于n的,因此直接把大于n的数变成n+1就行了。关于mex的计算方法,假如对于i已经算出了所有的mex(i,j){i代码:#include#include
2013-09-16 18:16:39 1486
原创 hdu 4725 The Shortest Path in Nya Graph
题意:给出一个图,求从1到n的最短路,另外,每个结点属于一个层,层数相差为1的两个结点可以相互传送,距离固定为c。思路:基本算法就是最短路,不管是dijkstra或者spfa都行吧, 我用的是djkstra……主要问题就是构图,当时做热身赛的时候死活没想出来,我果然还是嫩了么。。。后来洗衣服的时候突然想到一个自以为不错的构图思路,赶紧跑回去写……当时想到的思路是这样的:在相隔为1的两个层之间设
2013-09-11 22:57:07 1026 3
原创 hdu 3660 Alice and Bob's Trip
题意:alice和bob轮流在一棵树上(有向)选道路走,alice会尽量让总路程短,bob会尽量让总路程长,但是他们俩都要保证总路程要在[L,R]的区间内,bob先走,问bob能走的最远距离。思路:一道明显的树形dp吧……dfs的时候,标记一下当前是谁在走,如果是alice,那么就要选可走的子树中能让路程最小的,如果是bob,那么就要选可走的子树中能让路程最大的,如果没有可走的子树,并且当前节
2013-09-10 09:01:34 1148
原创 LA 3530 Martian Mining
题意:给出一个n×m的网格,每个格子都有两种矿,A矿只能由右向左运,B矿只能由下向上运,管子不能拐弯或折断,要求收集到的A、B矿的总量最大。思路:每个网格中的矿要么向左运,要么向右运,用dp[i][j][k]代表在位置(i,j)中能获得的数量最多的矿,k==0表示位置(i,j)的矿向左运所能获得的矿的最大的数量,k==1表示向右运所能获得的矿的最大的数量。然后dp下就行了……状态转移方程说起来
2013-09-06 19:44:36 956
原创 hdu 4008 Parent and son
题意:给出一棵树,有q次询问,每次询问给出x,y,问若以x为root,那么y的儿子和后代的最小编号。思路:树形dp。选任意一点为root,先一遍dfs算出某一节点的儿子和后代中最小的编号,第二遍dfs计算出该结点非后代中最小编号。对于任意一对x,y,有以下三种情况(这里仅以后代最小编号为例讨论,儿子的情况与其相同): ①x==y,这种情况只要返回后代最小编号和非后
2013-09-06 11:53:55 1319
原创 UVA 11795 Mega Man's Mission
题意:最开始有一些武器,要消灭掉n个机器人,干掉一个机器人以后可以获得它的武器,每一个武器能消灭的机器人也不同,问有多少方案干掉所有的机器人。思路:很明显的状压dp……用一个二进制数表示已经干掉的机器人,equip[state]代表在该状态下获取的武器能干掉的机器人。那么状态如何转移呢?对于一个状态state来说,假如这个状态干掉了k个机器人,那么它就可以从干掉k-1个机器人的状态转移过来(注
2013-09-03 19:33:27 865
原创 UVA 11552 Fewest Flops
题意:给出一个字符串s和一个整数k,s的长度是k的整数倍,把字符串从左到右每k个字符划分成一段,每一段的字符可以随意交换,最后再把这些段按原来的顺序拼接起来,要求排序后的字符串包含的块最少,块代表连续相同的字母。思路:用dp[i][j]代表第i段以字母j结尾的最少的块的个数。确定j以后枚举第i段开头的字母k,如果和第i-1段的结尾字母不同,则dp[i][j]=min(dp[i-1][k]+cn
2013-09-01 14:06:37 903
原创 LA 4256 Salesmen
题意:给出n个点的无向图,再给出一个序列,尽量修改少的数,令序列中任意相邻的两个数相同或者是图中的两个相邻结点。思路:用dp[i][j]表示将第i个数字改成j,前i个序列所需要的最少修改次数。那么很容易得到状态转移方程:dp[i][j]=min(dp[i][j],dp[i-1][k]+(j==num[i]?:0:1))。其中dp[i-1][k]代表将第i-1个数修改成k所需要的最少修改次数,要
2013-09-01 07:50:07 1444
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人