自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 「学习笔记」[POI2014] bzoj 4543 Hotel加强版 - 长链剖分 - 学习笔记

长链剖分定义是把最大子树改为最大深度(下文沿别的blog仍然称为重儿子)。第一个应用是要求O(nlgn+q)的时间复杂度内求k级祖先(并且强制在线)。做法是长链剖分有这样一个性质:一个点x的k级祖先y,从y走到链底长度不小于k,这个显然。现在要求x的k级祖先,做法是对每个点维护朴素倍增算法的倍增数组,以及对每条链的链顶(假设这条链长度是len)维护沿这条链向下len步和向上len步共O(2le...

2018-08-31 19:23:33 221

原创 function - 扩展欧拉定理

给定函数F(0,m)=m+1,F(n,0)=F(n-1,1),F(n,m)=F(n-1,F(n,m-1))。 多次询问求F(n,m)%p,n,m1e18,p1e9。 题解:首先打表发现F(0,m)=m+1,F(1,m)=n+2,F(2,m)=2m+3,F(3,m)=2^m-3,然后考虑F(>=4,m),不难发现这玩意是2的2的2的2的…的2次方,当n=4时好像是m+3个2。考虑n=4这个...

2018-08-30 17:15:24 195

原创 奇怪的树 - BIT - 树剖

题目大意:给一颗有根树,每个点是黑色或者白色,支持:翻转一个点的颜色,翻转所有与给定点距离为奇数的点的颜色,求所有黑点与给定点的lca的编号之和。2e5。 题解:首先考虑没有2咋做,类似与动态dp,先树剖一下,然后每个点维护轻边的所有信息,询问的时候有点像是LCT的切换轻重边。考虑如果是翻转整个树的颜色咋做,显然不仅维护黑点同时维护白点的答案,每次翻转整棵树就直接交换两个数组。因为还有距离为奇数...

2018-08-30 17:07:35 402

原创 兔子的字符串 - 后缀数组 - 二分 - 贪心

题目大意:给你个字符串s,将其划分成不超过k段使得每段的字典序最大子串的最大的一个t最小,问t是啥。1e5。 题解:考虑二分,朴素的二分是确定每一位,T飞。发现答案是s的子串,而s只有O(n^2)个子串,二分这个即可。二分完后对每个后缀分类讨论一下可以转化为给定若干区间选尽量少的点使得每个区间有至少一个点,经典问题:先不管那些覆盖别的区间的区间然后左端点排序然后贪心的向右选即可。精细的实现一下可...

2018-08-30 17:00:29 331

原创 CJB的大作 - 乱搞

题目大意:一开始给你一个字符串s,n次操作每次把s的后ai个字符放到前面来拼在原串后面,也就是每次长度倍增。操作完后q组询问l到r区间字符c出现了几次。s和k不超过100,n和q不超过1e5,l和r不超过1e18。 题解:直接搞一个solve(k,n,c)表示操作k次前n个字符c出现的次数,那么根据n和|s|*2^k(+a[k])的大小关系直接计算即可,记忆化ans(k,n,c)表示第k次操作当...

2018-08-28 21:46:16 558

原创 CERC 2014 B Mountainous landscape - 线段树 - 凸包 - 三分

题目大意:给你平面上n个横坐标严格递增的点,对于每个i∈[1,n)i∈[1,n)i\in[1,n),求一个jjj,满足PjPjP_j严格在直线PiPi+1PiPi+1P_iP_{i+1}上方。点坐标10910910^9,有10510510^5个点。 题解:答案可能不在凸包上,但如果凸包上都没有解那么就不可能有解。因此可以判断是否有解,扩展下去,可以先二分答案,然后看区间凸包是否有解;区间可以用线...

2018-08-28 21:39:00 308

原创 [JLOI2015]bzoj 4005 骗我呢 - 组合数学 - dp

莫名其妙T了…… 考虑朴素dp,设dp[i,j]表示前i行j这个数字没出现,那么显然下一行只能是[j-1,m]的数字没出现,也就是dp[i,j]=∑min(j+1,m)k=0dp[i−1,k]dp[i,j]=∑k=0min(j+1,m)dp[i−1,k]dp[i,j]=\sum_{k=0}^{min(j+1,m)}dp[i-1,k],如果0<j<m0<j<m0dp[i,j...

2018-08-27 17:01:53 362

原创 [JLOI2015] bzoj 4002 有意义的字符串 - 常系数线性递推

根据一些数学知识可以知道形如fn=pfn−1+qfn−2fn=pfn−1+qfn−2f_n=pf_{n-1}+qf_{n-2}的数列,设方程x2−px−q=0x2−px−q=0x^2-px-q=0存在两实数根为x1,x2x1,x2x_1,x_2,则fnfnf_n可以被表示为fn=Axn1+Bxn2fn=Ax1n+Bx2nf_n=Ax_1^n+Bx_2^n的形式,且通过f0,f1f0,f1f_0,f...

2018-08-27 12:58:14 194

原创 HDU 6051 If the starlight never fade - 找规律

打个表不难发现fm(i)=m((i,p−1)−1)fm(i)=m((i,p−1)−1)f_m(i)=m((i,p-1)-1),然后随便反演一下即可。 证明略。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<assert...

2018-08-27 12:49:04 272

原创 动物园 - 树剖 - 主席树

给你一棵树,支持链加,和给定一条路径x-y,假设从y走到x的权值序列是{a},求 ∑iaii2−∑iaii2∑iaii2−∑iaii2\frac{\sum_{i}a_ii^2-\sum_{i}a_ii}2,还有返回到之前某个版本。 题解:直接树剖然后可持久化掉线段树即可,维护区间∑iikai,k≤2∑iikai,k≤2\sum_{i}i^ka_i,k\le2即可。#include<i...

2018-08-24 21:23:14 212

原创 [POI2015]bzoj 4383 Pustynia - 线段树优化建图

每次建一个辅助点然后线段树优化建图即可,注意特判a[i]≤109a[i]≤109a[i]\le10^9.#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>#define gc getchar()#de...

2018-08-24 18:27:35 181

原创 AGC 016 E Poor Turkeys - 乱搞

一开始肯定会想到如何判断一个鸡a是否能够不死,考虑所有和a有关的事件(a,b,t),相当与是为了使得a活就要钦定b在t时刻死而在t-1时刻仍然是活的。因此在考虑和b有关的早于t时刻发生的事件(b,c,t2),t2#include<iostream>#include<cstring>#include<cstdio>#include<algorith

2018-08-24 18:25:45 265

原创 ARC 062 E Building Cubes with AtCoDeer

枚举前后两个面是啥,然后卡常即可。观察样例可以发现这样会计算每种情况24遍。 (我也不知道为啥啊XD)#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<unordered_map>#define N 410#d...

2018-08-23 12:44:59 311

原创 [HNOI2015] BZOJ 4011 落忆枫音 - dp

考虑依然用随便选的答案减去含环的答案。 含环的答案就是\prod_{x不在环上}#{x的入度},也就是所以点的度数的乘积除以在环上的点答案,对环做dp即可。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>...

2018-08-23 12:42:19 175

原创 AGC 009 B Tournament - 贪心

傻逼题#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#define gc getchar()#define N 100010#define debug(x) cerr<<#x<&

2018-08-23 12:37:35 188

原创 Mys_C_K的质数集合计数好题 - 数论

定义F(n)为n中不同的质因子个数,求:∑ni=12F(i),n≤1012∑i=1n2F(i),n≤1012\sum_{i=1}^n 2^{F(i)},n\le 10^{12}首先考虑一个O(n23)O(n23)O\left(n^{\frac23}\right)的暴力,即2F(i)2F(i)2^{F(i)}是在枚举i的质因子集合的子集。那么改成枚举这个子集k,那么有恰好⌊nk⌋⌊nk⌋\lef...

2018-08-22 20:54:08 271 1

原创 ARC 079 F Namori Grundy - 结论题 - 基环树

如果给你一棵树那么答案显然是p并且每个点权值固定。 先把所有环上的边断开考虑每个环上的点,求出一个权值。 环边的影响是,如果有x->y,并且a(x)=a(y)那么此时a(x)会变大为a’(x),继而若z->x并且a(z)=a’(x),那么a(z)会变大,依次类推。 显然有影响的边x->y当且仅当a(x)>=a(y),这样就能够把环拆成若干链,不同的链互补影响,并且每一...

2018-08-22 15:39:12 312

原创 AGC 006 F Blackout - 结论题

一个联通块如果不能三染色答案是点数平方 否则若最长链长度不超过1答案是原来的边数 否则任意两个不同颜色的点可以单向到达。 不知道为啥是对的。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define N 100010#define ...

2018-08-22 15:33:24 202

原创 [Scoi2015] bzoj 4444 国旗计划 - 倍增

首先把环写两遍展开。 然后考虑必须选一个区间,只需要把这个区间作为最左边的区间开始选(因为如果左面还有区间等价于放到右面处理)。 用倍增维护这个过程即可。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<climits...

2018-08-22 15:30:55 202

原创 ARC 068 e Snuke Line - 树状数组

观察到长度>=d的区间一定包含某个kd,否则最多包含一个kd。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#define N 300010#define gc getchar()#defi...

2018-08-21 20:57:02 217

原创 [学习笔记] Mys_C_K的独立集好题 - 动态dp - 树剖 - 线段树

注意修改的时候要先从上到下减去,然后修改好后从下到上加上。 注意轻边的信息是真的dp值,特判空信息。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define lint int#define gc getch

2018-08-21 12:41:08 230

原创 bzoj 4712 洪水 - 动态dp - 树剖 - 线段树 - 矩阵乘法

动态dp入门题,转移有结合律可以写成矩阵的形式,特判叶子。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<climits>#define gc getchar()#define lint long long#de...

2018-08-21 12:37:29 317

原创 AGC 004 F Namori

神仙题#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<stack>#include<assert.h>#define gc getchar()#define N 100010#define clr(...

2018-08-20 16:50:16 282

原创 AGC 004 E Salvage Robots - dp

考虑设dp[a,b,c,d]表示E移动的历史最上左下右到哪里,以及对应的表示出(L,R,U,D)表示E目前最左右上下可以走到哪里,然后每次转移形如a–或b–或c++或d++,然后你发现只要能a–就能得到第a-1行[max(L,b),min(d,R)]的所有机器人,注意边界情况和内存。#include<iostream>#include<cstring>#includ...

2018-08-20 16:42:55 236

原创 bzoj 4671 异或图 - 线性基 - 容斥

首先考虑容斥,令x为某种集合划分,a(x)表示x不同集合的点不连通,|x|表示x种联通块个数,那么需要构造容斥系数f(y)使得: ans=∑xa(x)f(|x|)ans=∑xa(x)f(|x|)ans=\sum_{x}a(x)f(|x|) 考虑令g(x)表示x种同集合的点必须连通,不同集合的点必须不连通的方案数,那么答案是g(1,2,3,...,n)g(1,2,3,...,n)g({1,2,3...

2018-08-18 17:47:25 280

原创 ARC082 F Sandglass - 乱搞

考虑对于每个时刻p,维护当a在L[p]和R[p]变动的时候,ans[p]变动也是连续的。 这个其实真心很好维护,然后就没了。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<climits>#define P(a...

2018-08-17 14:15:50 251

原创 AGC 004 DTelepoter - 贪心

首先环长=1 然后变成树,从下到上贪心即可。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define gc getchar()#define N 100010

2018-08-17 14:11:07 249

原创 ARC 076 F Exhausted? - 网络流 - 霍尔定理 - 线段树

首先可以前缀和优化网络流建图并得到TLE的好成绩。 可以直接用霍尔定理(准确的说是其推广)转化,但是突然忘了Hull定理是啥了。 网上很多贪心都是错的,最经典的例如按照左端点排序相同就看右端点的做法可以被n=m=4, (1,3), (2,4), (2,5), (0,4)卡掉。 然后还是回来考虑网络流,开始思考这个特殊的网络流有什么转化方式可以直接做,人脑了1h后弃疗。 紧接着突然意识到最大...

2018-08-17 14:02:01 348

原创 Mys_C_K的多项式计树好题 - dp - 多项式理论

给定N, MN, MN,\ M,对于每个x∈[1, M]x∈[1, M]x\in [1,\ M],求有多少无编号有根二叉树(区分左右儿子),满足: 1)其有xxx个叶子节点; 2)对于任意非叶子节点,其都有两个儿子节点; 3)对于从根出发的任意一条路径,向左走的次数不超过NNN。 答案对998244353998244353998244353取模,并注...

2018-08-16 21:30:07 406

原创 AGC 006 E Rotate 3x3 - 树状数组

先把奇怪的情况判掉。 首先列在逆序对的问题上独立,其次一个显然的必要条件是偶数列的倒转奇偶性应该和奇数列的逆序对数的奇偶性相同,其次玩一玩就会发现这个是充分的。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define Asrt(x) if(...

2018-08-16 15:48:15 310

原创 AGC 014 D Black and White Tree - 树dp

结论是后手必胜当且进当存在完美匹配。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#define gc getchar()#define N 100010#define pb push_back...

2018-08-16 15:45:22 172

原创 AGC 003 F. Fraction of Fractal - dp - 矩乘

没啥好说的,大家翻LCA的blog吧,里面定义ud和lr打反了,其余是对的。 最主要的就是根据C=V-E这个事情。 LCA#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define rep(i,a,b) for(int i=

2018-08-16 15:43:55 277

原创 ARC 006 D Median Pyramid Hard - 二分

首先二分答案,>=mid的看作1,否则是0。那么将和两侧不同的位置称作孤立的,特殊的最旁边两个不是孤立的。发现每一次操作后孤立的会被翻转,不孤立的不会变,和不孤立的相邻的孤立的会变成不孤立的,那么一个一开始孤立的最终是啥取决于其向左向右扩散遇到的第一个不孤立的是啥。因此做完了。#include<iostream>#include<cstring>#includ...

2018-08-15 19:39:33 191

原创 AGC 002 D Stamp Rally - 分块

显然可以整体二分加可持久化并查集但是注意到撤销不需要可持久化可以直接按秩合并;其次注意到二分之后可以直接kruskal重构树;然而我都不想写,所以就随手敲了一个分块,然后精细的实现可以做到空间线性。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#...

2018-08-15 19:35:19 242

原创 AGC 008 F Black Radius - 树dp

全机房的人讨论了很长时间最后感谢STL直接看了日文题解翻译了过来。 做法是这样的:一开始都以为是什么枚举x然后枚举d,光荣gg。 因此我们考虑枚举你染黑的连通块的中心(也就是所有直径的中点)。 有两种情况: 1)中心是一个点; 2)中心是一条边的中点;对于1),考虑将其置为根rt,则连通块的“半径”是一个区间(半径就是说这个联通块的直径的一半)。首先考虑其上界R:答案就是来自不同...

