离线处理
文章平均质量分 87
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
HDU 5869 ACM-ICPC Regional Dalian Online(离线统计+树状数组)
本来想做数论的题目的,没想到是一道离线统计的题目。果然统计加离线大法的力量就是强…… 大致题意就是,给出一个数列,然后有很多询问,每次问一个区间内它的所有子区间的gcd的值有多少种。一开始的话认为可能会有一些区间的性质,即对于区间[l,r]可以用1到r的种类数减去1到l-1的种类数得到结果。但是发现这个正确性不能保证,因为前一段有gcd为x的,后一段可能也有gcd为x的,这样可能会使得方案数偏少。 于是想到用离线处理的方法,从最左边开始,按顺序把每一个数字的贡献加入。然后对于原创 2017-08-17 13:49:52 · 358 阅读 · 0 评论 -
CodeForces 1110F Nearest Leaf(离线处理 + 线段树)
大致题意:给你一棵n个节点的带有边权的树,给你q个询问。每个询问给出一个点x和一个区间[l,r],问在dfs序在这个区间的点中,距离x最近的叶子节点距离x的距离是多少。首先,我们考虑,如果每个询问的点x都是根,那么我们每次寻找一个距离最近的叶子节点的距离,相当于在这个区间中找叶子节点的最小值。因此,很自然而然的,我们可以把根距离每个叶子节点的距离放到线段树里面,那么...原创 2019-02-09 15:54:56 · 469 阅读 · 0 评论 -
CodeForces 1000F One Occurrence( 离线处理+线段树解法)
大致题意:给你一个固定的数列a,然后q个询问,每个询问给出一个区间,问你区间内是否有恰好出现一次的数字,如果有输出任意一个,否则输出0。 这题主要方法就是仿照17年HDU多校有一道题的做法,HDU 6070。其实也只是用了其中的一个思想,也即用每一个数字把区间分段。对于每一个区间[1,r]中的最右边的一个数字i,我都可以记录一个pos[i],表示数字i在区间[1,r]中上一个出现的位置。这里最右边指的是,同一个数字i,可能在区间中出现多次,最后那次是我们想要的。求出了这个pos,我们可以发原创 2018-07-07 09:25:22 · 1137 阅读 · 0 评论 -
CodeForce 959F Mahmoud and Ehab and yet another xor task(思维+离线处理)
大致题意:给你n个数字和q个询问。每个询问为l、x,意思是在前l个数字中取一个子集,求子集的异或和为x的子集个数。 通常想法:dp。令dp[i][j]表示前i个数字的子集异或和为j的个数,有转移方程dp[i][j]=dp[i-1][j]+dp[i-1][j^a[i]]。分别代表a[i]取与不取。时空复杂度O(N*2^K),K表示数字二进制最高位。显然,对于N为1e5,K为20的数据范围来说,时空上都不满足我们的要求。 仔细的观察可以发现,dp中其实很多的枚举与转移都是浪费的原创 2018-04-22 11:01:53 · 354 阅读 · 0 评论 -
第九次多校赛总结+CSU 1914+CSU 1921加强版解法
应该是2017年上半年的最后的一场多校赛了,真的挺想留下一个美好的回忆,但是无奈力不从心…… 从一开始就是,水题疯狂卡,然后题目做法没有弄清楚,就去敲模板……记得1921那题一开始没想清楚,先是打了一个树状数组,后来发现不对打了个线段树,最后发现直接暴力就可以过…… 水题过后就是一般的题目,然而不知道状态不好还是什么,很容易看出来的解法当时却没有想到,贪心和简单的数据结构的应用都没有做出来。还一直在抱怨原创题出的奇怪……其实这些都只能怪自己最近太水了。我承认是我的问题,数据结原创 2017-05-08 18:13:35 · 421 阅读 · 0 评论 -
Code Forces 589G Hiring(树状数组)
果然三个小时对于我们来说还是不够把中档以下的题目做完…… 此题其实也是一道不太难想到的一个中档题。大致题意:给你n个人,然后每一个人有每天工作的准备时间和他们的这几天要工作的总时长。然后他们只有m天的时间完成这个总时长,而且每天有限制的工作时间ti。对于这个工作准备时间,要计算在每天的工作时间以内。对于这点,比如说某个人准备时间为2,然后某天时间限制为5,那么有效工作时间就是3,如果时间限制小于准备时间,那么这天就没有有效工作时间。最后问每个人最早能在哪一天完成工作总时长。原创 2017-11-17 23:51:38 · 300 阅读 · 0 评论 -
HDU 6230 Palindrome CCPC2017 Harbin(Manacher+树状数组+离线处理)
在哈尔滨的第一场比赛真的是像发疯了一样,在水题上纠结了近四个小时……当时真菜…… 现在回过头来看,这道题目还是非常的巧妙的。首先,我们要清楚的明白,这个回文的性质,例如:abcbabc,有两个对称中心'c'和'a',然后第二个对称中心的长度要恰好为两个对称中心的距离。转换成符号表示就是,i<j,j-i==len[j]且j-i<=len[i]。更确切的说就是,第二个对称中心要落在第一个对称的范围内,而且第二个对称中心的长度要恰好为两个对称中心的距离。 如果之前知道Manache原创 2017-11-11 22:57:45 · 1197 阅读 · 0 评论 -
ZOJ 3981 Balloon Robot CCPC2017 Qinhuangdao(推公式+离线处理)
现在回想起来,真的不应该去用C++强撸那道应该用Java做的大整数的题目了…… 大致题意就是,有一个发气球的机器,然后有n个人,m个座位排成了一个圆圈,总共AC了p道题目,然后机器人每次从某一个位置开始移动,每次花1个时间单位移动一格。每次机器人走到一个人旁边,它就会把这个人已经A的所有题目对应的气球发给他。对于每一道题目,产生的不高兴值是发气球的时间,减去对应A题的时间。然后问,如何选取这个出发点使得总的不高兴值最大。 首先,我们考虑如果发气球机器的起始位置是x,那么对于一原创 2017-10-31 20:56:55 · 605 阅读 · 0 评论 -
HDU 5493 Queue(线段树+离线处理)
离线大法好! 首先我先比较系统的说说什么是离线法。所谓离线法,与在线处理对应,是把询问先全部存下来,然后不一定按照给出询问的顺序来回答,而是按照某种能够提高效率的顺序回答。最著名的例子莫过于莫队算法,离线的其本质就是对询问进行排序,然后求解。我前两天发的星球大战和统计整除对的题都用到了离线法,后面还有题目也会用到。原创 2017-07-18 21:50:52 · 402 阅读 · 0 评论 -
SPOJ 1557 Can you answer these queries II(离线处理+线段树求历史最大)
膜拜杨哲大犇orz…… Can you answer these queries……这也是一个系列,线段树系列。 之前第一个我们已经写过了,就是求区间最大连续子串。这个与第一个不同,这个要求是已经取过的数字,第二次遇到了不计算,即子串1、2、1的和是3而不是4。也就意味着,你询问区间的不同,对应的最大连续子串也会不同,故显然在线线段树是做不了的,继续用离线大法。原创 2017-07-19 16:05:23 · 407 阅读 · 0 评论 -
2017多校训练赛第九场 HDU 6162(离线处理+树链剖分+线段树解法)
离线处理的题目千千万万,但很多时候还是能够让你耳目一新…… 没有修改操作,很显然可以离线水。但是与普通的lca不同,这题要求是求点权在一个区间内的两点路径权值和。加了个值域,就足以让人头疼。但是,万能的我(not)们(me)总能想到方法解决。对于一个询问(x,y,l,r),如果我们把它拆成(x,y,l-1)和(x,y,r)会发生什么呢?没错,如果我能够分别求出这两个,那么把他们两个相减不久可以得到结果了吗。但是,即使如此,还是有一个最大值的限制,不过不要忘了,我们可是在离线处理啊。每个点都有原创 2017-08-24 22:40:07 · 510 阅读 · 0 评论 -
CodeForces 1140F Extending Set of Points(线段树 + 并查集 + DFS)
大致题意:每个时刻往集合S里面添加或者删除一个点,然后每个时刻输出集合E(S)的大小。所谓E(S)就是对S进行拓展,如果S中存在(x1,y1)(x2,y2)(x1,y2)那么把(x2,y1)加入集合,一直到不能新加入点为止。我们仔细分析这个点加入的条件,很容易可以发现,对于一个点(x,y),相当于把第x行和第y列给合并。最后的答案就是每个连通块内的行数与列数的乘积和。所以我...原创 2019-04-04 08:39:19 · 504 阅读 · 0 评论