自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

步六孤的博客

上帝明目张胆地不公平。但凡人保留偏执的权利。

  • 博客(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∑n​j=0∑i​S(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关注的人

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