2018-08-15 17:13:09 277

原创 ARC 080 F Prime Flip - 网络流

首先长度为1的区间可以三次翻转,3+5-7。 长度为2的区间可以二次翻转,5-3。 长度为奇质数的区间可以一次翻转。 长度为4的区间可以二次翻转,7-3。 长度>=6并且是偶数的区间可以根据歌德巴赫猜想拆成两个奇质数的和。 长度>=9并且是奇合数的区间可以根据原歌德巴赫猜想拆成三个奇质数的和。 综上可以归纳: 1,长度是奇质数的区间可以一次翻转; 2,长度是偶数的区间可...

2018-08-14 15:28:57 260

原创 ARC 075 D Mirrored - 搜索

首先把N写出来,然后把r(N)-N写出来,发现这玩意个位%10是个定植,要么是x要么是x-10(0<=x< 10)。然后再确定十位数,依次类推,2的len/2次枚举每一位到底是啥即可。注意当x=0的时候只有一种可能。#include<iostream>#include<cstring>#include<cstdio>#include<...

2018-08-14 15:18:10 186

原创 ARC 074 E RGB Sequence - dp

搞一个dp[i][j][k]表示前i个位置,另外两种颜色的位置是j和k,并且i>=j>=k。然后没了。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<utility>#define upd(x,y) (x...

2018-08-14 15:13:15 226

原创 ARC 062 Painting Graphs with AtCoDeer - 点双联通分量 - Polya计数

首先不同联通块互不影响。 其次割边会进一步划分连通块为点双,即不在任何一个环上的边会对答案乘以k。 如果是一个环就是Polya计数的经典题。 否则,需要把所有的环拿出来并枚举怎么转,也就是说多个环的情况下没法用两个环的旋转表示两个环的异或的旋转,因此这个置换群会非常庞大。 但是如果两个环相交,那么可以把其中一个视作辅助用的三元环(也就是在归约问题),进而变成最简单的两个三元环有一条公共边的...

2018-08-13 15:19:18 291

原创 bzoj 3998 弦论 - SAM

SAM入门题#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#include<queue>#include<assert.h>#define pb push_back#de

2018-08-13 15:11:59 169

空空如也

空空如也

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

TA关注的人

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