
倍增
bestFy
世界上最最最渣的oier.
展开
-
hdu5381 The sum of gcd
题面在这里题意:给一个序列,然后m次询问。 每次询问一个区间[l,r]中所有子区间的gcd之和。做法:这个题是nowcoder的比赛题,Wannafly挑战赛7的E。 (然后被人找到了原题qaq。。 (一开始不会,从某个大佬口中一点点套出来的= =(果然大佬讲题都讲得飞快啊…我们考虑把询问离线。 对于每一个右端点,维护它左端点的答案。 于是我们从左往右枚举i,原创 2018-01-06 19:22:02 · 355 阅读 · 0 评论 -
ural1297 Palindrome
题面在这里题意:求一个串最长的回文子串。做法:首先将原串和它的反串用一个没有出现过的字符拼接起来。 跑这个大串的sa。求出height。 在原串中枚举一个中心点x,要知道x往左右两边最多能扩展多少,这个相当于求原串和反串相应后缀的lcp。 于是就可以用height+rmq实现了。 注意要按照长度奇偶分开讨论。代码:/*************************原创 2018-01-18 18:57:02 · 240 阅读 · 0 评论 -
牛客练习赛10 C-最长回文
题面在这里题意:有两个长度均为n的字符串A和B。可以从A中选一个可以为空的子串A[l1..r1],B中选一个可以为空的子串B[l2..r2],满足r1=l2,然后把它们拼起来(A[l1..r1]+B[l2..r2]) 求这样得到的最长回文串长度。做法:(ps.这题被scx大佬秒了%%%)首先,一个串中找一个最长回文子串可以用SA来做,你把这个串正反拼接一下,然后枚举中原创 2018-01-13 01:15:37 · 538 阅读 · 0 评论 -
bzoj2815: [ZJOI2012]灾难
题面在这里题意:有一个n个点的关系图,u->v有边表示u能吃v。 去掉某个点以后会有一些点没有东西吃,每个点的灾难值定义为如果去掉这个点,会没有东西吃的点的个数。 求每个点的灾难值。 n做法:好妙啊QAQ..首先这个不是树很难受,如果是一棵树,就可以直接计算子树大小得到答案了。 我们考虑把图化成一棵树。 观察到一个奇妙的性质,一个点u,如果和很多点v1,v2…原创 2018-01-28 14:47:18 · 430 阅读 · 0 评论 -
uoj#295. 【ZJOI2017】线段树(树上倍增)
先放代码,日后更。============================2018.3.21UPD============================ 题面在这里做法首先需要了解zkw线段树的操作过程。(不懂的百度一下) 大概就是从两个叶节点开始,维护两个指针,一个指向lll左边一位,一个指向rrr右边一位,不停向上跳。然后模仿这个过程同样在这个广义线段树上操作,画一下图可以发...原创 2018-03-14 12:05:48 · 386 阅读 · 0 评论 -
Codeforces Round #471 (Div. 2)
比赛链接QAQ终于补完了这场的题。。感觉后面几题还都挺好的就写个(非常)简略的总结叭。A. Feed the cat简单贪心+模拟。#include<bits/stdc++.h>#define rep(i,x,y) for (int i=(x); i<=(y); i++)#define ll long longusing namespace std;...原创 2018-03-27 23:23:41 · 505 阅读 · 0 评论