- 博客(47)
- 收藏
- 关注
原创 【TJOI/HEOI2016】【BZOJ4555】【LOJ2058】求和
【题目链接】BZOJ4555LOJ2058【前置技能】NTT斯特林数【题解】∑i=0n∑j=0iS(i,j)∗2j∗j!\displaystyle \sum _{i=0}^{n} \sum _{j=0}^{i} S(i, j)*2^j*j!i=0∑nj=0∑iS(i,j)∗2j∗j!=(∑i=1n∑j=1nS(i,j)∗2j∗j!)+1= \displaystyle ...
2018-11-26 22:00:17
242
原创 NOIP2018游记
Day-N~Day-1每天晚上都睡不好觉,基本都是梦到自己在爆零现场。越是紧张,越是训练爆零;越是训练爆零,越是紧张。陷入恶性循环。Day0在和逻辑鬼才ob商量了很久之后终于确定自己是要坐大巴车去。路上当然是搓牌啦,和gxl搓了一路的牌,从小猫钓鱼到抽乌龟到争上游,一局都没有赢,有点挫啊。到了宾馆也都是些拿胸牌手册,然后开开会的基本操作,没什么好细说的。值得一提的是,今年人数明显增多...
2018-11-22 13:14:45
230
原创 【JSOI2007】【BZOJ1031】字符加密Cipher
【题目链接】BZOJ1031【前置技能】后缀数组【题解】把原字符串复制倍长,进行后缀排序,然后按照要求输出即可。【代码】#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define LL long long#define MAXN 200010using namespace std;char s[M...
2018-11-21 19:47:06
209
原创 【ZJOI2015】【3926】诸神眷顾的幻想乡
【题目链接】BZOJ3926【前置技能】后缀自动机/后缀树【题解】发现叶节点的个数非常少,所以建立叶节点路径上的字符串的广义后缀自动机,然后统计一下本质不同的子串的个数即可。时间复杂度O(N∗X)O(N*X)O(N∗X)(XXX为叶节点个数)【代码】#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define
2018-11-19 10:08:29
250
原创 【HNOI2008】【BZOJ1009】T考试
【题目链接】BZOJ1009【前置技能】DP矩阵乘法AC自动机KMP【题解】预处理出每一位后面填000~999可以走到哪一位,DP状态:f[i][j]f[i][j]f[i][j]表示现在是第iii位数字,匹配到第jjj位。转移比较显然,不多赘述。因为nnn比较大,所以要用矩阵乘法优化转移。这里觉得AC自动机写起来比较方便,所以代码给出的是AC自动机的写法。时间复杂度O(...
2018-11-19 09:53:49
163
原创 【NOI2015】【BZOJ4199】【UOJ131】【LOJ2133】品酒大会
【题目链接】BZOJ4199UOJ131LOJ2133【前置技能1】后缀数组并查集【题解1】首先有一件题目描述中提到的事实:两杯“ r 相似”(r > 1)的酒同时也是“ 1 相似”、“ 2 相似”、……、“ (r − 1) 相似”的,即如果一些后缀是至少xxx相似的,一些后缀是至少yyy相似的,两个集合之间最大的相似度为z(x≥z,y≥z)z(x\geq z, y...
2018-11-16 08:11:09
184
原创 【九省联考2018】【BZOJ5249】【LOJ2472】iiidx
【题目链接】BZOJ5249LOJ2472【前置技能】贪心线段树【题解】对于所有did_idi互不相同的部分分,有一个贪心的做法。先把所有数排序并且假装有一个虚拟的000号节点,首先,根节点一定要取最小的数(000号节点就不管它),对于其他子树,把较大的数值预留给编号小的子树,然后分治下去做。但是当不保证did_idi互不相同的情况下,这个算法就是错误的。举一个简单...
2018-10-25 22:10:27
211
原创 【ZJOI2010】【BZOJ2111】排列计数
【题目链接】BZOJ2111【前置技能】Lucas定理组合数学【题解】比较简单的理解方法应该是认为这是一棵堆式存储的二叉树,即iii号节点的父亲是⌊i2⌋\lfloor \frac {i}{2} \rfloor⌊2i⌋号节点。问题就是求满足父亲的权值比儿子小的排列的方案数。首先,根节点一定是最小的数,然后其余的数字就会分给左右两棵子树。发现两棵子树相互之间是不影响的,且将...
2018-10-22 21:35:29
235
原创 【ZJOI2008】【BZOJ1040】【LOJ10162】骑士
【题目链接】BZOJ1040LOJ10162【前置技能】树形DP【题解】题意是:给出一个环套树森林,求最大独立集。先考虑如何做树上的最大独立集的DP,这个问题比较基础。f[pos][0/1]f[pos][0/1]f[pos][0/1]表示以pospospos为根的子树中选了/没选节点pospospos的答案。转移方程f[pos][1]=∑f[son][0]f[pos][1]...
2018-10-22 21:04:12
223
原创 【SDOI2016】【BZOJ4516】生成魔咒
【题目链接】BZOJ4516【前置技能】后缀树【题解】要求支持向字符串后加一个字符,询问字符串中本质不同的子串的个数。考虑建立原串的反串的后缀树,新出现的反串的后缀对于答案的贡献为dep[pos]−dep[fa[pos]]dep[pos] - dep[fa[pos]]dep[pos]−dep[fa[pos]]。每次插入的时候维护一下答案即可。【代码】#include&l...
2018-10-10 12:28:44
145
原创 Codeforces Round #514 (Div. 2)
【比赛链接】Codeforces Round #514 (Div. 2)【A】Cashier【题意】一个人一天工作 lll 分钟,他有 nnn 段工作时间,给出开始时间和工作长度,保证工作时间是若干个按先后顺序排列的不相交的区间。在非工作时间里,这个人每 aaa 分钟能休息一次,求这个人最多休息几次。【题解】按题意模拟即可。注意不要漏掉最后剩下的时间。时间复杂度O(N)O(N)O(...
2018-10-07 21:44:04
174
原创 【JSOI2016】【BZOJ4753】最佳团体
【题目链接】BZOJ4753【前置技能】二分答案树上背包【题解】先二分一下答案(据说这个二分答案的过程也可以叫做0/1分数规划),假设现在二分的答案为midmidmid,检查是否存在符合条件的∑Pi∑Si≥mid∑Pi∑Si≥mid\frac{\sum P_i}{\sum S_i} \geq mid,移项整理,得到∑Pi−mid∗∑Si≥0∑Pi−mid∗∑Si≥0...
2018-09-14 08:23:19
183
原创 【HEOI2012】【BZOJ2743】采花
【题目链接】BZOJ2743【前置技能】线段树【题解】先预处理出nxtnxtnxt数组,nxt[i]nxt[i]nxt[i]表示下一个和iii号位颜色相同的的位置。考虑把询问离线下来,按左端点从小到大排序。对于每一个左端点开始的区间,让每种颜色第二次出现的位置做出一点贡献。左端点为111的可以简单处理好,那么每次左端点向右移一格的时候只要将线段树nxt[i]nxt[i...
2018-09-14 07:59:49
213
原创 【BZOJ4259】 残缺的字符串
【题目链接】BZOJ4259(权限题)【前置技能】FFT/NTT【题解】字符串中出现了通配符,一般的字符串算法就失去效果了。先忽略通配符的问题。令每个位置Ak=∑i=0LenT−1(Si+k−LenT+1−Ti)Ak=∑i=0LenT−1(Si+k−LenT+1−Ti)A_k=\displaystyle\sum_{i=0}^{LenT-1} (S_{i+k-LenT...
2018-09-05 19:41:30
220
原创 【SDOI2015】【BZOJ3992】序列统计
【题目链接】BZOJ3992【前置技能】数论(原根)快速幂NTT【题解】考虑如果题目要求的是是加法,令函数F(x)=∑xbiF(x)=∑xbiF(x) = \sum{x^{b_i}},那么就是求函数Fn(x) (modxm−1)Fn(x) (modxm−1)F^n(x)~(mod x^{m - 1})中xXxXx^X项的系数,多项式快速幂即可。...
2018-09-05 16:21:38
219
原创 【NOI2014】【BZOJ3669】魔法森林
【题目链接】BZOJ3669【前置技能】LCT【题解】题意是给出一张无向图,边权为ai,biai,bia_i,b_i,定义花费为经过的边的max{ai}+max{bi}max{ai}+max{bi}max\{a_i\} + max\{b_i\},最小化花费。如果只有一个边权,直接走最小生成树即可。考虑按aiaia_i从小到大向树上加边,即枚举max{ai}max{a...
2018-09-05 14:36:39
160
原创 【HNOI2010】【BZOJ2002】Bounce 弹飞绵羊
【题目链接】BZOJ2002【前置技能】LCT【题解】将每个位置向下一个弹跳到的位置连边,弹出去的连到点n+1n+1n+1。SPLAY维护大小sizesizesize,就可以支持查询点到根n+1n+1n+1的距离。时间复杂度O(QlogN)O(QlogN)O(QlogN)【代码】#include<bits/stdc++.h>#define I...
2018-09-05 14:03:57
129
原创 【SDOI2008】【BZOJ2049】Cave 洞穴勘测
【题目链接】BZOJ2049【前置技能】LCT【题解】LCT模板题,支持link,cut,以及判断树上两点间的连通性。时间复杂度O(QlogN)O(QlogN)O(QlogN)【代码】#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define LL long long#define MAXN...
2018-09-05 13:56:07
170
原创 【APIO2010】【BZOJ1911】特别行动队
【题目链接】BZOJ1911【前置技能】斜率优化DP【题解】设计状态f[i]f[i]f[i]表示已经将111 ~ iii号士兵编好队的最大战斗力。答案就是f[n]f[n]f[n]。令sum[i]sum[i]sum[i]表示111 ~ iii号士兵的战斗力之和,那么由题意可得,转移方程f[i]=max{f[j]+a∗(sum[i]−sum[j])2+b∗(sum[i]...
2018-08-25 10:26:08
160
原创 【USACO2008Mar】【BZOJ1597】土地购买
【题目链接】BZOJ1597【前置技能】斜率优化DP【题解】首先要发现如果一个矩形的长和宽都小于等于另一个矩形,那么在选择较大的矩形时一定可以顺便把较小的矩形选掉。一开始我们就以x[i]x[i]x[i]为关键字排序,用一个单调栈来筛选一下矩形。那么最后剩下的矩形一定是xxx递增,yyy递减。设计状态f[i]f[i]f[i]表示已经购买了111 ~ iii号土地的最少...
2018-08-25 09:48:41
227
原创 【ZJOI2007】【BZOJ1096】仓库建设
【题目链接】BZOJ1096【前置技能】斜率优化DP【题解】设计状态f[i]f[i]f[i]表示在第iii个工厂建立仓库,且111 ~ iii号工厂中的产品都已存储好的最少花费。答案就是f[n]f[n]f[n]。转移方程f[i]=min{f[j]+cost(j,i)}+c[i]f[i]=min{f[j]+cost(j,i)}+c[i]f[i] = min\{f[j]...
2018-08-25 09:35:06
210
原创 【NOI2018】【BZOJ5418】【UOJ396】【LOJ2721】屠龙勇士
【题目链接】BZOJ5418UOJ396LOJ2721【前置技能】数据结构(线段树,平衡树,set,map等)扩展中国剩余定理【题解】题目【代码】#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define LL long long#define MAXN 100010#defin...
2018-08-24 21:09:59
245
原创 【BZOJ2440】[中山市选2011]完全平方数
【题目链接】BZOJ2440【前置技能】反演容斥原理二分答案【题解】题目要求的是第kkk个μμ\mu值不为000的数,kkk达到了10910910^9,显然不能把μμ\mu全部筛出来直接暴力找。考虑二分答案,那么问题转化为求111~nnn中的μμ\mu值为零的数的个数,【代码】#include<bits/stdc++.h>#define ...
2018-08-09 12:58:10
250
原创 【NOI2018】【BZOJ5415】【UOJ393】【LOJ2718】归程
【题目链接】BZOJ5414UOJ393LOJ2718【前置技能】最短路Kruskal重构树【题解】题意是要求这么一个东西:在边权大于等于给定水位的某个联通块走到111号点的最短路。先从111号点跑一个单源最短路算法,令点权为最短路的长度,那么就是要求边权大于等于给定水位的某个联通块中的点权最小值。比较显然的事情就是,有用的边一定是最大生成树上的边。那么按照水...
2018-08-02 09:51:42
212
原创 【BZOJ4407】于神之怒加强版
【题目链接】BZOJ4407【前置技能】线性筛反演【题解】233【代码】#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define LL long long#define MAXN 5000010 #define mod 1000000007using namespace std;...
2018-08-02 08:21:07
192
原创 【BZOJ2142】礼物
【题目链接】BZOJ2142【前置技能】逆元扩展Lucas定理中国剩余定理【题解】简单理解一下题意,令wiwiw_i的和为sumsumsum,若sum>nsum>nsum>n则无解,否则题目要求的就是Csumn∗Cw1sum∗Cw2sum−w1……Cnsum∗Csumw1∗Csum−w1w2……C_n^{sum}*C_{sum}^{w_1}*C_{su...
2018-07-24 17:09:53
180
原创 【BZOJ1477】青蛙的约会
【题目链接】BZOJ1477【前置技能】逆元【题解】题目要求的是最小的非负整数ttt,使得x+t∗m≡y+t∗n (mod L)x+t∗m≡y+t∗n (mod L)x+t*m\equiv y+t*n~(mod~L),移项,合并同类项,得到t∗(n−m)≡x−y (mod L)t∗(n−m)≡x−y&nbsp
2018-07-24 10:34:23
165
原创 【BZOJ3545】【BZOJ3551】[ONTAK2010]Peaks
【题目链接】BZOJ3545(权限题)BZOJ3551【前置技能】主席树Kruskal重构树【题解】两题其实分别是支持离线的版本和强制在线的版本。离线版本其实也可以离线询问,按困难值排序然后数据结构合并一下就好了。仔细分析一下,其实有效的路径只有最小生成树上的边,因为如果走其他不在最小生成树上的路径到达某个节点,困难度的下限一定不会更小。在Kruskal重构树上...
2018-07-24 09:42:22
261
原创 【NOI2016】【BZOJ4650】【UOJ219】【LOJ2083】优秀的拆分
【题目链接】BZOJ4650UOJ219LOJ2083【前置技能】后缀数组【题解】首先,我们将优秀的拆分拆成一半来看,令a[pos]a[pos]a[pos]表示从pospospos开始的AAAAAA串的个数,令b[pos]b[pos]b[pos]表示以pospospos结尾的AAAAAA串的个数,那么答案就是∑LEN−1i=1a[i+1]∗b[i]∑i=1LEN−...
2018-07-24 09:04:56
221
原创 【SDOI2014】【BZOJ3532】【LOJ2196】LIS
【题目链接】BZOJ3532【前置技能】DP网络流退流【题解】233【代码】#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define LL long long#define MAXN 710#define MAXD 1410using namespace std;int ...
2018-07-19 17:18:36
293
原创 【BZOJ2865】字符串识别
【题目链接】BZOJ2865(权限题)【前置技能】线段树后缀数组【题解】先考虑另一个问题:给出一个字符串SSS,要求求出某一位后缀的最长前缀,使得这个子串在SSS中仅出现一次。这个问题用后缀数组就可以轻松解决,答案就是max(height[rank[i]],height[rank[i]−1])+1max(height[rank[i]],height[rank[i]−...
2018-07-19 15:58:00
444
原创 Educational Codeforces Round 47 (Rated for Div. 2)
【比赛链接】Educational Codeforces Round 47 (Rated for Div. 2)【A】Game Shopping【题意】【题解】时间复杂度O()O()O()【代码】#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define LL long l
2018-07-18 15:27:52
267
原创 【FJOI2016】【BZOJ4408】神秘数
【题目链接】BZOJ4408(权限题)【前置技能】主席树【题解】首先先考虑一种时间复杂度为O(QNlogN)O(QNlogN)O(QNlogN)的暴力做法:将所有数按从小到大排序,考虑做到第pospospos位前缀和为SposSposS_{pos},并且前面的数能表示[1,Spos][1,Spos][1,S_{pos}]中的所有数,那么如果apos+1≤Spos+1a...
2018-07-09 14:43:36
266
原创 【ZJOI2007】【BZOJ1058】报表统计
【题目链接】BZOJ1058【前置技能】线段树平衡树【题解】题意简述一下就是维护一个数据结构,支持向其中某个位置加一个数,查询任意两个数之差的绝对值的最小值,查询相邻两个数之差的绝对值的最小值。因为此题中的位置的定义比较特别,所以用线段树维护一下位置信息。第一种询问直接用multiset维护一下即可。第二种询问用splay维护,以位置为关键字建立splay。除...
2018-06-26 15:37:41
208
原创 【SDOI2014】【BZOJ3530】【LOJ2194】数数
【题目链接】BZOJ3530【前置技能】AC自动机数位DP【题解】从题面中题面可以比较显然地看出算法:用数位DP解决计算范围内数的情况,而限制是一个字符串集合的匹配,用AC自动机解决。在AC自动机的每个节点上记录一个tagtagtag表示在该节点到根的fail树上的节点中是否存在集合中的串的结尾节点。那么tag=1tag=1tag=1时状态不合法,否则合法。设计...
2018-06-22 07:45:12
202
原创 【BZOJ4503】两个串
【题目链接】BZOJ4503(权限题)【前置技能】利用FFT/NTT进行字符串匹配【题解】字符串中出现了通配符,一般的字符串算法就失去效果了。先忽略通配符的问题。思考一下,发现一种算法:令每个位置Ak=∑i=0LenT−1(Si+k−LenT+1−Ti)Ak=∑i=0LenT−1(Si+k−LenT+1−Ti)A_k=\displaystyle\sum_{i=0}^...
2018-06-20 19:32:06
235
原创 Codeforces Round #488 by NEAR (Div. 2)
【比赛链接】Codeforces Round #488 by NEAR (Div. 2)【A】Fingerprints【题意】给出一个包含000~999的序列,标记其中的一些数,按顺序输出序列中标记的数。【题解】按题意模拟即可。时间复杂度O(N)O(N)O(N)【代码】#include<bits/stdc++.h>#define INF 0x3f3f3f3...
2018-06-19 15:25:38
199
原创 【TJOI2018】【BZOJ5339】【LOJ2578】教科书般的亵渎
【题目链接】BZOJ5339LOJ2578【前置技能】k次幂前缀和拉格朗日插值法【题解】题目大概要求的是若干∑i=1xik+1∑i=1xik+1\displaystyle\sum_{i=1}^{x} i^{k+1}的和,还要减去其中没出现的值。kkk次幂前缀和∑i=1xik∑i=1xik\displaystyle\sum_{i=1}^{x} i^k是个关于xxx...
2018-06-18 14:00:28
331
原创 【六省联考2017】【BZOJ4870】【LOJ2143】组合数问题
【题目链接】BZOJ4870LOJ2143【前置技能】简单的组合数知识DP矩阵乘法【题解】将原问题转化一下,即求∑i%k=rCink∑i%k=rCnki\displaystyle\sum_{i\%k=r}^{ } C_{nk}^iCmn=Cm−1n−1+Cmn−1Cnm=Cn−1m−1+Cn−1mC_n^m=C_{n-1}^{m-1}+C_{n-1}^m,那么...
2018-06-17 10:57:22
185
原创 Educational Codeforces Round 45 (Rated for Div. 2)
【比赛链接】 - Educational Codeforces Round 45 (Rated for Div. 2) 【A】 【题意】 把n个东西平均分给m个人,可以花费a的代价使得n增加1或者花费b的代价使得n减少1,求最小代价。 【题解】 显然只会选择只增加或只减少使得n变成恰好为m的最接近n的两个倍数,所以答案就是min{a*(m-n%m),b*(n%m)} 时间复杂度O...
2018-06-13 17:30:20
250
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人