数据结构-线段树
文章平均质量分 52
ruclion
天上一日,地下十年
展开
-
UVALive 6838
更改括号与括号匹配题目描述:给出一个已经匹配好的(()),长度n~300000, 下面给出Q~150000次修改,每行一个x,每次把x处的东西反转。要求对于每个修改,找出尽量靠左的东西修改y,把y处的反转,使得仍然匹配,输出y。并且随着修改是累积的题解:其实是线段树的操作。对于括号,(相当于1,)相当于-1,因为最开始是匹配好的,因此满足匹配只要:从头到尾的和均》=0就好了。那么强制改①(到),会从原创 2015-05-11 09:11:30 · 654 阅读 · 0 评论 -
cf330 594D — REQ
题目描述:题解:其实是一道很躶的题目。关键是求出L到R之间的质数的出现情况。 想到一种莫队的算法,但是可能会超时。 因此有下面一种很实用的方法。对于离线查询,我们相当于可以固定左端点,那么其实对于质数p,就是从l之后的第一个出现p的位置是关键位置。我们用线段树来区间修改。最开始预处理所有的结果为正确的。然后随着l的平移,对于删掉的左边的数,它的质数应从l到下一个l-1之间都要去除这个质数的影响。原创 2015-11-20 21:39:40 · 415 阅读 · 0 评论 -
B - A Corrupt Mayor's Performance Art
题目描述:B - A Corrupt Mayor’s Performance Art Time Limit:1000MS Memory Limit:100000KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticeHDU 5023 Appoint description: Description Corrupt gove原创 2015-10-30 19:27:14 · 308 阅读 · 0 评论 -
H - Relief grain
题目描述:H - Relief grain Time Limit:5000MS Memory Limit:100000KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticeHDU 5029 Appoint description: Description The soil is cracking up because o原创 2015-10-30 19:32:30 · 343 阅读 · 0 评论 -
Easy Problem With Numbers
题目描述:F. Fold The PaperTime Limit: 2000msMemory Limit: 65535KB 64-bit integer IO format: %lld Java class name: Main Submit Status PID: 24254 You have a rectangular piece of paper that is divided原创 2015-10-08 16:45:34 · 293 阅读 · 0 评论 -
codeforces 318 D. Bear and Cavalry
题目描述:D. Bear and Cavalrytime limit per test:3 secondsmemory limit per test:256 megabytesinput:standard inputoutput:standard outputWould you want to fight against bears riding horses? Me neither.Limak i原创 2015-09-10 16:45:32 · 489 阅读 · 0 评论 -
Rip Van Winkle's Code
题目描述:线段树操作.有两种不同的操作,a.一个是将l到r的加上一个等差数列.b.另一个是把l到r的数都改成x.查询是查询l到r的和.题解:两个标签的线段树,关键是要确定标签的先后顺序.我们定的是先b再a.就是说:如果有b和a的标签同时都有的话,那么我的顺序是先处理b,再处理a.如果一个点什么都没有,那么就随便加标签,如果有a标签,再加b标签,我会先把a标签传下去,再加b标签.如果现有b标签,我加a原创 2015-08-02 19:12:50 · 367 阅读 · 0 评论 -
hdu5316
题目大意:一个数列,有两个操作 修改其中的一个数 求出一个区间的最大子列使得子列中相邻的两项在原数列中的位置的奇偶性不同。 线段树直接维护,一个节点存放四个值,表示这个子列以奇数or偶数起始,以奇数or偶数结尾的最大值,接着就一样的单点修改就行。原创 2015-08-02 16:03:31 · 414 阅读 · 0 评论 -
POJ 1769
要用线段树的dp题目描述:一堆m~5e5可已到达[l,r]的东西,不能改变顺序的从中挑选一些,使得1个在1的东西能够交换到n~5e4.题解:首先是dp[i][j],考虑完i个机器,1能够移动到j所花费的最小的长度.然后看每个机器怎么去更新,对于i:l,r, 首先拿出来dp[i-1][l]的值,一定是l到r最小的,然后用i,拿这个值去修改一下dp[i][l][r]的最小值,[i]可省略,用线段树来成端原创 2015-06-19 11:44:02 · 692 阅读 · 0 评论 -
2015-2016 ACM ICPC Baltic Selection Contest E. Permutation Polygon
题目描述:http://codeforces.com/gym/100796/problem/E题解:其实很裸的一道题. 对于i和p[i],我们考虑在i和p[i]之间,但是值却在它之外的,那么和他相交. 同时,为了便于计算,我们也可以算在1~i和p[i]~n的值在i到p[i]的个数, 这个很简单,我们分成两段,左边推一次,右边推一次,用树状数组.然后结束 但是注意:要将二元组i和p[i]同时放原创 2016-01-19 22:00:40 · 788 阅读 · 0 评论