自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 2014年山东ACM省赛总结

A题:题意:给你一个平面图,给出图中抛物线起始点的

2014-07-30 13:12:02 953

原创 poj 1741 Tree (点的分治)

题意:给你一棵树,问在树上有多少点对之间的最短距离小于等于K,且(a,b)和(b,a)算一个思路:这题可以用点的分治来做,选取点为这棵树的重心,即最大子树最小的点。然后可以分两种情况进行处理,过这一点与不过这一点,而不过这一点就递归处理它的子树即可。在统计的时候要注意,先算出到根节点的距离,然后排序,存入一个队列当中,统计时则可以根据头尾两个数相加来决定中间数的大小,因而 可以进行快速的统

2013-11-14 21:51:48 532

原创 poj 1655 Balancing Act(树形DP)

题意:求树上的一个点,删除该点后形成的众多树中,最大的树的大小最小。换句话说就是求树的重心。思路:DP+DFS定义状态:dp[a]表示 以a 为根节点的子树大小然后一遍DPS,每次判断a的子树的各个dp值和n-dp[a]的值中的最大值,答案存最小的那个即可。因为存的是无向图,忘记边数乘2了,WA了两次。#include #include #include #include

2013-11-12 21:43:52 938

原创 poj 1390 Blocks(DP)

题意:有n个方块排成一列,对于每个方块都有一种颜色。现在有一种消除规则,就是对于连续颜色相同的一行可以消去,且消去后右边的方块左移,并且效益为个数的平方。现在问你通过怎么的消除方式,可以使效益最大。思路:  定义状态dp[a][b][c] 从第a个到第b个方块且第b个方块后连着c个与b相同颜色的方块最大的效益。    状态转移:    有两种决策:1)直接消除。     dp[a]

2013-11-07 22:24:50 584

原创 poj 1191 棋盘分割(DP)

题意:题目很简单,中文题。就是一个棋盘,现在要按一定要求切割n-1次,形成n个矩形,问形成的n个矩形的总分均方差最小。思路:黑书上的一道题,首先先对均方差进行化简没发现只要使矩形的总分平方和最小即可。状态:dp[a][b][c][d][e] 表示的是对左上角为(a,b)坐标,右下角为(c,d)坐标的矩形切割a次后,形成的a+1个矩形的最小总分平方和。则根据对于一个矩形而言,可以横切,也

2013-11-07 20:58:59 777

原创 poj 1141 Brackets Sequence (DP+构造)

题意:给你一个含有中括号和小括号的序列,让你使用最少的括号,使这个括号序列合法。思路:定义状态:dp[a][b]表示a-b区间中使其合法最少使用的括号数。初始化时: dp[x][x]=1; 状态转移:if(最外层的两个点a,b为一个完整的括号对)    dp[a][b]=dp[a-1][b+1];    dp[a][b]=min(dp[a][b],dp[a][k],dp[k+1][b]

2013-11-06 10:45:34 480

原创 hdu 4750 Count The Pairs(2013南京网络赛C题,并查集)

题意:有 n个点,m条边,现在定义f为任意两点间的每条路径上的最大边的最小值,给你一个t,问你f>=t的点对有多少个。思路:像kruskal加边那样,从小往大加边,用并查集来维护点集合。说明:1、对于一条边来说,且他的两个端点a,b不在一个集合里,那么以它为最大边的点对数为sum[a]*sum[b]*2,其中sum[x]为以x 为代表元的集合元素个数。2、对于询问二分查找即可。3、

2013-10-29 00:05:03 982 1

原创 hdu 4751 Divide Groups(2013南京网络赛D题,黑白染色)

题意:一个人举办一个patty,他想把n个人分成两拨,且对于每拨来讲,所有人都互相熟识。现在给你每个人的认识关系,问你能否分成。思路:黑白染色,判断是否为二分图。对于每个熟识关系而言,他们之间不连边,而将那些不认识的人连边,这样建出一个反图。然后bfs即可。注意:1)给的关系是单向的,也就是说第i个认识谁,而不是互相认识,所以为有向边,但是最后如果不是双向边的话,那么就将两人改为互相不认识

2013-10-28 20:43:29 921

原创 hdu 4735 Little Wish~ lyrical step~ (2013成都网络赛H题)(重复覆盖)

题意:有一个棵树,上面有n个结点。每个节点有住着一个孩子,男生或者女生,如果女生在一个D的范围内有男生则说明被保护,问你最少交换几个孩子的位置,使得所有女生都受保护,如果无法达成,输出-1。思路:这道题目可以转化为重复覆盖的模型,男生结点为1,女生结点为0,则行为这个结点如果为1的话,可以那几个结点的人,包括自己,列为n个人,则可以使用DLX来解决。因为只有50个点,所以树上最短距可以用flo

2013-10-28 18:34:38 1556

原创 hdu 2295 Radar(重复覆盖,二分+DLX)

题意:有n个城市,m个工作站,工作站的覆盖区域呈圆状,且有相同的半径,最多只能使用m个工作站,问可以覆盖掉所有的城市的工作站半径最小为多少。思路:二分加DLX。采用二分半径的方法,对于每一个半径,构造一个十字链,列为n个城市,行为m个工作站,对于每一行来讲为当前半径下,工作站可以覆盖掉的城市。然后进行A*即可。tirick:1)一个是对于选取最小行时,设置的最大值比较小。WA。2)As

