自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiefubao的专栏

业精于勤荒于嬉,行成于思毁于随

  • 博客(31)
  • 收藏
  • 关注

原创 hdu1754(线段数维护区间最大值)

题意:给定1-n个数,然后中间动态询问区间

2014-05-23 23:12:49 689

原创 hdu2604(矩阵快速幂)

题意:字符串只能由f和m两种字符构成,问长度为L且不出现子串fmf,fff的字符串有多少种.解法:初始的矩阵应该是 mm   1 0 0 1    mm 。但是应为不能出现fmf,fff子串,所以fm和ff后面不能跟f                                       ff     0 1 1 0    ff

2014-05-23 22:10:43 720

原创 2014北京邀请赛E题-矩阵快速幂

题意:长度为n(1解法:矩阵快速幂。dp[i][j]表示i长度最后连续j个不同(即最后j个无重复,最后j+1个有重复)的字符串的个数。状态选好很重要。设计状态时最重要考虑是唯一性和可传递性,比赛时明明知道肯定是矩阵快速幂,但是一直没想到这个状态表示,自己设计的自己都不会转移。         dp[i][j]有了后,后边加一个字符,这个字符可以是j之内的任意一个,也可以是j以外的,

2014-05-23 21:11:03 795

原创 hdu4118(树形DP)

题意:给一棵树(每个节点是一个城市),每个节点上有一个人。每个人都要到另外一个城市,并且每个城市最后只能有一个人。问全局所有人旅行的最长的长度可以是多少。解法:一定可以构造一种这样的情形:对于每条边,使得少的一边的所有人都到另一边去。这样就实现了每条边的最大化利用。一定是最优解。代码:/**********************************************

2014-05-21 17:37:36 1235

原创 poj3071(概率DP)

题意:淘汰赛制,2^n(n解法:ans[i][j]表示第i个队员第j轮胜出的概率。赢到最后需要进行n场比赛。算出每个人赢到最后的ans[i][n]。写出序号的二进制发现一个规律,两个队员i、j如果碰到,那么一定是在第get(i,j)场比赛碰到的。get(i,j)计算的是i和j二进制不同的最高位,这个规律也比较明显。代码:/******************************

2014-05-21 12:34:29 865

原创 poj3295(模拟)

TautologyTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9078 Accepted: 3477DescriptionWFF 'N PROOF is a logic game played with dice. Each die has six

2014-05-21 11:10:06 977

原创 poj1039(计算几何)线段相交

题意:给一个管道求光线能穿到的最大x坐标。解法:通过旋转光线一定可以使得光线接触一个上点和一个下点。枚举接触的上下点,然后逐一判断光线是否穿过每个拐点面。碰到一个拐点面没有穿过的,则是因为与其左边线段相交,求出直线与线段交点更新答案即可。不想交则说明在前一个拐点已经穿出去了。代码:/**********************************************

2014-05-20 20:35:17 901

原创 poj2115(扩展欧几里得运用)

题意:求for(int i=a;i!=b;i+=c,i%=(1解法:即求解C*x-(1C*x+K*y=b-a;如果g=gcd(C,K)不能被b-a整除,则说明无解。         用exgcd()求出一组C/g*x+K/g*y=1的解,然后两边乘上(b-a)/g将求出的x取最小正数输出。代码:/*************************************

2014-05-20 16:29:48 594

原创 hdu4386(求四边形最大面积)

题意:给出一个四边形的边长,求四边形最大面积。不合法输出-1;解法:比较明显的三分,先枚举四边形的边的连接,然后三分一个对角线长度。但是比较怪异的是eps取1e-8wa了,去1e-7才可以过。不知道谁可以解释一下。          还有这题还有一个结论,后来才知道的。len是周长的二分之一。area=sqrt((len-a)*(len-b)*(len-c)*(len-d));

2014-05-15 11:00:55 1034

原创 hdu3709(求区间内平衡数的个数)数位dp

题意:题中平衡数的定义: 以一个位置作为平衡轴,然后左右其他数字本身大小作为重量,到平衡轴的距离作为全职,实现左右平衡(即杠杆原理平衡)。然后为区间[x,y]内平衡数的个数。 (0 ≤ x ≤ y ≤ 1018)解法:数位dp。如果一个数的平衡数,那么它的平衡轴位置是确定的。原来一直尝试数位dp在dfs时候列举平衡轴的位置,后来才意识到可以提前枚举平衡轴位置,然后再dfs,这样比较好写

2014-05-14 17:38:26 1243

原创 hdu3652(数位dp)

题意:求1-n(n解法:数位dp。LL dp[pre][now][have][iflow][rem]记录着第pre位为now,have表示前边是否出现过13,iflow表示dp过程否有降低,rem表示后续需要的余数是多少。代码:/******************************************************* author:xiefubao

2014-05-14 12:09:14 738

原创 hdu3400(三分套三分)

题意:平面上两条线段 AB,CD。 A到B的速度v1 C到D的速度v2 其他地方的速度V3,求A到D的最短时间

2014-05-13 22:22:46 1359

原创 UVALive 6609(Minimal Subarray Length)维护递增序列|RMQ

题意:给一个整数序列(可能有负数),求最短的连续序列使得序列之和大于等于整数x;解法:第一种是On的复杂度:                  我们要的是sum[j]-sum[i]>=x,如果有两个决策j = sum[j'],那么j就是没用的。即维护一个sum[j]递增序列。然后每次可以二分查找,但是这里有个特点就是要得到最近的,可以同时维护一个left指针,left指针用于跟进更

2014-05-13 21:47:43 1322

原创 poj3737(三分搜索)

题意:给出一个圆锥的表面积(侧面积+底面积),求圆锥的最大体积。解法:三分半径。左边界随便取个极小的数,右边界可以假定这个圆锥是平的,高是0.这是底面积的二倍是表面积。代码:/******************************************************* author:xiefubao***************************

2014-05-13 11:02:17 1649

原创 poj2282(数位dp)

题意:计算a-b中各个数字出现的个数;解法:数位dp(思想都是先算1-b的个数,然后减掉1-a中的个数),1-9数字的计算和前边计算1的那一篇数位dp差不多,计算0时候要加一维表示前缀是否全是0;代码:/******************************************************* author:xiefubao*****************

2014-05-12 15:53:40 1315

原创 Codeforces(429D - Tricky Function)最近点对问题

D. Tricky Functiontime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputIahub and Sorin are the best competitive

2014-05-12 13:43:58 1395

原创 数位dp(求1-n中数字1出现的个数)

题意:求1-n的n个数字中1出现的个数。解法:数位dp,dp[pre][now][equa] 记录着第pre位为now,equa表示前边是否有降数字(即后边可不可以随意取,true为没降,true为已降);常规的记忆化搜索代码:/******************************************************* author:xiefubao

2014-05-11 09:24:12 2609

原创 poj1486(二分图删边匹配)

题意:给n(n<=26)张幻灯片,每张上面都有一个数字。给出所有幻灯片的位置和数字的位置,问哪些幻灯片上的数字可以确定。

2014-05-09 19:22:43 940

原创 poj4048(计算几何)

题意:有一个强大的弓弩,可以射穿所有障碍,给n(n解法:离散化所有的墙段点,以出发点为一端和每个墙端为另一端(加长到足够长),然后分别计算和多少线段非严相交。线段非严格相交的判定是:    1、严格相交(叉积判断)    2、点在线段上,这时叉积等于0并且点在线段之间代码:/**************************************************

2014-05-09 14:28:15 689

原创 hdu3336(Count the string)KMP的应用

题意:给一个字符串,计算所有前缀在字符串中出现的次数和。解法:KMP计算出Next数组后,每个位置的Next数组不断往前递归,每次相应前缀次数就加1.代码:/******************************************************* author:xiefubao************************************

2014-05-08 23:30:18 637

原创 lightoj1060(求字符串第k大排列)组合数学

题意:求给定字符串(有重复字符)第k大排列。解法:先判断字符串的所有排列是否够k个。然后从左向右每一位每一位确定。简单的组合数学。代码:/***************************************************** author:xiefubao************************************************

2014-05-08 20:11:52 1183

原创 lightoj1061 (N Queen Again)搜索+状压dp

题意:(八皇后问题的变形)给定8个皇后的位置,然后问最少要走几步使得每个皇后之间可以不相互攻击(不在同一行同一列同一斜线)。其中走的过程每步可以横着竖着斜着走多个格子。解法:先枚举所有合法的八皇后局面(总共92种)。然后将给的点对合法八皇后局面进行匹配。dp[i][j]表示合法八皇后前i个点用掉给定八皇后集合的子集j所花费的最小步数。这里的匹配相当于两个集合各八个点,进行一一配对。原来

2014-05-08 09:41:24 1247

原创 poj3080(Blue Jeans)kmp求多个串公共子串

题意:给出1-10个长度为60的字符串,求出最长的公共子串(长度不能小于3),如果有多个一样长的,输出字典序最短的。解法:想到kmp时,自己第一反应枚举第一个串的所有子串,在其他所有串中走一遍kmp,复杂度为10*60*60*60,但是发现只需枚举第一个串后缀就可以,每次枚举记录在所有串能走最远中走的最短的那个长度。这样复杂度就成了10*60*60,0ms AC。代码:/*****

2014-05-06 14:19:11 919

原创 poj1011(深搜+剪枝)

题意:给m根木棍,将它们重新拼成n根一样长的木棍,并使得n尽量大(即每个新木棍尽量短)。解法:经典的搜索题目。从小到大枚举拼成的新木棍长度,每次枚举进行一次深搜。这题关键是如何剪枝。         1、当枚举的长度不能整除总长度的时候,剪枝;(这个很显然)         2、先将木棍从长到短排序,枚举时先尝试长的木棍。(先枚举长的可以使得搜索深度不至于过深)     

2014-05-06 12:57:45 915

原创 poj3265(Problem Solving) dp

题意:奶牛群有P种问题,每个问题可以在一个月的时间内修复。修复每个问题要付出相应的代价。对于修复第i个问题,修复月开始时候要付出预付Bi,修复完的下个月初要付出Ai。必须按照1-p的顺序修复(可以多个在同一个月修复)。每个月,奶牛们可以产生M的价值,每个月产生的价值只能再下个月使用,不能累计。问最快可以几天完成所有修复。解法:ans[i][j]表示最后一个月(其实是倒数第二个月)修复了

2014-05-04 17:17:57 1140

原创 poj1029(找假硬币)模拟

题意:给n个硬币,其中有一个硬币和其他的硬币重量不一样,给出k次比较重量的结果。问是否可以将假硬币找出来。解法:判断一个硬币是真币的方法(满足其一):         1、这个硬币出现过在=的两边          2、既出现在小于的一边过,也出现在大于的一边过。        如果排除这些硬币后只剩下一个,那么假币就是剩下的那个,否则就是不确定。代码:/*******

2014-05-04 17:08:03 1308

原创 CF(427D-Match & Catch)后缀数组应用

题意:给两个字符串,求一个最短的子串。使得这个子串在两个字符串中出现的次数都等于1.出现的定义为:可以重叠的出现。解法:后缀数组的应用。从小枚举长度。如果一个长度len合法的话:则一定存在这个样的sa[i]排名。sa[i]与s[i+1]的公共前缀长度大于等于len,且sa[i]与[i-1]的公共前缀长度小于len,同时sa[i+1]与[i+2]的公共前缀长度小于len,同时保证sa[i

2014-05-03 21:35:39 1148

原创 poj3254(Corn Fields)状压dp

题意:在n*m(1解法;很经典的状压模型。先将每一行的合法状态求出来,12的时候最多377个合法状态。然后进行与行之间的状态转移。最坏复杂度12*(377^2)代码:/***************************************************** author:xiefubao*********************************

2014-05-03 21:12:04 674

原创 poj3257(Cow Roller Coaster)DP

题意:要连出一个从1-L的过山车线,给出n段可选的建设方案。每段都有起始位置,终止位置,代价,和乐趣程度。要实现1-L的长度中,相邻两端要首尾相连,总建设代价控制在B之内,问最多能获得多少乐趣程度。解法:二维dp, num[i][j]记录恰好建设到i并且用掉代价j多能获得的最多乐趣。先将每段可选方案按照位置排序,然后进行转移。最后选max(num[L][i]),i from 0 to

2014-05-03 20:14:44 1007

原创 hdu4763(KMP的应用)

题意:给一个字符串,问最长的一个子串A,他是前缀,同时是后缀,并且中间也出现过A。并且出现的三个A都不没有重叠部分。解法:先KMP求出失配数组,然后将所有的是后缀且是前缀的打上标记,然后遍历整个next数组,(对于每个位置的next来说,一直next向前取就是找到此前缀的一个个是整个字符串前缀的后缀,比较绕)暴力枚举判断每个串的所有匹配前缀的后缀是否合法。代码:/*****

2014-05-01 22:04:27 1297

原创 poj1692(区间记忆化dp)

题意:上下两行数相连,相等的才可以相连,并且每条线必须且只能与其他一条线相交(要同时满足相交的两条线的数不相等)。问给的两行数最多可以连几条线。解法:ans[i][j]记录着上面i,和下面j下标之后的数中最多可以连多少条,记忆化搜索dfs(0,0)就可以了。搜索时候,如果用到了i,则贪心在下面选相等的。用到j同理。代码:/******************************

2014-05-01 14:22:42 1261

空空如也

空空如也

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

TA关注的人

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