
数据结构
刀刀狗0102
一个喜欢敲代码的zhazha
展开
-
poj2155--Matrix(二维树状数组)
二维树状数组 poj2155原创 2014-07-25 21:35:22 · 951 阅读 · 0 评论 -
hdu3068--最长回文(Manacer算法)
最长回文Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9418 Accepted Submission(s): 3238Problem Description 给出一个只由小写英文字符a,b,c...原创 2015-03-12 10:52:54 · 914 阅读 · 0 评论 -
Codeforces Beta Round #7--D. Palindrome Degree(Manacer)
题目:http://blog.youkuaiyun.com/winddreams/article/details/44218961求出每个点为中心的最长字符串,判断该串是不是从开头的回文串。 #include #include #include using namespace std ;int p[12000000] , dp[6000000];char s[12000000]原创 2015-03-12 16:35:15 · 908 阅读 · 0 评论 -
sdut2610--Boring Counting(二分+划分树)
Boring CountingTime Limit: 3000ms Memory limit: 65536K 有疑问?点这里^_^题目描述 In this problem you are given a number sequence P consisting of N integer and Pi is the ith element in t原创 2015-04-03 20:57:52 · 774 阅读 · 0 评论 -
poj2104--K-th Number(划分树)
K-th NumberTime Limit: 20000MS Memory Limit: 65536KTotal Submissions: 40169 Accepted: 13120Case Time Limit: 2000MSDescriptionYou are working for Macrohard com原创 2015-04-03 19:29:42 · 851 阅读 · 0 评论 -
sdut2168--Mathmen(贪心)
MathmenTime Limit: 1000MS Memory limit: 65536K题目描述Mathmen love mathematics, and they live on the number line. All the mathmen spend all their time on solving mathematical pro原创 2015-04-06 10:57:36 · 861 阅读 · 0 评论 -
poj3237--Tree(树链剖分+线段树)
题目链接:poj--3237题意很简单,给出n个节点的一棵树,有三种操作:1、C修改第i条边的值为v2、N改变节点a到b内边的权值的符号(取反)3、Q询问节点a到b内权值的最大值首先树链剖分,将边整合到线段树上,线段树数组cl,因为存在取反操作,所以最大值可能是由最小值取反得到,所以记录最大和最小值,cl[i][0]记录第i段的最大值,cl[i][1]记录最小值,lazy做标记原创 2015-04-19 14:39:25 · 854 阅读 · 0 评论 -
hdu--3966(树链剖分)
题目链接:hdu--3966给出n个点的值,还有n-1条边的连接方式,三种操作:1、I在节点a到b的路径中所有的点都增加x2、D在节点a到b的路径中所有的点都减少x3、Q询问第k个节点的值。将每个节点的值转化为父节点到子节点的边的权值,对于根节点做一个虚拟的父节点0 。进行树链剖分,整合到线段树中之后注意:更新时,不能只更新a到b上的边的权值,因为那样会使b节点的权值不能被原创 2015-04-19 16:27:41 · 1514 阅读 · 0 评论 -
树链剖分学习
“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。 记siz[v]表示以v为根的子树的节点数,dep[v]表示v的深度(根深度为1),top[v]表示v所在的链的顶端节点,fa[v]表示v的父亲,son[v]表示与转载 2015-04-19 16:50:16 · 539 阅读 · 0 评论 -
Codeforces Beta Round #7--D. Palindrome Degree(hash)
D. Palindrome Degreetime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputString s of length n is called k-pali原创 2015-03-12 10:59:15 · 1522 阅读 · 0 评论 -
Manacher算法--O(n)回文子串算法 .
O(n)回文子串算法 这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/ 其实原文说得是比较清楚的,只是英转载 2015-03-12 10:46:50 · 728 阅读 · 0 评论 -
poj3691--DNA repair(AC自动机+dp)
DNA repairTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 5743 Accepted: 2693DescriptionBiologists finally invent techniques of repairing DNA that con原创 2015-02-04 08:16:50 · 2242 阅读 · 0 评论 -
poj3468--A Simple Problem with Integers(树状数组解法)
A Simple Problem with IntegersTime Limit: 5000MS Memory Limit: 131072KTotal Submissions: 59247 Accepted: 18032Case Time Limit: 2000MSDescriptionYou have N i原创 2014-07-25 19:54:33 · 1092 阅读 · 0 评论 -
优先队列的使用
p.empty() //优先队列是否为空,空返回truep.push(x) ; //添加元素x = p.top() ; //读入最符合条件的元素p.pop() ; //抛出首个元素 priority_queue p ;//默认的找大的元素原创 2014-07-23 15:19:44 · 647 阅读 · 0 评论 -
poj3007--Organize Your Train part II(hash)
Organize Your Train part IITime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 7365 Accepted: 2130DescriptionRJ Freight, a Japanese railroad company for fre原创 2015-01-29 11:27:10 · 1679 阅读 · 0 评论 -
hdu2222-- Keywords Search(AC自动机入门1)
Keywords SearchTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Appoint description: System Crawler (2014-05-13)DescriptionIn the mo原创 2015-02-02 14:41:49 · 797 阅读 · 0 评论 -
hdu1556--Color the ball
Color the ballTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8883 Accepted Submission(s): 4542Problem DescriptionN个气球排成一排,从左到右依次编号为1,2原创 2014-07-25 21:51:51 · 839 阅读 · 0 评论 -
hdu3065--病毒侵袭持续中(AC自动机入门3)
病毒侵袭持续中Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7185 Accepted Submission(s): 2531Problem Description 小t非常感谢大家帮忙解决了他的上一原创 2015-02-02 17:12:39 · 822 阅读 · 0 评论 -
hdu2896--病毒侵袭(AC自动机入门2)
病毒侵袭Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12771 Accepted Submission(s): 3290Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了原创 2015-02-02 16:30:43 · 796 阅读 · 0 评论 -
poj2778--DNA Sequence(AC自动机+矩阵优化)
DNA SequenceTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 12252 Accepted: 4661DescriptionIt's well known that DNA Sequence is a sequence only contains A原创 2015-02-03 17:19:01 · 3069 阅读 · 0 评论 -
poj2763--Housewife Wind(树链剖分+线段树)
Housewife WindTime Limit: 4000MS Memory Limit: 65536KTotal Submissions: 6898 Accepted: 1742DescriptionAfter their royal wedding, Jiajia and Wind hid away in XX Vill原创 2015-04-17 11:05:41 · 1647 阅读 · 0 评论 -
zoj2112--Dynamic Rankings(树状数组+主席树)
题目连接:zoj2112给出n个点,两种操作,Q:询问在[l,r]内的第k大的数,C:更改第i个数位x动态的询问第k大,使用树状数组修改和查询前缀和。因为给出的空间小,所以可以将n个点做成一个静态的主席树,然后对于修改的值,在另一个主席树中修改,查询时同时查询这两个主席树就可以了。#include #include #include using namespace std ;原创 2015-04-27 21:37:26 · 1835 阅读 · 0 评论 -
hdu5384(2015多校8)--Danganronpa(AC自动机)
题目链接:点击打开链接题目大意:给出n个字符串主串,和m个模式串,定义f(A,B)为B串在A串中出现的次数,现在对每一个A串都计算∑f(Ai,Bj) (1 对m个模式串建立AC自动机,然后每个主串都放入自动机中,统计主串包含多少B内的串,并输出。注意:标记的时候直接累加值,可能会有多个模式串相同。统计的时候,使用fail一直要回到根。#include #include原创 2015-08-13 21:10:53 · 725 阅读 · 0 评论 -
hdu5329(2015多校4)--Question for the Leader
题目链接:点击打开链接题目大意:给出一个图,有n条点,n条边,如果要将这个图分为相同点数的k份,要求每一份内部都可以相互链接,那么一共会有几个k符合条件。1、有一个定理,如果一颗树要分成k个节点一份的子树,那么有n/k个节点所对应子树的节点数是k的倍数。根据上面这个定理,那么我们就可以计算一颗树能不能被分成n/k份,题目中给出了是一棵树+一条边,所以最终应该是一个环和以环上节点为根的子原创 2015-08-01 17:16:09 · 1159 阅读 · 0 评论 -
hdu5289(2015多校1)--Assignment(单调队列)
AssignmentTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 503 Accepted Submission(s): 256Problem DescriptionTom owns a compan原创 2015-07-22 08:57:43 · 2223 阅读 · 2 评论 -
hdu5293(2015多校1)--Tree chain problem(树状dp)
Tree chain problemTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 262 Accepted Submission(s): 59Problem DescriptionCoco has a原创 2015-07-22 16:00:37 · 2809 阅读 · 0 评论 -
hdu5296(2015多校1)--Annoying problem(lca+一个公式)
Annoying problemTime Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 483 Accepted Submission(s): 148Problem DescriptionCoco has a原创 2015-07-22 20:25:14 · 1502 阅读 · 0 评论 -
hdu5381(2015多校8)--The sum of gcd(线段树)
题目链接:点击打开链接题目大意:f(l,r)=∑ri=l∑rj=igcd(ai,ai+1....aj),给出初始的n个值,q次询问,每次询问输出f(l,r)的值 大多都是说莫队算法,没有想出肿么用,,,,本题用两个线段树完成首先对于任意一个a[i],每次gcd减小至少一半,所以它向后的gcd最多下降log(a[i])次,可以求出对于每一个a[i]来说的gcd相同的各个区间。用线段树原创 2015-08-17 14:57:43 · 1211 阅读 · 0 评论 -
codeforces(567D)--D. One-Dimensional Battle Ships
D. One-Dimensional Battle Shipstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlice and Bob love playing o原创 2015-08-07 10:09:45 · 1363 阅读 · 0 评论 -
codeforces(567C)-- Geometric Progression
Geometric Progressiontime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPolycarp loves geometric progressions原创 2015-08-07 09:47:09 · 1167 阅读 · 0 评论 -
poj2406--Power Strings(kmp:求循环串的次数)
Power StringsTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 33163 Accepted: 13784DescriptionGiven two strings a and b we define a*b to be their concatena原创 2014-10-18 18:01:24 · 1035 阅读 · 0 评论 -
hdu5372(2015多校7)--Segment Game(树状数组)
题目链接:点击打开链接题目大意:存在一个横轴,有n此操作,0代表在横轴上新增加一条边,1代表删除1条边,其中0 x代表在从x位置开始增加一条边,当第i次加边时,边的长度为i,1 x代表删除第x次加的边。问每当新加入一条边是,这条边能完整的包含几条边。为什么当时没做这个题,,,已经泪奔,,,问的是新加的那条边能覆盖多少条边,统计已加入的边的左端点大于或等于新边左端点的个数x,统计已加入的原创 2015-08-12 15:25:31 · 939 阅读 · 0 评论 -
hdu5412--CRB and Queries(整体二分)
题目链接:点击打开链接题目大意:给出n个数的初始序列,有两种操作,1 l v将第l个数换成v,2 l r k 问在区间[l,r]内的第k大是多少,并输出经典的题目,但是树状数组+主席树(TLE)伸展树(MLE),听说他们用的块状链表,zhazha表示不会,后来补题,发现整体二分是一个好方法。首先,这个整体二分是将数据范围和操作放到一起,不断二分数据的范围,可以得到有某些操作可以被完成,原创 2015-08-26 08:27:43 · 1817 阅读 · 0 评论 -
poj2750--Potted Flower(线段树)
题目链接:点击打开链接题目大意:给出n个数排成一个环,求环的最大连续子序列,不能是总序列建一个线段树来求最大子序列如果只是一个序列,那么求最大连续子序列很简单,但是如果是一个环,那就要考虑断点的问题,因为结果可能是由左边一部分+右边一部分,这样的结果用线段树没法统计到,所以需要转换一下:求最大连续子序列 = 总和 - 最小连续子序列那么题目就很简单了,要统计出每一段的最大连续子序列原创 2015-07-11 14:58:57 · 938 阅读 · 0 评论 -
poj2482--Stars in Your Window(扫描线)
题目链接:点击打开链接链接题目大意:给出n个星星的坐标,每个星星有一个亮度,给出一个矩形的长和宽,问矩形能包括的星星的最大亮度和(不包括边框)。假设每个星星都是矩形的最左下点,那么每一个星星都可以得到一个矩形,(x,y)->(x,y,x+w,y+h),这个矩形的两条高边的值也就是星星的亮度k和-k,对于不同的矩形来说,如果高线出现重合部分,那么也就是说这两个星是可以出现在同一个矩形中的,扫原创 2015-07-11 16:51:19 · 2533 阅读 · 0 评论 -
poj2886--Who Gets the Most Candies?(线段树+反素数)
题目链接点击打开链接题目大意:给出n个人的姓名和手里的一个号码,n个人排成一圈,号码有正有负,代表着正向还是反向移动k个位置,比赛从第k个人开始,把被选到的人踢出,问按踢出的顺序中因子数最多的是谁?建立线段树,把n个人被踢的顺序找到,然后求出n个人中因子数最多的(最小的数)是谁,这里要用到反素数,详看链接点击打开链接#include #include #include using原创 2015-07-11 10:32:07 · 1074 阅读 · 0 评论 -
zoj3886--Nico Number(素数筛+线段树)
Nico NumberTime Limit: 2 Seconds Memory Limit: 262144 KBKousaka Honoka and Minami Kotori are playing a game about a secret of Yazawa Nico.When the game starts, Kousaka Honoka will g原创 2015-07-27 20:39:45 · 1293 阅读 · 0 评论 -
hdu5316(2015多校3)--Magician(线段树+dp)
题目链接:点击打开链接题目大意:给出n个数,m次操作,有两种操作,0 l r 询问[l,r]内的一个序列最大和为多少,要求该序列的相邻的位置奇偶性不同,可以不连续;1 k x将第k个位置的数换位x因为只要求奇偶性不同,所以一个序列的最大值有四种情况,偶数开始偶数结束,偶数开始奇数结束,奇数开始偶数奇数,奇数开始奇数结束。可以用一个数组表示,0表示偶数,1表示奇数,那么a[0][0],a[0原创 2015-07-28 20:38:27 · 788 阅读 · 0 评论 -
poj2892--Tunnel Warfare(线段树)
题目链接:点击打开链接题目大意:给出n个格子,三种操作,D k:消除第k个格子,R:恢复最后一次消除的格子,Q k:问和k相连的最长连续序列。求最长连续序列,线段树统计每段中被消除的最大点和最小点,更新点k,查询段[1,k][k,n],然后相减得到结果#include #include #include #include using namespace std ;#defin原创 2015-07-15 13:55:59 · 902 阅读 · 0 评论 -
hdu4267--A Simple Problem with Integers(树状数组)
题目链接:点击打开链接题目大意:有一个n个数的序列,有两种操作1 a b k c 在区间[a,b]内的i,如果满足(i-a)%k == 0 那么第i个数就加上c,2 a问第a个数的值是什么,首先给出n个数的初始值,然后是q次操作,完成每次操作,如果是询问的话,输出那个值。第一次考虑用线段树,如果一次操作1 a b k c中[a,b]能覆盖当前线段树的一个小段[l,r]的话,那么对于这个原创 2015-08-26 08:53:31 · 2165 阅读 · 0 评论