2013-10-27 14:10:07 798 1

原创 poj 3074 Sudoku (精确覆盖,DLX,搜索)

题意:一个9*9的数独,实现给你一些放好的数,且保证答案只有一种,让你输出答案。思路:这题可以采用精确覆盖的DLX做法。首先对于数独而言,每个格子有9种情况,且有9*9 个格子,所以可以让行等于9*9*9。然后再看数独的限制条件,每个数字在每一行,每一列,每一个3*3的区域中只能出现一次。因此根据精确覆盖的特性,每一个元素只能被覆盖一次,可以设列为9行每行个,9列每行9个,9个小区域每行9个,

2013-10-26 19:44:45 786

原创 hdu 3498 whosyourdaddy (重复覆盖,DLX+迭代加深A*)

题意:有一个英雄,他有一个技能,可以使一个点和与他相邻的点受到伤害,问最少攻击几个点可以使所有点至少被伤害一次。思路:DLX。很裸。设行为每一个点,列为攻击点,在这里行元素与列元素都为n。然后DLX+迭代加深的启发式搜索就可以了,而启发式函数的含义为在当前状态下,在最优情况中,需要攻击几个点来消灭所有点。设计为选取一列控制,这时需要一行,行数加1。并且将与它连接的所有行包含的列都控制,这个只有

2013-10-26 19:32:03 698

原创 hdu 4371 Minimum palindrome(13年成都网络赛D题)(找规律)

题意:让你使用小写字母表的前m个字母,然后组成一个长度为n的字符串,使其字符串的最大回文串的长度是所有构成长度为n串的最大回文串长度的最小值。输出字典序最小的串。思路:当m==1 的时候,只能使用a ,那么a 循环即可。当 m>2时,此时使用三个数字典序最小,即使用abc循环即可。而m==2时,需要暴力打表找规律。通过打表发现,当n>8的时候前两位为aa,后面则是aababb循环。而小于8时特

2013-10-21 23:49:25 841

原创 数位DP小结

一般情况[n,m]区间中满足一定条件的数的个数有多少个,都可以采用数位DP的思想。DP定义一般式为DP[i,st]  i为位数,而ST为状态数,根据实际情况而定。转移方程一般为dp[i,st]=dp[i-1,st']。这为一般的形式。根据不同题目,对于一些情况进行特殊处理。

2013-10-21 20:51:21 735

原创 hdu 4734 F(x) (2013成都网络赛G题)(数位DP)

题意:定义一个权重: F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1.(AnAn-1An-2 ... A2A1是组成A的各个位),然后问你0到B 区间内的数的权重小于等于A的权重的数有多少个。思路:刚开始先算了一下 999999999的权重为4599,所以用数组可以存下,则定义状态dp[a][b][c]表示位数为a,开头

2013-10-21 20:41:34 864

原创 poj 3286 How many 0's? (数位DP+ 统计)

题意  :计算 m到n区间中的数一共包含了多少个0.思路:定义DP状态dp[a][b][c]表示a位数,开头为b ,含有c个0的数的个数。转移状态:if(b>=1)dp[a][b][c]+=dp[a-1][z][c]   (0=else       dp[a][b][c]+=dp[a-1][z][c-1]  (0=对数字进行DP预处理,然后对于每个低于n或m的数字进行去

2013-10-20 20:42:42 1046

原创 poj 3252 Round Numbers (数位DP)

题意:给你两个十进制数n,m,求n,m在二进制情况下(n,m)区间中数字0比数字1个数多的二进制数有多少个。思路:数位DP。    设DP[a][b][c]a位数,开头为b,含有c个1的数的个数。    转移方程:if(b==1){dp[a][b][c]+=dp[a-1][z][c-1]   (0}else{dp[a][b][c]+=dp[a-1][z][c

2013-10-19 22:41:48 592

原创 hdu 3555 Bomb (数位DP)

题意:给你一个数n,找出小于n且不包含'49'的数的个数题目:http://acm.hdu.edu.cn/showproblem.php?pid=3555思路:dp[a][b][c]表示位数为a,开头为b,且是否包含49为c的数的个数(c==1表示包含49,反之不包含)状态转移方程为:if c==1{dp[i][j][1]+=dp[i-1][k][1];    (0=

2013-10-18 21:24:33 676

原创 hdu 3652 B-number (数位DP)

题意:找出小于n且是13的倍数,并且包含'13'的数思路:设状态dp[a][b][c][d]位数为a,模13的余数为b,c表示是否含有13 (c==1表示有,c==0表示无),d表示上一位的数字,最前面为0.    则可以看出转移状态为   if c==1 {dp[a][b][c][d]+=dp[a-1][(b*10+x)%13][1][x];   (0=if(d==1&&x=

2013-10-18 20:47:44 1039

原创 hdu 2089 不要62 (数位DP)

题意:给定一个区间[n,m],求n到m中没有“62”和“4”的数的个数。其中例如62548 ,412包含62 和4 所以是不合法的。http://acm.hdu.edu.cn/showproblem.php?pid=2089思路:设dp[i][j]表示i位数且开头为j的数中不包含“4”和“62"的数的个数,则可以得出dp[i][j]=dp[i][j]+dp[i-1][k],(0=代码如下:

2013-10-17 20:57:15 716

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除