倍增
_beginend
这个作者很懒,什么都没留下…
展开
-
bzoj 2144: 跳跳棋 lca+倍增
题意跳跳棋是在一条数轴上进行的。棋子只能摆在整点上。每个点不能摆超过一个棋子。我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置。我们要通过最少的跳动把他们的位置移动成x,y,z。(棋子是没有区别的)跳动的规则很简单,任意选一颗棋子,对一颗中轴棋子跳动。跳动后两颗棋子距离不变。一次只允许跳过1颗棋子。 写一个程序,首先判断是否可以完成任务。如果可以,输出最少需要的跳动次数原创 2017-12-22 20:21:36 · 375 阅读 · 0 评论 -
bzoj 4722: 由乃 线段树+倍增+搜索
题意给一个长为n的序列a,每个数在0到v - 1之间,有m次操作。 操作1:每次询问一个区间中是否可以选出两个下标的集合X,Y,满足: 1.X和Y没有交集 2.设集合X中有一个元素是i,则其对集合X的贡献是a[i] + 1,要求集合X的元素的总贡献和集合Y的元素的总贡献相等如果可以选出这两个集合,输出 Yuno否则输出 Yuki 操作2:修改一个区间l,r之间的数,使得所有l <= i <=原创 2017-08-09 21:30:44 · 574 阅读 · 1 评论 -
51nod 1743 雪之国度 Kruskal+倍增+并查集
题意雪之国度有N座城市,依次编号为1到N,又有M条道路连接了其中的城市,每一条道路都连接了不同的2个城市,任何两座不同的城市之间可能不止一条道路。 雪之女王赋予了每一座城市不同的能量,其中第i座城市被赋予的能量为Wi。 如果城市u和v之间有一条道路,那么只要此刻雪之女王的能量不小于|Wu-Wv|,这条道路就是安全的。 如果城市u和v之间存在两条没有重复道路的安全路径(其中每一段道路都是安全的)原创 2018-01-02 20:03:31 · 386 阅读 · 0 评论 -
bzoj 4180: 字符串计数 后缀自动机+倍增floyd
题意SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999。 他给出了一个字符串T,字符串T中有且仅有4种字符 ‘A’, ‘B’, ‘C’, ‘D’。现在他要求蒟蒻yts1999构造一个新的字符串S,构造的方法是:进行多次操作,每一次操作选择T的一个子串,将其加入S的末尾。 对于一个可构造出的字符串S,可能有多种构造方案,Oxer定义构造字符串S所需原创 2018-01-10 15:52:43 · 596 阅读 · 0 评论 -
AtCoder Grand Contest 002 D - Stamp Rally 并查集+二分答案+倍增
题意给出一个无向连通图。有q次询问,每次询问给出两个不同的点x和y,还有一个参数z。求一个最小的k使得只考虑编号不超过k的边时,x的连通块和y的连通块中的点的并集不小于z。 n,m,q<=100000分析首先二分一波答案。 那么现在要快速求的就是某个点只走编号不超过k的边时的连通块大小。 注意到只有最小瓶颈生成树上的边是有贡献的,所以其他的边可以忽略。 考虑按编号从小...原创 2018-02-09 20:46:36 · 633 阅读 · 0 评论 -
Codeforces 666E Forensic Examination 广义后缀自动机+线段树合并+倍增
题意给出一个长度为n的字符串S,和M个字符串Ti。有Q组询问,每次询问给出四个参数a,b,c,d,问S[a..b]在T[c..d]这些字符串中作为子串出现最多次数的T是哪一个,并求出出现次数。 N<=500000 M<=50000 Q<=500000 字符串T总长度不超过50000分析先把所有串扔到一起建广义sam,然后对于每个节点用线段树维护每一个Ti的...原创 2018-03-10 15:18:40 · 589 阅读 · 0 评论 -
Codeforces 983E NN country 倍增+树状数组
题意给一棵n个节点的树和m条链,有q次询问,每次询问给出两个点x和y,问最少选出多少条链使得x到y路径上的每条边都至少被覆盖一次。 n,m,q≤2∗105n,m,q≤2∗105n,m,q\le2*10^5分析考虑先预处理每个点往上跳一步最多可以跳到哪里,然后先贪心从两个端点往lca跳,求出跳到某个离lca最近且不为lca的点,设为a和b。 接下来分两种情况,若a可以一步到达b,...原创 2018-05-24 21:53:20 · 631 阅读 · 0 评论 -
LibreOJ #510.「LibreOJ NOI Round #1」北校门外的回忆 倍增+线段树
题意有这样一个程序:function add(x,v) while x <= n do s[x] = s[x] xor v x = x + lowbit(x) //注意,这里是 lowbit,这也是两份代码唯一的区别 end whileend functionfunction query(x) ans = 0 ...原创 2018-06-27 08:25:45 · 735 阅读 · 1 评论 -
bzoj 1178: [Apio2009]CONVENTION会议中心 倍增+set
题意给出n个区间,要求你选出最多的区间且区间之间两两不相交。并输出一种方案使得其编号字典序最小。 n<=200000,l,r<=10^9分析如果不要求字典序最小的话就是一道普及贪心题了。问题在于如何找到字典序最小的方案。 我一开始想的是按编号从小到大枚举区间,若加上这个区间后可选的区间总数不会减少,那么这个区间就是可选的。设区间为[l,r],get_ans(l,r)表示l到r这段时间最多可以放下原创 2017-11-16 19:51:09 · 311 阅读 · 0 评论 -
51nod 1647 小Z的trie 广义后缀自动机+倍增
题意NOIP编号为ZJ-267的小Z在NOIP中AK啦! 小Z打算去冲击省选,于是开始学习trie。 有一天,他得到了N个字符串。 他先建立一个根节点,对于每一个字符串,他都从根节点开始一点点插入。 小Z不满足于此。他的大脑里盘旋着M个问题: 如果给定一个二元组(s,t)(s,t都是trie中的节点且s是t的祖先), 存在多少个二元组(x,y)(x,y都是trie中的节点且x是y的原创 2017-11-01 15:56:20 · 765 阅读 · 0 评论 -
bzoj 2093: [Poi2010]Frog 倍增
题意一个条河无限宽,上面有n块石头,石头离左边的河岸(无限宽,右边河岸不晓得在哪)距离严格递增,现在Zxl想锻炼自己的跳跃能力(谁叫他在班里外号是鸟怪。。畸形),他在某一块石头上,想跳到离他这块石头第k远的石头上去,假如离他第k远的石头不是唯一的,他就选离岸最近的那一个(不然回不去了),他想你让他知道,从每块石头开始跳了m次后,自己在哪。 n, k <= 1,000,000, m <= 10^18原创 2017-05-15 11:25:04 · 457 阅读 · 0 评论 -
bzoj 2085: [Poi2010]Hamsters hash+倍增floyd
题意给定n个长度总和不超过10W的字符串,求一个最短的母串,使所有字符串的出现次数之和=m 这n个字符串保证不互相包含分析一开始题目没有给出字符串总长,以为就是AC自动机上dp+矩阵乘法随便优化一下就好了。。。既然不能对长度和字符集dp,那我们就可以考虑对字符串dp。 设f[i,j]表示j接到i后面最少增加多少个字符。 看到m辣么大,很容易想到倍增,那我们就可以用f[i,j,k]表示i后面接长度原创 2017-05-16 09:01:05 · 335 阅读 · 0 评论 -
bzoj 2165: 大楼 倍增floyd
题意xz是一个旅游爱好者,这次他来到了一座新的城市。城市中央有一幢高耸入云的大楼。这幢楼到底有多少层呢?据说和非负整数的个数是一样多的。xz想爬上这座大楼来观赏新城市的全景。这幢大楼的楼层从下至上用从小到大的非负整数编号。每层楼有n个房间,用1到n的正整数编号。楼层之间用电梯连接,电梯只能上行,不能下行或者同层移动。(下楼一般自行解决)电梯用(u,v,w)的形式给出,表示对于任意正整数i,有第i层的原创 2017-06-05 21:38:47 · 564 阅读 · 0 评论 -
bzoj 3676: [Apio2014]回文串 manachar+后缀自动机+倍增(回文树)
题意考虑一个只包含小写字母的字符串s。我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最大出现值。 n<=300000分析因为自己对马拉车的性质不太熟悉,所以一开始没做出来。 考虑在跑马拉车算法的时候,所有本质不同的回文串必然包含在所有能使mx增加的回文串内,也就是最多只有O(n)个。那么我们只要求出后缀自动机,然后每找到一个回文串就扔进后缀自原创 2017-04-09 20:47:28 · 470 阅读 · 0 评论 -
bzoj 4082: [Wf2014]Surveillance 倍增
题意给你一个长度为len的环,以及n个区间,要你选择尽量少的区间,使得它们完全覆盖整个环。问最少要多少个区间。 n,len<=1000000分析首先考虑一条链的情况,那么显然是每次从起点开始,找一跳能跳的最远的链来跳。 但这题是环,于是我们考虑把结论拓展一下。 先把环倍增一下,然后把所有区间按照右端点排序。然后每个区间向它能跳到且右端点最远的区间连边,这样就构成了一棵树的结构。然后我们枚举从哪原创 2017-08-22 20:12:39 · 397 阅读 · 0 评论 -
51nod 1389 跳跳树 倍增
题意小a与小b在树上玩一个游戏,每一轮游戏小a与小b在树上选两个点,然后小a朝着小b所在的方向移动。神奇的是,这棵树上每条边都有一个长度的,每个点上都有一棵非常高的松树。小a可以从高处不耗费任何体力跳往相邻的低处,也可以耗费一点体力,走不超过k的长度的路径走到某个点然后跳到松树顶端(不能停在路中央)。现在他们进行了Q次游戏,每一次小a所在的位置为xi的顶端,小b所在的位置为yi的顶端。小a想知道最少原创 2017-11-07 16:59:56 · 460 阅读 · 0 评论 -
bzoj 4386: [POI2015]Wycieczki 倍增+矩阵乘法
题意给定一张n个点m条边的带权有向图,每条边的边权只可能是1,2,3中的一种。 将所有可能的路径按路径长度排序,请输出第k小的路径的长度,注意路径不一定是简单路径,即可以重复走同一个点。 1<=n<=40,1<=m<=1000,1<=k<=10^18)分析首先要二分答案,然后考虑统计长度不超过mid的路径数。 设fi,jfi,jf_{i,j...原创 2018-07-12 11:54:48 · 349 阅读 · 0 评论