- 博客(51)
- 资源 (1)
- 收藏
- 关注
原创 bzoj5384 有趣的字符串题 回文树+树状数组+离线
Description给一个长度为n的字符串,m次询问(l,r)求l到r内本质不同的回文子串数量Solution老年选手复习回文树。。考虑暴力怎么写。我们离线询问按照r排序,每次在回文树上暴力跳fail统计以r为结尾的新增回文串。注意到每一个回文串影响的左端点是一个区间,那么我们用树状数组区间加就可以了。这样做是O(n^2logn)的有一个小结论就是,所有以r为结尾的回文串的长度一定...
2019-04-30 09:14:08 746
原创 loj #3088 「GXOI / GZOI2019」旧词 离线+树链剖分
Descriptionn个节点的树,m次询问(x,y)求∑i=1x(dep[lca(i,y)])k\sum_{i=1}^x{{\left(dep[lca\left(i,y\right)]\right)}^k}i=1∑x(dep[lca(i,y)])k其中k是一个给定的常数Solution观察k=1的时候要怎么做。我们离线按x排序,对于一个节点t把根到t路径上的所有点全部+1。那么y...
2019-04-28 17:18:01 217
原创 loj #3085 「GXOI / GZOI2019」特技飞行 扫描线+树状数组+计算几何
Description太长了自己看。。。Solution强行题套题,真·GDOI模拟首先可以发现A和B操作都不会影响交点的位置,那么C的贡献就是固定的了。这个可以先求出交点然后转换坐标系二维数点,离线拆分扫描线+树状数组就行了。因为有可能是实数所以离散不太好写考虑什么时候能交换就交换。注意到一次相交意味着二者在最后会交换顺序,因此每个交点都做一次A恰好能满足初始相对顺序,且在A>...
2019-04-24 19:49:33 347
原创 AtCoder Regular Contest 098 题解
C - Attentionsb题,我们前缀后缀和一下直接O(N)算贡献就可以了#include <stdio.h>#include <string.h>#include <algorithm>#define rep(i,st,ed) for (int i=st;i<=ed;++i)const int INF=0x3f3f3f3f;con...
2019-04-22 21:58:08 758
原创 AtCoder Regular Contest 097 题解
C K-th Substringk才5,随便做都行。当然也可以SAM求第k大#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>#include <string>#define rep(i,st,ed) for (int ...
2019-04-22 15:06:16 236
原创 AtCoder Regular Contest 102F Revenge of BBuBBBlesort! 乱搞
Description给一个n排列p[],若存在一个位置i使得p[i-1]>p[i]>p[i+1],那么就可以交换p[i-1]和p[i+1]Solution真·感性乱搞+分类讨论首先记a[i]=[p[i]=i],那么我们可以把p分成若干段01交替出现、首尾皆为0的子串。由交换性质可知这些段之间互不影响,即交换不会跨过这些段考虑一整段[l,r]什么情况会No。如果出现了最...
2019-04-21 21:31:54 659
原创 AtCoder Regular Contest 102 E Stop. Otherwise... 组合数学
Description有n个k面骰子。对于i=2…2k,问存在多少种扔骰子的方案使得最终结果不存在两个骰子之和恰好等于i我们认为所有骰子是一样的n,m≤2000n,m\le2000n,m≤2000Solution首先肯定要枚举这个i我们发现有些数字是可以随便出现的,其余的数j一定对应了一个数i-j表示它们不能同时出现并且可以知道当且仅当i为偶数的时候存在一个(i/2,i/2)的对...
2019-04-21 20:40:28 238
原创 loj#6495「雅礼集训 2018 Day1」树 dp
Description定义生成一棵树的方式:对于节点i从[1,i-1]随机一个父亲。求这棵树的期望高度n≤24n\le24n≤24Solution设f[i,j]表示i个节点高度为j的方案数。注意到2的父亲一定是1,我们可以枚举2为根的子树的情况,然后讨论一下能否成为最大值就行了转移看代码。。Code#include <stdio.h>#include <st...
2019-04-19 10:40:16 637
原创 loj#6030 「雅礼集训 2017 Day1」矩阵 贪心
Description给一个n*n的01矩阵,每次可以用一行替换一列。问最少多少次操作使得整个矩阵全1n<=1000Solution先考虑怎么把一整行刷成1。我们枚举全1的行设为x,若存在第x列为1的行则可以填上第x行的0,否则我们可以多操作一次任意选一个存在1的行使得某行的第x列为1,然后照做就行了Code#include <stdio.h>#include...
2019-04-18 20:15:35 232
原创 jzoj6133 [NOI2019模拟2019.4.18]商店 线段树模拟费用流
DescriptionN,M≤3e6N,M\le3e6N,M≤3e6Solution求dfs序的时候爆栈了QUQ考虑人和商品建点跑费用流,优化一下可能可以跑1e5?观察我们费用流实际上在干什么,就是从一个子树内选出最大的权值然后把它取反。那么我们可以用线段树维护dfs序区间最大值来搞这个东西。由于直接做没法退流因此需要按照dfs序降序贪心考虑到时限只有1s,nlogn要跑3e6,我...
2019-04-18 15:34:37 266
原创 CF961G Partitions 组合数学
Description有n个带权物品,要把它们分成k个集合定义一个分法的权值为每个集合的大小*集合内权值之和问所有分法权值之和Solution一开始没看到要乘上一个集合大小。。以为是sb题讲一个头铁娃的做法显然每个物品对答案贡献的系数都是一样的。考虑枚举一个物品所在集合的大小s,那么有∑s=1ns(n−1s−1){n−sk−1}\sum_{s=1}^{n}{s\binom{n-...
2019-04-17 18:27:14 300
原创 CS Academy Round 75 Permutations NTT
Descriptionq次询问(x,y),求长度为n的排列p[],满足p[y]是前y个中最大的,且p[x]*2<p[y]的数量Solution考虑枚举第y位选了啥,那么第x位的范围就出来了,于是答案就是f(y)=∑i=1n⌊i−12⌋(i−2y−2)(y−2)!(n−y)!f(y)=\sum_{i=1}^n{\lfloor\frac{i-1}{2}\rfloor\binom{i-2...
2019-04-17 12:28:48 449
原创 洛谷P4233 射命丸文的笔记 分治NTT+竞赛图
Description给定n对于i从1~n,输出i个点组成竞赛图中,哈密顿回路的平均数量Solution竞赛图存在哈密顿回路的充要条件就是强连通设f(n)f(n)f(n)表示n个点形成强连通竞赛图的方案数,一个简单的容斥就是f(n)=2(n2)−∑i=1n−1(ni)f(i)2(n−i2)f(n)=2^{\binom{n}{2}}-\sum_{i=1}^{n-1}{\binom{n}...
2019-04-16 21:51:30 241
原创 uoj#213 [UNR #1]争夺圣杯 单调栈+差分
Description给一个长度为n的序列,定义一个区间的权值为区间内最大值。记ans[i]表示长度为i的所有区间权值之和膜998244353问ans的异或和n≤1e6n\le1e6n≤1e6Solution考虑求出元素i作为最大值的区间[L[i],R[i]],记左右区间中较短的为mn,较长的为mx。我们讨论一下对于各个长度的区间这个位置的贡献是啥当x<=mn时,区间至少要包...
2019-04-16 20:45:56 238
原创 CF555E Case of Computer Network 边双连通分量+树上差分
Description有一个n个点m条边的无向图,q个限制形如(x,y)。问能否找到一种给边定向的方式使得满足所有的限制可以从x到达ySolution复习一下图论的一些东西一个边双内的点肯定可以定成内部互达的情况。缩完边双之后就可以得到一个森林,我们用打标记的方式在这个森林上乱搞就可以知道是否存在两个限制它们产生了冲突。Code#include <stdio.h>#...
2019-04-16 15:08:26 267
原创 loj#2562 「SDOI2018」战略游戏 圆方树+虚树
Description给一个无向连通图,多次询问一个点集S,问去掉哪些点后S集合不连通,S中的点显然不能算。n≤2∗105,  ∑∣S∣≤2∗105n\le2*10^5,\; \sum {|S|}\le2*10^5n≤2∗105,∑∣S∣≤2∗105Solution会破坏连通性的点容易发现就是建好圆方树后的圆点我们把S集的虚树搞出来,求一下这个虚树内部有多...
2019-04-16 10:47:11 144
原创 hdu6036 Division Game 容斥+组合数学+NTT
Description有0~k-1共k束花,每一束花中有m种颜色的花,第i种颜色有e[i]朵第x次操作将会从第x%k束花中摘走至少一朵花,当一朵花被摘完游戏结束对于i=0~k-1输出游戏在第i个位置恰好结束的方案数Solution每次至少摘一朵,那么游戏至多进行n=∑i=1mein=\sum_{i=1}^{m}e_in=∑i=1mei轮设f(x)f(x)f(x)表示在某个位置第...
2019-04-15 22:06:01 150
原创 bzoj5217 [Lydsy2017省队十连测] 航海舰队 FFT+bfs
Description有一个矩阵,有的位置有障碍现在有一些关键点,每次这些关键点可以朝同一个方向同时走一步,要求任意关键点不能走到障碍上。问多少个点是可达的n,m≤700n,m\le700n,m≤700Solution30分非常好写,只需要暴力bfs就可以了,字面意义上的暴力60分就是记录左上角,然后二维前缀和一下bfs先把包含关键点的最小矩阵抠出来,关键点移动就可以看成矩阵平移...
2019-04-15 19:09:24 158
原创 bzoj5219 [Lydsy2017省队十连测]最长路径 容斥+dp
Description给定n和p对于i从1到n,求n个点形成的,从1出发最长路恰好为i的竞赛图数量,对p取模n≤2000n\le2000n≤2000Solution由一些小常识可以知道,竞赛图一定存在一条哈密顿路径,且强连通分量缩点之后形成的,一定是一条若干scc形成的链,拓扑序小的scc向后连满边也就是说,1为起点的最长路,一定是从1出发,向后走完所有scc。所以最长路=n-[1...
2019-04-15 15:37:29 213
原创 CF1103B B Game with modulo 交互题 倍增 二分答案
Description交互题有一个未知数a,你可以询问? x y,题目会回答你[(x%a)>=(y%a)]。问能否在60次询问内找到这个aSolution可以发现若? x y回答了"x",那么可以保证a在区间[x+1,y]内,于是一个比较显然的响法就是我们二分这个区间,但这样是错的考虑f(x)=x%a这个函数的图像,大概长这样我们要找的实际上就是这个函数的第一个零点,而若我...
2019-04-14 21:07:49 263
原创 Codeforces Round #551 (Div. 2) 题解
BG周六超多比赛,为了上分还是只打了cf。。本来想上橙的。。甚至第一次赛前打好了各种模板。。。被hack到心态崩了A很显然我们记r[x]表示时刻x的任意一个bus,跑一个2e5*n的暴力就可以了挂了是因为只跑了1e5,怀疑人生Code#include <stdio.h>#include <string.h>#include <math.h>...
2019-04-14 20:09:03 346
原创 vijos lxhgww的奇思妙想 长链剖分
Description给一棵n个节点的树,m次询问一个节点x的k级祖先。强制在线Solution一个做法是倍增另一个做法是长链剖分。同重链剖分一样,我们定义深度最大叶子所在儿子作为长儿子。一个性质是,节点x的k级祖先所在重链长度不会小于k。正确性的话可以考虑反证一下。也就是说,我们取出k的最高位二进制设为r。我们先让x向上跳r步,r所在的重链长度至少为r。对于每条重链我们维护它向上...
2019-04-13 13:59:29 194
原创 loj#3058 「HNOI2019」白兔之舞 MTT+单位根反演+矩阵快速幂
Description自己看吧Solution考场上只想到了n=1的O(L)做法,死于姿势不足不会单位根反演.jpg正解是真的难写,套一个MTT是最恶心的。。考虑20分怎么做,一个比较naive的dp就是f[i,j]表示走了i步到了第j列的方案数,nL2转移就可以成功签到了考虑n=1的情况怎么做。当w=1时,可以发现走恰好d步的方案就是一个组合数,那么答案实际上就是f(d)=∑i=...
2019-04-11 20:40:13 206
原创 loj#3057 「HNOI2019」校园旅行 dp
Description给一个n个点m条边的无向图,每个点有个权值0或1。q次询问x,y求是否存在一条从x到y的路径使得经过节点的权值连接起来是一个回文串n≤5e3,m≤5e5n\le5e3,m\le5e5n≤5e3,m≤5e5Solution这个是loj加强过的数据。。原题好像是3e3的m2的做法就是按照原图dp,设f[x,y]表示x到y有一条合法路径,枚举x和y的邻边转移就可以做到...
2019-04-11 11:57:18 300 1
原创 AtCoder Regular Contest 068F Solitaire dp
Description有一个双端队列,按照1…n的顺序把n个卡片放进队头或队尾得到一个满的队列然后每次可以从头或从尾取一个数字取n次,这样得到一个长度为n的序列。问1恰好在k这个位置的方案数Solution这题好劲啊可以发现几个小性质。首先队列里的元素一定是先减后增的,并且由于1在k这里,所以前k-1个数字必须是一个或两个单调下降序列,而后面n-k-1个随便从队列两端选。然后我就不会...
2019-04-11 10:47:58 416
原创 AtCoder Regular Contest 068E Snuke Line 离线+树状数组
Description有m+1个站台,n个物品,其中第i个物品在第l[i]到第r[i]个站台都有的买一个人从0开始每次走d步,买下能买的物品,问能买到多少种不同的物品,对于d=1…m输出答案Solution看了半天才弄明白会买到同样的物品只算一件。。一个错误的做法是我们把物品区间加然后枚举d求和。由于有的物品区间长度>d,导致它会被算多次于是做法就很显然了,我们把长度>...
2019-04-11 08:23:31 163
原创 bzoj3328 PYXFIB 矩阵快速幂+单位根反演
Description给定n,k,pn,k,pn,k,p,保证k≡1(modp)k\equiv 1\pmod pk≡1(modp)求∑i=0⌊nk⌋(nki)F(ki)(modp)\sum_{i=0}^{\lfloor\frac{n}{k}\rfloor}{\binom{n}{ki}F(ki)}\pmod {p}i=0∑⌊kn⌋(kin)F(ki)(modp)其中F(i)是斐波那契数...
2019-04-10 20:39:31 162
原创 HNOI2019 vp游记
BG作为GD的菜鸡选手来了一场vp,题目都好神仙啊Day1顺序开题T1计算几何看起来不可做,想了一会儿写一个n6的暴力就扔了然后看T2,根据一些套路可以知道这样等价于在建一个树形结构,30分貌似就是暴力kmp,50分大概离线一下?T3以为又是计算几何,撕烤之后并不会拿最低部分分,心态崩了然后开始淦T2,求稳先是搞了一个30分,然后改一改写了一个假的50分。为什么说是假的因为跳2操...
2019-04-10 16:06:16 358
原创 AtCoder Regular Contest 073F Many Moves 线段树优化dp
Description有一排n个格子,一开始两个棋子在a和b。一个长度为m的操作序列要求第i次要将一个棋子移动到第x[i]个格子。一次移动代价为两格子之间距离,最小化代价之和n≤2e5n\le2e5n≤2e5Solution非常套路的dp,设f[i,j]表示一个棋子在x[i],另一个在j的最小答案,保证j<x[i]。转移的话我们往后推看是哪个棋子移动到了x[i+1]就好了,这样...
2019-04-10 09:19:37 169
原创 AtCoder Regular Contest 074F Lotus Leaves 最小割
Solution一个非常显然的做法就是我们拆点,然后连边跑最小割。这样边数是2(n2m+m2n)的,好像只会T一个点另外一个非常显然的做法就是我们按行列建二分图,那么点就变成边的限制了,这样边数是2nm的,非常优秀Code#include <stdio.h>#include <string.h>#include <algorithm>#incl...
2019-04-09 20:50:11 138
原创 Atcoder Regular Contest 077E guruguru 前缀和+贪心
Description赶时间,自己看题吧。。Solution考虑枚举x的位置算答案,直接做是O(nm)的注意到x向后的每个位置减少的贡献是等差数列,那么我们单点修改然后两次前缀和就ojbk了看了一下别的题解比好像只用一个数组就可以了Code#include <stdio.h>#include <string.h>#include <algori...
2019-04-09 17:37:38 197
原创 AtCoder Regular Contest 078F Mole and Abandoned Mine 状压dp
Description给n个点m条边的无向连通图,每条边带边权。现在要删掉一些边使得1到n的简单路径数量恰好为1,问删掉边的边权之和最小是多少n≤15n\le15n≤15Solution数据就很状压,转换一下求选择边权的最大值一个小性质就是,答案肯定是一条1到n的路径加上若干连出去的满连通块。这个可以画图感性一下然后就可以用这个小性质dp了。设f[i,S]表示从1走到i,选择了S这...
2019-04-08 21:53:24 134
原创 AtCoder Regular Contest 079F Namori Grundy 乱搞
Description给出一个n个点n条边的有向图,保证每个点出度为1问能否给每个节点染色,使得每个节点的颜色为所有出边连向点的颜色的mexSolution题图就是一个环套树,并且边是向着环的考虑树的情况,肯定可以染色,并且每个节点的答案c[x]就是我们在树上做mex考虑环的情况,肯定染成01交替,出现奇环就是IM可以证明此时的出来的c[]是染色的一个下界组合在一起就是,当出现...
2019-04-08 19:13:39 159
原创 AtCoder Regular Contest 082E ConvexScore 乱搞
Description给n个平面上的点。定义一个点的集合S的权值为2|S|-|T|,其中T是集合S在凸包上的点求所有点的集合的权值之和Solution看不懂题是最大的阻碍。。那个|S|-|T|实际上就是凸包内部的点,那么S权值的含义就是那些点集的凸包和S的凸包相同于是问题就变成了可以任意选点,问组成凸包的数量。这个我们减去单点和直线的情况算答案就可以了Code#include...
2019-04-08 12:25:06 99
原创 Codeforces Global Round 2 部分题解
BG周六的时候不太敢打,现在来看前几题还是很温暖的。。An个数字,找到两个位置i和j使得a[i]!=a[j]且i-j最大sb题,随便做。我写了动态开点线段树来维护前缀后缀minCode#include <stdio.h>#include <string.h>#include <algorithm>#include <map>...
2019-04-08 09:55:11 142
原创 CF1142C U2 单调栈
Description已知两个x坐标不同的点可以确定一个二次项系数为1的二次函数。现在给出n个点,问n^2个二次函数中有多少个图像不包含任何给出的关键点n≤105n\le10^5n≤105Solutiony=x2+bx+c,我们移项得到y-x2=bx+c,令y=y-x^2,那么就变成若干条直线求一个凸壳当然直接做也可以,原理和上面是一样的Code#include <st...
2019-04-07 14:32:59 261
原创 CF1142B Lynyrd Skynyrd 倍增+可持久化线段树
Description给一个n排列p,一个长为m的序列a,q次询问[l,r]求l到r是否存在长度为n的子序列恰好与p循环同构n,m,q≤2∗105n,m,q\le 2*10^5n,m,q≤2∗105Solution用图表示这个东西就是a按照p中的顺序向后连边,题目就等价于问l到r能不能走完n-1步了考虑倍增这个东西,那么我们就能求出以x为起点向后n-1步最前到哪里,然后可持久化线段树...
2019-04-07 11:48:13 220
原创 CF1142A The Beatles 乱搞
Description有n*k个城市排成一个环,其中第1,k+1,2k+1…个城市是关键点现在有个人从s出发,每次走l步后停下。已知这个人从s出发后走了x步又回到了s,且s与其最近关键点的距离恰好为a,第一次停下的位置与其最近关键点距离恰好为b,问可能的最小的x和最大的xn,k≤105n,k\le10^5n,k≤105Solution开了div1的vp只会A和B,瑟瑟发抖考虑暴力怎...
2019-04-07 11:41:36 485
原创 bzoj3012 [Usaco2012 Dec]First! trie+拓扑排序
Description给n个串,对于每个串输出是否存在一种字符的大小关系使得这个串是字典序最小的总长<=3e5Solution首先如果串A是串B的前缀那么B肯定不会是最小的要让一个串S字典序最小,也就是所有与S前缀相同的串T,S和T不同的第一个字符位i我们得钦定S[i]<T[i]推到这个结论就很好做了,我们建trie,然后用单向边表示字母的大小关系,若出现了环说明肯定不...
2019-04-07 08:26:26 239
原创 JOISC2019 D1
A这个A有点简单啊。。我们把A、B、A+B分别看作三维,那么就是裸的三维偏序问题了一开始wa了一发因为没有管坐标相同的时候询问要在人的后面~Code#include <stdio.h>#include <string.h>#include <algorithm>#define rep(i,st,ed) for (int i=st;i<=e...
2019-04-04 15:12:18 213
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人