自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZigZagK的博客

Never give up fighting!

  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 【后缀数组+Manacher】BZOJ3676(Apio2014)[回文串]题解

题目概述给出一个字符串,定义一个回文子串的权值为长度 ×\times 出现次数。求最大权值。解题报告求回文子串可以用Manacher,每当找到一个回文子串,就用后缀数组求出其出现次数。因为是求子串出现次数,所以构造 heightheight 再二分就可以 O(log2n)O(log_2n) 查找。本质不同回文子串的个数是 O(n)O(n) 的,所以效率是 O(nlog2n)O(nlog_2n) 。由

2017-12-31 23:05:55 488

原创 【替罪羊树-动态标号+线段树】BZOJ3600[没有人的算术]题解

题目概述定义一种数,这种数只有 00 和 (a,b)(a,b) ,其中 a,ba,b 是这种数。定义 << :1. 00 最小。2. (a,b)<(c,d),c>a(a,b)<(c,d),c>a 。3. (a,b)<(a,c),c>b(a,b)<(a,c),c>b 。现在有 nn 个这种数,刚开始都是 00 。给出 mm 个操作:1.将 a[k]a[k] 赋值为 (a[l],a[r])(a[l],a

2017-12-31 00:08:09 548

原创 我的Emacs配置

(自认为)高仿Dev-cpp。 2018.1.1UPD:找到了好东西!有了这个你就可以改某些快捷键了~(custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your in

2017-12-29 16:42:17 386

原创 替罪羊树

说替罪羊树之前说下朝鲜树 朝鲜树是一种自平衡二叉查找树。其特色就是使用者可以指定一个值,当整棵树的深度大于K时就重建这颗树,因此避免了复杂的旋转操作。重构(重建):把一棵二叉树“拍平”(中序遍历存进数组),然后建成平衡树。怎么样,是不是非常暴力啊,然而效率……所以替罪羊树是这样的: 每次操作以后检查操作路径,找到最高的满足 max(size(sonL),size(sonR))>α×size

2017-12-29 09:50:37 916

原创 【杜教筛】51Nod1239[欧拉函数之和]题解

题目概述求 ∑ni=1φ(i)\sum_{i=1}^{n}\varphi(i) 。解题报告因为 n=∑ni=1∑nj=1[gcd(i,n)=j]=∑d|n∑ndi=1[gcd(i.nd)=1]=∑d|iφ(nd)n=\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd(i,n)=j]=\sum_{d|n}\sum_{i=1}^{n\over d} [gcd(i.{n\over d})=1

2017-12-26 15:14:42 430

原创 【杜教筛】51Nod1244[莫比乌斯函数之和]题解

题目概述求 ∑ni=1μ(i)\sum_{i=1}^n \mu(i) 。解题报告杜教筛可以用来求积性函数的前缀和,具体想法是用另外一个函数卷待求函数,如下: ∑i=1n(f∗g)(i)=∑i=1n∑d|if(id)g(d)=∑d=1ng(d)∑i=1⌊nd⌋f(i)=∑i=1ng(i)S(⌊ni⌋)⇔g(1)S(n)=∑i=1n(f∗g)(i)−∑i=2ng(i)S(⌊ni⌋)⇔S(n)=∑ni=

2017-12-25 11:42:03 845

原创 【虚树+树形DP】BZOJ2286(Sdoi2011)[消耗战]题解

题目概述给出一棵 nn 个节点的树(有边权),有 mm 个询问,每次询问给出 kk 个节点,需要干掉若干条边使得 kk 个节点都不与 11 连通,求最小代价。解题报告如果只有一组询问,显然是 O(n)O(n) 树形DP,但是有多组询问……不过我们注意到 ∑k\sum k 不大,所以如果我们能建出一棵新树,这棵新树只和关键点有关,就可以加快速度。这种树就是虚树,接下来我们讲一下构造方法:为了维持树形不

2017-12-24 20:03:17 422

原创 【二进制分组+AC自动机】HDU4787[GRE Words Revenge]题解

题目概述给出 nn 个操作,操作有两种:1.加入一个 0101 串。2.询问一个 0101 串中子串是学过单词的个数。强制在线。解题报告如果是插入完再询问,就是AC自动机裸题。如果不强制在线,可以按照时间分治。然而都不满足啊,只能另想办法了。又一个神奇的暴力,二进制分组就派上用场了。每次插入都必须重建AC自动机,但是这是无法承受的。我们将插入分组,如果这一组与上一组的个数相同,那么就将两者合并,并重

2017-12-23 16:22:13 460

原创 【降幂大法】BZOJ3884[上帝与集合的正确用法]题解

题目概述求 222⋮ mod p2^{2^{2^{\vdots}}}\ mod\ p (无数个 22 )。解题报告直接上降幂大法,直到模数变为 11 就可以直接退 00 。可以证明 φ(φ(φ(⋯φ(p))))\varphi(\varphi(\varphi(\cdots\varphi(p)))) 至多 log2plog_2p 就可以变成 11 ,所以效率是 O(Tlog2p)O(Tlog_2p) 的

2017-12-21 21:19:40 474

原创 【扩展欧拉定理-降幂大法】Balkan OI 2016[数塔]题解

题目概述求 xx⋮xn21 mod px_1^{x_2^{\vdots^{x_n}}}\ mod\ p 。 解题报告欧拉定理: aφ(p)≡1(mod p)⇔ab≡ab mod φ(n)(mod p)a^{\varphi(p)}\equiv 1(mod\ p)\Leftrightarrow a^b\equiv a^{b\ mod\ \varphi(n)}(mod\ p) ,可以用来降幂,但是只适用于

2017-12-21 20:58:59 1421 2

原创 【莫比乌斯反演】BZOJ2154[Crash的数字表格]题解

题目概述求 ∑ni=1∑mj=1lcm(i,j)\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j) 。解题报告第一道反演题……首先先要知道 e=μ∗1e=\mu*1 ,证明戳这里。莫比乌斯反演: f=g∗1⇔g=f∗μf=g*1\Leftrightarrow g=f*\mu ,证明: f=g∗1⇔g∗(μ∗1)=f∗μ⇔g∗e=f∗μ⇔g=f∗μf=g*1\Leftrigh

2017-12-21 14:22:01 499

原创 【莫比乌斯函数+除法分块】BZOJ2820[YY的GCD]题解

题目概述求 (i,j)∈P,1≤i≤n,1≤j≤m(i,j)\in P,1\le i\le n,1\le j\le m ( PP 是素数集)的 i,ji,j 的个数。解题报告按照BZOJ2301的方法,得出答案式子: ∑p∑d=1min{A′=⌊Ap⌋,B′=⌊Bp⌋}μ(d)⌊A′d⌋⌊B′d⌋\sum_{p}\sum_{d=1}^{min\{A'=\lfloor{{A\over p}\rfl

2017-12-20 20:06:29 398

原创 【二分+线段树】BZOJ4552(Tjoi2016&Heoi2016)[排序]题解

题目概述给出一个 nn 的排列,对其进行 mm 次局部排序:将 [L,R][L,R] 升序或降序排序。问最后 pospos 上的数。解题报告又是二分神题Orz,先二分答案 midmid ,就可以把序列按照是否大于 midmid 变为 0101 序列,这样局部排序就变成了 0101 个数查询和区间覆盖。如果最后 pospos 上是 11 ,说明答案不小于 midmid 。示例程序#include<cs

2017-12-19 21:17:27 465

原创 【dsu on tree】Codeforces741D[Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths]题解

题目概述给出一棵 nn 个节点的树,边权是小写字母( aa 到 vv ),若一条链上的小写字母可以打乱排列成回文则称该链满足条件。求每个节点子树中最长的满足条件的链。解题报告询问子树不修改果断上dsu on tree。能打乱排列成回文说明至多只有一个字母出现了奇数次,因为字母只有 2222 个,所以位运算异或就可以快速判断。至于求答案……因为dsu on tree是大暴力,所以瞎搞就行了……示例程序

2017-12-19 20:16:41 457

原创 【dsu on tree】Codeforces600E[Lomsat gelral]题解

题目概述给出一棵 nn 个节点的树,每个节点有一个颜色。如果 cc 是一个节点子树中出现次数最多的颜色,则称该节点被 cc 占领(一个节点可以被许多颜色占领)。求每个节点的 ∑c\sum c 。解题报告烂大街的dsu on tree(树上启发式合并)经典题。先树剖,对于 xx 我们递归求出轻儿子的答案(不记录信息),然后再求出重儿子的答案(记录信息)。之后暴力统计所有子树节点的信息(重儿子为根的子树

2017-12-18 20:43:04 370

原创 【树链剖分+李超线段树】BZOJ4515(Sdoi2016)[游戏]题解

题目概述给出 nn 个点的树, mm 个操作,操作有两种:s t a bs\ t\ a\ b :在 s→ts\to t 上的每个点 ii 都插入一个数 a×dis(s,i)+ba\times dis(s,i)+b 。s ts\ t :询问 s→ts\to t 中最小的数。解题报告显然用李超线段树(查了四天了QAQ),由于在树上,所以先树剖。对于 s→ts\to t ,我们的想法肯定是拆成两半:

2017-12-17 13:39:40 516

原创 【Dijkstra+贪心】BZOJ1922(Sdoi2010)[大陆争霸]题解

题目概述有 nn 个点 mm 条有向边,一个点要被摧毁需要先摧毁其他的一些点,求从 11 开始,摧毁 nn 的最短时间。解题报告刚开始以为是拓扑,之后发现显然不是,因为一个点没被摧毁之前是不能访问的。所以SPFA也不能用了,只剩下Dijkstra。记录 dis[0][i]dis[0][i] 表示到 ii 点的最短时间, dis[1][i]dis[1][i] 表示 ii 可以被摧毁的最短时间。那么一个

2017-12-14 19:34:00 345

原创 【李超线段树】BZOJ3165(Heoi2013)[Segment]题解

题目概述有 nn 个操作,操作有两种:1.插入一条端点为 (a,b),(c,d)(a,b),(c,d) 的线段。2.询问与 x=kx=k 相交的最高线段的标号。解题报告这道题是李超线段树裸题QAQ。说到底,李超线段树就是线段树+标记永久化,所以我们先来说说标记永久化。我们写线段树区间修改一般都用标记下传的形式。实际上,我们也可以不下传,而是在询问的时候把路径上的标记作用叠加起来(比如区间加,标记不下

2017-12-10 21:14:23 447

原创 【欧拉函数】BZOJ2705(SDOI2012)[Longge的问题]题解

题目概述求 ∑ni=1(i,n)\sum_{i=1}^{n}(i,n) 。解题报告∑i=1n(i,n)=∑d|nd∑i=1nd[(i,nd)=1]=∑d|ndφ(nd)\sum_{i=1}^{n}(i,n)=\sum_{d|n}d\sum_{i=1}^{{n\over d}}[(i,{n\over d})=1]=\sum_{d|n}d\varphi({n\over d})然后暴枚因子求欧拉函数就

2017-12-10 14:06:49 321

原创 【数位DP+莫比乌斯函数】2017计蒜之道复赛A[阿里云秘钥池]题解

题目概述求 [L,R][L,R] 中有多少数在 PP 进制下任意相邻位互质。解题报告肯定是数位DP,把转移方程表示出来: f[i][j]=∑k=1P−1f[i−1][k]×[(j,k)=1]=∑k=1P−1f[i−1][k]×e[(j,k)]=∑k=1P−1f[i−1][k]∑d|j,d|kμ(d)=∑d|jμ(d)∑t=1⌊P−1d⌋f[i−1][dt]f[i][j]=\sum_{k=1}^{

2017-12-10 13:11:41 336 1

原创 【莫比乌斯函数+除法分块】BZOJ2301(HAOI2011)[Problem b]题解

题目概述求 a≤x≤b,c≤y≤da\le x\le b,c\le y\le d 中 (x,y)=k(x,y)=k 的个数。解题报告好像很多人说是莫比乌斯反演……但是我感觉只用到了狄利克雷卷积和莫比乌斯函数啊QAQ?求区间果断容斥,那么先写出答案式子(令 A′=⌊Ak⌋,B′=⌊Bk⌋A'=\lfloor{A\over k}\rfloor,B'=\lfloor{B\over k}\rfloor ):

2017-12-09 17:08:52 598

原创 【莫比乌斯函数】BZOJ2440(中山市选2011)[完全平方数]题解

题目概述求第 kk 个不是完全平方数(此题中 11 不是完全平方数)倍数的数。解题报告显然是求 ∑ni=1μ2(i)≥k\sum_{i=1}^{n}\mu^2(i)\ge k 的最小的 nn ,好像有个性质: μ2(n)=∑d2|nμ(d)\mu^2(n)=\sum_{d^2|n}\mu(d) 然而我并不会证明QAQ,就当做是结论记一下吧。那么: ∑i=1nμ2(i)=∑i=1n∑d2|i

2017-12-09 15:35:19 517

原创 【狄利克雷卷积+快速幂】HDU5628[Clarke and math]题解

题目概述给出数论函数 f(n)f(n) 和 kk ,求函数 gg ,其中 g(i)=∑i1|i∑i2|i1⋯∑ik|ik−1f(ik)g(i)=\sum_{i_1|i}\sum_{i_2|i_1}\cdots\sum_{i_k|i_{k-1}}f(i_k) 。解题报告很容易发现是狄利克雷卷积的形式,我们令 Fk(ik−1)=∑ik|ik−1f(ik)F_k(i_{k-1})=\sum_{i_k|i_

2017-12-09 14:25:35 407

原创 数论函数&狄利克雷卷积

开坑卷积……数论函数数论函数是定义域在正整数的函数。积性函数: f(ab)=f(a)f(b),gcd(a,b)=1f(ab)=f(a)f(b),gcd(a,b)=1 ,完全积性函数: f(ab)=f(a)f(b)f(ab)=f(a)f(b) 。常见积性函数: φ(n)\varphi(n) ,μ(n)\mu(n) (莫比乌斯函数), d(n)d(n) (因子个数), σ(n)\sigma(n)

2017-12-09 12:01:12 1518

原创 【拓扑+堆】BZOJ4010(HNOI2015)[菜肴制作]题解

题目概述给出一张 nn 个点 mm 条边的拓扑图,假设第 ii 个点是第 aia_i 个出队的,求一种合法方案使得 {an}\{a_n\} 的字典序最小。解题报告好妙的题……因为题目里的要求比较难实现,所以我们可以倒着来建反图,那么问题变成了让编号大的点尽量先出队(而不是求字典序最小)。最后倒着输出就行了。示例程序刚开始以为是以前做过的简单题,于是盗了代码……码风奇怪不

2017-12-05 20:56:58 349

原创 【DFS】BZOJ1024(SCOI2009)[生日快乐]题解

题目概述有一个边长分别为 xx 和 yy 的矩形蛋糕。现在一共有 nn 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕。每一切只能平行于一块蛋糕的一边(任意一边),并且必须把这块蛋糕切成两块,共切 n−1n-1 次。要求 nn 块蛋糕的长边与短边的比值的最大值最小。求最小值。解题报告首先想到二分,但是并没有什么作用,因为并不知道长边或短边,枚举肯定是不行的。但是我们发现切的次数非常少,所以可以

2017-12-05 19:42:09 602

原创 【贪心+位运算】BZOJ3668(Noi2014)[起床困难综合症]题解

题目概述有 nn 扇防御门,每扇防御门包括一个位运算 opop 和一个参数 tt ,参数一定为非负整数。如果还未通过防御门时攻击力为 xx ,则其通过这扇防御门后攻击力将变为 x op tx\ op\ t 。最终的伤害为对方初始攻击力 xx 依次经过所有 nn 扇防御门后转变得到的攻击力。初始攻击力只能为 00 到 mm 之间的一个整数,求一次攻击最多有多少伤害。解题报告每个位分开考虑,得到第 ii

2017-12-05 18:23:02 357

原创 【最小割Dinic】BZOJ2521(Shoi2010)[最小生成树]题解

题目概述求对于某一条无向图中的边 (x,y,z)(x,y,z) ,至少需要多少次操作可以保证该边一定出现在这个无向图的最小生成树中。一次单独的操作是指:先选择一条图中的边 (X,Y,Z)(X,Y,Z) ,再把图中除了这条边以外的边,每一条的权值都减少 11 。解题报告好强的题QAQ,首先我们先分析如何才能让某条边必定出现在最小生成树中。考虑Kruskal的过程,发现一条边 (x,y,z)(x,y,z

2017-12-03 20:25:07 403

原创 【堆+平衡树】BZOJ1058(ZJOI2007)[报表统计]题解

题目概述维护一个可能为负数的整数数列。在最开始的时候,有一个长度为 nn 的整数序列,并且有以下三种操作:INSERT i kINSERT\ i\ k :在原数列的第 ii 个元素后面添加一个新元素 kk ; 如果原数列的第 ii 个元素已经添加了若干元素,则添加在这些元素的最后。MIN_GAPMIN\_GAP :查询相邻两个元素之间的差值(绝对值)的最小值。MIN_SORT_GAPMIN\_SOR

2017-12-03 15:22:23 369

原创 【组合】BZOJ3505(Cqoi2014)[数三角形]题解

题目概述求 n×mn\times m 网格中的三角形个数。解题报告首先肯定是用总方案数 (n3)n\choose 3 减去不合法的方案数要方便很多。但是怎么求不合法(三点共线)的方案数?有个结论是横长为 xx 纵长为 yy 的线段中整点的个数为 gcd(x,y)+1gcd(x,y)+1 ,yy一下不难得出。那么只要枚举 x,yx,y ,然后算出共线三角形的方案数 gcd(x,y)−1gcd(x,y)

2017-12-03 11:30:52 399

原创 BZOJ刷题记录(施工到AFO)

QAQ,我要努力200题! 题号 日期 题解 备注 BZOJ2423 2018.2.24 QwQ BZOJ1048 2018.2.20 QwQ BZOJ1862 2018.2.20 同上一题 双倍经验1056 BZOJ1056 2018.2.20 平衡树裸题 双倍经验1862 BZ...

2017-12-03 09:55:10 575 1

原创 【带权并查集】BZOJ1202(HNOI2005)[狡猾的商人]题解

题目概述调查一位商人的账本,账本上记录了 nn 个月以来的收入情况。所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和。共看了 mm 次账本,只能看某段时间内账本上记录的收入情况,并且只能记住这段时间内的总收入。根据记住的这些信息来判断账本是不是假的。解题报告带权并查集套路题,每次多出来一条信息 (x,y,z)(x,y,z) 可以看做是 x−1x-1 向 yy 连边,且 Sy−Sx−1=zS

2017-12-02 11:00:29 319

2012年noi冬令营陈立杰讲稿

丽洁姐的后缀自动机讲解!

2017-07-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除