自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不慌不忙、不急不躁

https://github.com/JeraKrs

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

原创 poj 1195 Mobile phones(二维树状数组)

题目链接:poj 1195 Mobile phones题目大意:四种操作0 s:清空(1,1)~(s,s)1 x y a:在(x,y)点加上a2 x1 y1 x2 y2:询问矩形(x1,y1)~(x2,y2)的和。3:结束解题思路:纯二维树状数组。#include #include #include using namespace std;const int

2014-11-17 23:34:03 889

原创 hdu 4454 Stealing a Cake(三分)

题目链接:hdu 4454 Stealing a Cake题目大意:给定一个起始点s,一个圆形,一个矩形。现在从起点开始,移动到圆形再移动到矩形,求最短距离。解题思路:在圆周上三分即可。即对角度[0,2*pi]三分,计算点和矩形的距离可以选点和矩形四条边的距离最短值。#include #include #include #include using namespace

2014-11-17 23:29:55 1225

原创 hdu 4455 Substrings(树状数组+递推)

题目链接:hdu 4455 Substrings题目大意:给定一个长度为N的序列,现在有Q次询问,每次给定一个w,表示长度,输出序列中长度为w的连续子序列的权值和。序列的权值表示序列中不同元素的个数。解题思路:递推,先预处理处每个位置和前面相同的数据的最短距离P。dp[i]表示说长度为i子序列的权值和,dp[i+1] = dp[i] + v - c。v为[i+1~N

2014-11-17 23:25:13 1181 2

原创 hdu 4456 Crowd(二维树状数组)

题目链接:hdu 4456 Crowd题目大意:给定N,然后M次操作1 x y z:在x,y的位置加z2 x y z:询问与x,y曼哈顿距离小于z的点值和。解题思路:将矩阵旋转45度,然后询问就等于是询问一个矩形,可以用容斥定理搞,维护用二维树状数组,但是空间开不下,直接用离散化,将有用到的点处理出来。#include #include #include

2014-11-17 23:13:57 1471

原创 hdu 4460 Friend Chains(BFS)

题目链接:hdu 4460 Friend Chains题目大意:给定N个点和M条边,求出两点之间的最短距离的最大值。解题思路:N才1000,枚举点然后做BFS。#include #include #include #include #include #include #include #include using namespace std;const i

2014-11-17 23:08:19 1014

原创 hdu 4461 The Power of Xiangqi(水题)

题目链接:hdu 4461 The Power of Xiangqi题目大意:两方下象棋,给定两方剩余棋子的种类,根据能力值评估胜者,特殊条件为如果没有马或者炮,战斗力要减1,如果本来就是1就不用减了。解题思路:水题,模拟计算。#include #include #include using namespace std;const int g[10] = {1

2014-11-17 23:05:10 913

原创 hdu 4462 Scaring the Birds(STL)

题目链接:hdu 4462 Scaring the Birds题目大意:给定N,表示有一个N∗N的农田,现在有些位置的谷物已经被毁坏,农场主决定在这些位置中选择一些放置稻草人,给定每个点放置稻草人可以覆盖的曼哈顿距离。求最少放多少个稻草人。解题思路:题意需要注意,可以放稻草人的位置是没有谷物的。然后对于每个位置预处理出可以覆盖的位置,用bitset优化即可。#i

2014-11-17 23:02:30 981

原创 hdu 4463 Outlets(最小生成树)

题目链接:hdu 4463 Outlets题目大意:给定N个点,以及P,Q,问说建立N-1条边联通N个点的最短长度,要求P,Q必须建立边。解题思路:最小生成树水题。#include #include #include #include #include using namespace std;const int maxn = 55;struct edge {

2014-11-17 22:58:26 950

原创 hdu 4333 Revolving Digits(拓展KMP)

题目连接:hdu 4333 Revolving Digits题目大意:给定一个数,每次将头一个数放到最后,这样形成n个数,去掉重复的后,考虑有多少个数比原先的数小,等于,大。解题思路:拓展KMP的应用,上模板水一下就行了。#include #include #include using namespace std;const int maxn = 10000

2014-11-16 15:02:19 1081

原创 hdu 5107 K-short Problem(线段树)

题目链接:hdu 5107 K-short Problem题目大意:有N个点,M次询问,每次询问点X,Y,K,表示在点集合{(x,y)|x≤X,y≤Y}中高度第K小的值是多少,没有的话输出-1。解题思路:线段树,每个节点维护10个高度(因为K最大为10),将询问和点按照x,y的大小排序,从左向右,从下向上,每次询问就查询[0,idx(y)]即可。注意如果询问和点的位

2014-11-16 11:22:59 1310

原创 hdu 5106 Bits Problem(数位dp)

题目链接:hdu 5106 Bits Problem题目大意:给定n和r,要求算出[0,r)之间所有n-onebit数的和。解题思路:数位dp,一个ct表示个数,dp表示和,然后就剩下普通的数位dp了。不过貌似正解是o(n)的算法,但是n才1000,用o(n^2)的复杂度也是够的。#include #include #include using namespac

2014-11-16 11:13:02 1308

原创 hdu 5105 Math Problem(数学)

题目链接:hdu 5105 Math Problem题目大意:给定a,b,c,d,l,r,表示有一个函数f(x)=|a∗x3+b∗x2+c∗x+d|(L≤x≤R),求函数最大值。解题思路:考虑极点即可,将函数求导后得到f′(x)=0的x,即为极值点。在极值点处函数的单调性会发生变化,所以最大值一定就在区间边界和极值点上。注意a=0,b=0的情况,以及极值点不在区间上。#incl

2014-11-16 11:11:26 1097

原创 hdu 5104 Primes Problem(数学)

题目链接:hdu 5104 Primes Problem题目大意:给定n,判断有多少组素数p1+p2+p3=n(p1=p2=p3)解题思路:n的范围给定,先筛选出素数,然后枚举前两个,判断一下。#include #include #include using namespace std;const int maxn = 10000;int np, pri[max

2014-11-16 10:58:53 1117

原创 poj 3208 Apocalypse Someday(数位dp)

题目链接:poj 3208 Apocalypse Someday题目大意:给定n,输出第n大包含666的数字。解题思路:数位dp,用类似AC自动机的思想进行转移。首先dp[i][j]表示说i位最后有j个连续6的情况数,这个预处理出来。那么dp[i][3]即为i位有多少个满足的数。给定n,先确定位数d。然后从最高位向下判断,一开始肯定是需要3个连续的6,所以u为3,然

2014-11-13 20:28:49 2196 1

原创 zoj 3494 BCD Code(AC自动机+数位dp)

题目链接:zoj 3494 BCD Code题目大意:给定n个2进制串,然后有一个区间l,r,问说l,r之间有多少个数转换成BCD二进制后不包含上面的2进制串。解题思路:AC自动机+数位dp。先对禁止串建立AC自动机,所有的单词节点即为禁止通行的节点。接着进行数位dp,dp[i][j]表示第i为移动到节点j的可行方案数,每次枚举下一位数字,因为是BCD二进制,所以每位数要一

2014-11-13 20:23:18 1425

原创 【索引】Codeforces Round #277(Div. 2)

Problem A: Factory(485A)Problem B: Valuable Resources(485B)Problem C: Bits(484A)Problem D: Maximum Value(484B)Problem E: Strange Sorting(484C)

2014-11-13 13:07:23 731

原创 Codeforces 486E LIS of Sequence(线段树+LIS)

题目链接:Codeforces 486E LIS of Sequence题目大意:给定一个数组,现在要确定每个位置上的数属于哪一种类型。解题思路:先求出每个位置选的情况下的最长LIS,因为开始的想法,所以求LIS直接用线段树写了,没有改,可以用log(n)的算法直接求也是可以的。然后在从后向前做一次类似LIS,每次判断A[i]是否小于f[dp[i]+1],这样就可以确定该位

2014-11-13 13:01:30 1656

原创 Codeforces 486D Valid Sets(暴力)

题目链接:Codeforces 486D Valid Sets题目大意:给定一棵树,每个节点有个权值,现在要选定一些节点,要求非空,并且maxVal-minVal不大于d。问说有多少种选择方法。解题思路:枚举每个节点作为根节点,默认根节点为权值最大的节点,然后各个孩子节点用乘法原理即可。#include #include #include #include u

2014-11-13 12:54:10 1701

原创 Codeforces 486C Palindrome Transformation(贪心)

题目链接:Codeforces 486C Palindrome Transformation题目大意:给定一个字符串,长度N,指针位置P,问说最少花多少步将字符串变成回文串。解题思路:其实只要是对称位置不相同的,那么指针肯定要先移动到这里,修改字符只需要考虑两种方向哪种更优即可。然后将所有需要到达的位置跳出来,贪心处理。#include #include #incl

2014-11-13 00:02:28 1733

原创 Codeforces 486B OR in Matrix(暴力)

题目连接:Codeforces 486B OR in Matrix题目大意:给定一个M∗N的矩阵b,求矩阵a是否存在。解题思路:只要b矩阵有一个位置为0,那么说明这一行这一列的a矩阵上不可能有1,最后处理完在按照规则生成一下b‘,比较一下是否相同即可。#include #include #include using namespace std;const int ma

2014-11-12 23:56:49 1226

原创 Codeforces 486A Calculating Function(水题)

题目链接:Codeforces 486A Calculating Function题目大意:给定n,计算f(n)解题思路:对n分奇偶考虑即可。#include #include #include using namespace std;int main () { long long n; scanf("%lld", &n); if (n&1)

2014-11-12 23:49:04 1690

原创 hdu 3695 Computer Virus on Planet Pandora(AC自动机)

题目连接:hdu 3695 Computer Virus on Planet Pandora题目大意:给定一些病毒串,要求判断说给定串中包含几个病毒串,包括反转。解题思路:将给定的字符串展开,然后匹配一次后反转后再匹配一次。#include #include #include #include #include #include using namespace s

2014-11-12 23:46:02 1299

原创 hdu 3341 Lost's revenge(AC自动机+变进制状压DP)

题目链接:hdu 3341 Lost's revenge题目大意:给定一些需要匹配的串,然后在给定一个目标串,现在可以通过交换目标串中任意两个位置的字符,要求最后生成的串匹配尽量多的匹配串,可以重复匹配。解题思路:这题很明显是AC自动机+DP,但是dp的状态需要开40∗40∗40∗40(记录每种字符的个数),空间承受不了,但是其实因为目标串的长度有限,为40;所以状

2014-11-11 23:10:46 1042

原创 hdu 3247 Resource Archiver(AC自动机+BFS+DP)

题目链接:hdu 3247 Resource Archiver题目大意:给定N个需要包含的串,M个不能包含的串,问说满足的最短字符串长度。解题思路:直接对所有串建立AC自动机,不能满足的串用同一种标记即可。然后处理出所有属于需要包含串的单词节点,用BFS处理出两两之间的距离,并且过程中是不能经过禁止节点。这样做的原因是节点的个数很多,如果对所有的节点进行dp的话空间

2014-11-11 22:32:13 1226

原创 poj 1699 Best Sequence(AC自动机+状压DP)

题目链接:poj 1699 Best Sequence题目大意;给定N个DNA序列,问说最少多长的字符串包含所有序列。解题思路:AC自动机+状压DP,先对字符串构造AC自动机,然后在dp[s][i]表示匹配了s,移动到节点i时候的最短步数。#include #include #include #include #include #include using nam

2014-11-11 21:38:20 1382

原创 hdu 1277 全文检索(AC自动机)

题目链接:hdu 1227 全文检索题目大意:略。解题思路:就是普通的匹配问题,注意相同串,以及输出要按照出现顺序呢。#include #include #include #include #include #include using namespace std;const int maxn = 10000 * 60;const int maxm = 10

2014-11-11 21:34:10 829

原创 hdu 2296 Ring(AC自动机+DP)

题目链接:hdu 2296 Ring题目大意:给定N和M,表示要求一个长度不大于N的字符串,现在有M个得分串,给定M个得分串,以及每个串的得分值。要求分值尽量大,字符串尽量小,字典序尽量小。解题思路:AC自动机+DP,对得分串建立AC自动机,同样在自动机上DP,dp[i][j]表示长度i匹配到j节点的权值最大值,rec[i][j]则表示字典序最小的字符串,过程中既要

2014-11-10 20:59:03 1122

原创 hdu 2457 DNA repair(AC自动机+DP)

题目链接:hdu 2457 DNA repair题目大意:给定一些DNA序列,表示带有疾病,现在给定一个DNA序列,要求修改最少的位置,使得DNA不带有疾病的片段。解题思路:AC自动机+DP,先将DNA片段建立AC自动机,然后在AC自动机上进行dp,dp[i][j]表示长度为i移动到j节点修改了最少的步数。每次走到边如果和字符串不同,权值即为1;相同则为0。单词节点

2014-11-10 20:53:18 1005

原创 zoj 3228 Searching the String(AC自动机)

题目连接:zoj 3228 Searching the String题目大意:给定一个字符串,然后现在有N次询问,每次有一个type和一个子串,问说子串在字符串中出现几次,type为0时为可重叠,为1时为不可重叠。解题思路:不过没有type=1的限制,那么就是普通的AC自动机匹配问题,对于不可重叠问题,可以对于每个节点记录一下上一次匹配到的pos,用当前匹配的i减掉

2014-11-10 20:46:43 1060

原创 hdu 2825 Wireless Password(AC自动机+状压DP)

题目链接:hdu 2825 Wireless Password题目大意:N,M,K,M个字符串作为关键码集合,现在要求长度为N,包含K个以上的关键码的字符串有多少个。解题思路:AC自动机+dp,滚动数组,因为关键码个数不会超过10个,所以我们用二进制数表示匹配的状态。dp[i][j][k]表示到第i个位置,j节点,匹配k个字符串。#include #include

2014-11-09 23:14:13 938

原创 poj 1625 Censored!(AC自动机+DP+高精度)

题目链接:poj 1625 Censored!题目大意:给定N,M,K,然后给定一个N字符的字符集和,现在要用这些字符组成一个长度为M的字符串,要求不包括K个子字符串。解题思路:AC自动机+DP+高精度。这题恶心的要死,给定的不能匹配字符串里面有负数的字符情况,也算是涨姿势了,对应每个字符固定偏移128单位。#include #include #includ

2014-11-09 23:08:27 903

原创 hdu 4112 Break the Chocolate(水题)

题目链接:hdu 4112 Break the Chocolate题目大意:给定一个N∗M∗K的巧克力,现在要用两种方式将其转换成单位大小,一种用手掰一次将两个分成两块,一种用刀切,同一方向上可以两切好的两块叠在一起切。解题思路:第一种就是N∗M∗K−1,第二种则预处理出dp[i],表示说该方向长度为i的时候需要切几刀,dp[N]+dp[M]+dp[K]。#in

2014-11-09 19:50:36 841

原创 hdu 4111 Alice and Bob(博弈)

题目链接:hdu 4111 Alice and Bob题目大意;Alice和Bob两个玩游戏,有N堆石子,每次可以从一堆中取走一个石子,或者是合并两堆石子,Alice先,问说最后谁赢。解题思路:NP定理,写出一些NP定理找到规律,再用归纳的方法证明。统计1的个数c,以及非1情况下的步数s,包括合并。c为奇数,s不等于2:那么先手必胜。s为2或者为0:c为

2014-11-09 19:45:42 1643

原创 Codeforces 484C Strange Sorting(置换)

题目链接:Codeforces 484C Strange Sorting题目大意:给定一个长度为N的字符串,现在有M次询问,每次要从左向右逐个对长度为K的子串进行D-sorting,最后输出生成的串。解题思路:问题即为一个置换的思想,L对应的左移一位的置换,C对应的是D-sorting前K为的置换,每次执行完一次C肯定执行一下L,保证D-sorting的为不同的K长

2014-11-09 19:07:24 1492

原创 hdu 2243 考研路茫茫——单词情结(AC自动机+矩阵快速幂)

题目链接:hdu 2243 考研路茫茫——单词情结题目大意:略。解题思路:和poj 2778 DNA Sequence类似的做法,不同的是这道题目是要求小于长度L的,所以要多加一个维护总和,做过矩阵快速幂的人肯定都会这个。然后我们肯定是先算出不包含词根的,用总的减掉就是要求的答案,所以我又加了两个用来维护总的,长度为i时,总的可能串有26i,累加。题目要求取模264

2014-11-09 11:16:06 1346

原创 hdu 5099 Comparison of Android versions(水题)

题目链接:hdu 5099 Comparison of Android versions题目大意:给定两个字符串,对应进行比较。解题思路;水题,坑题意。#include #include #include using namespace std;char A[10], B[10];char judge () { for (int i = 2; i 4;

2014-11-09 00:24:57 849

原创 hdu 5095 Linearization of the kernel functions in SVM(水题)

题目链接:hdu 5095 Linearization of the kernel functions in SVM题目大意:给定一个多项式的系数,输出多项式。解题思路:水题,注意细节。系数为0不输出,系数为1忽略。#include #include #include #include using namespace std;int main () { i

2014-11-09 00:22:26 1179

原创 hdu 5094 Maze(BFS)

题目链接:hdu 5094 Maze题目大意:给定一张图,现在要从(1,1)的位置移动到(n,m),中途有些位置是存在门或者墙的。相应的门需要那到对应的钥匙才可以通过。并且给定钥匙的位置。解题思路:就是普通的bfs,钥匙的拥有可以用一个二进制数表示,唯一麻烦的是它门以及墙是落在边上的,所以我预处理的时候直接在边上搞。#include #include #in

2014-11-09 00:21:17 1296

原创 hdu 5092 Seam Carving(dp)

题目链接:hdu 5092 Seam Carving题目大意:给定一个N∗M的矩阵,每次可以向下面三个方向移动,现在要求走过的路径上的值最小,并且尽量靠右。输出值和路径。解题思路:dp[i][j]表示移动到第i层j的位置的最优解,r[i][j]则对应记录的是从上一层的哪一个位置到来。水题,只是坑题意。#include #include #include

2014-11-09 00:17:10 1087

原创 hdu 5091 Beam Cannon(线段树扫描线)

题目链接:hdu 5091 Beam Cannon题目大意:给定N个点,现在要有一个W∗H的矩形,问说最多能圈住多少个点。解题思路:线段的扫描线,假设有点(x,y),那么(x,y)~(x+W,y+H)形成的矩形,以框的右下角落的位置是可以圈住(x,y)点,所以N个点即为N个矩形,求覆盖的最大次数,扫描线裸题。#include #include #include #

2014-11-09 00:13:03 1629 1

空空如也

空空如也

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

TA关注的人

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