【类型】做题记录
步六孤明琪
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【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 · 260 阅读 · 0 评论 -
【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 · 230 阅读 · 0 评论 -
【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 · 177 阅读 · 0 评论 -
【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 · 143 阅读 · 0 评论 -
【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 · 192 阅读 · 0 评论 -
【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 · 181 阅读 · 0 评论 -
【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 · 242 阅读 · 0 评论 -
【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 · 227 阅读 · 0 评论 -
【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 · 266 阅读 · 0 评论 -
【NOI2018】【BZOJ5415】【UOJ393】【LOJ2718】归程
【题目链接】BZOJ5414UOJ393LOJ2718【前置技能】最短路Kruskal重构树【题解】题意是要求这么一个东西:在边权大于等于给定水位的某个联通块走到111号点的最短路。先从111号点跑一个单源最短路算法,令点权为最短路的长度,那么就是要求边权大于等于给定水位的某个联通块中的点权最小值。比较显然的事情就是,有用的边一定是最大生成树上的边。那么按照水...原创 2018-08-02 09:51:42 · 223 阅读 · 0 评论 -
【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 · 235 阅读 · 0 评论 -
【HEOI2012】【BZOJ2743】采花
【题目链接】BZOJ2743【前置技能】线段树【题解】先预处理出nxtnxtnxt数组,nxt[i]nxt[i]nxt[i]表示下一个和iii号位颜色相同的的位置。考虑把询问离线下来,按左端点从小到大排序。对于每一个左端点开始的区间,让每种颜色第二次出现的位置做出一点贡献。左端点为111的可以简单处理好,那么每次左端点向右移一格的时候只要将线段树nxt[i]nxt[i...原创 2018-09-14 07:59:49 · 230 阅读 · 0 评论 -
【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 · 201 阅读 · 0 评论 -
【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 · 229 阅读 · 0 评论 -
【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 · 266 阅读 · 0 评论 -
【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 · 178 阅读 · 0 评论 -
【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 · 210 阅读 · 0 评论 -
【九省联考2018】【BZOJ5249】【LOJ2472】iiidx
【题目链接】BZOJ5249LOJ2472【前置技能】贪心线段树【题解】对于所有did_idi互不相同的部分分,有一个贪心的做法。先把所有数排序并且假装有一个虚拟的000号节点,首先,根节点一定要取最小的数(000号节点就不管它),对于其他子树,把较大的数值预留给编号小的子树,然后分治下去做。但是当不保证did_idi互不相同的情况下,这个算法就是错误的。举一个简单...原创 2018-10-25 22:10:27 · 230 阅读 · 0 评论 -
【ZJOI2010】【BZOJ2111】排列计数
【题目链接】BZOJ2111【前置技能】Lucas定理组合数学【题解】比较简单的理解方法应该是认为这是一棵堆式存储的二叉树,即iii号节点的父亲是⌊i2⌋\lfloor \frac {i}{2} \rfloor⌊2i⌋号节点。问题就是求满足父亲的权值比儿子小的排列的方案数。首先,根节点一定是最小的数,然后其余的数字就会分给左右两棵子树。发现两棵子树相互之间是不影响的,且将...原创 2018-10-22 21:35:29 · 252 阅读 · 0 评论 -
【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 · 239 阅读 · 0 评论 -
【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 · 161 阅读 · 0 评论 -
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 · 194 阅读 · 0 评论 -
【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 · 208 阅读 · 0 评论 -
【BZOJ2440】[中山市选2011]完全平方数
【题目链接】BZOJ2440【前置技能】反演容斥原理二分答案【题解】题目要求的是第kkk个μμ\mu值不为000的数,kkk达到了10910910^9,显然不能把μμ\mu全部筛出来直接暴力找。考虑二分答案,那么问题转化为求111~nnn中的μμ\mu值为零的数的个数,【代码】#include<bits/stdc++.h>#define ...原创 2018-08-09 12:58:10 · 270 阅读 · 0 评论 -
【SDOI2014】【BZOJ3530】【LOJ2194】数数
【题目链接】BZOJ3530【前置技能】AC自动机数位DP【题解】从题面中题面可以比较显然地看出算法:用数位DP解决计算范围内数的情况,而限制是一个字符串集合的匹配,用AC自动机解决。在AC自动机的每个节点上记录一个tagtagtag表示在该节点到根的fail树上的节点中是否存在集合中的串的结尾节点。那么tag=1tag=1tag=1时状态不合法,否则合法。设计...原创 2018-06-22 07:45:12 · 221 阅读 · 0 评论 -
【WC2010】【BZOJ1758】重建计划
【题目链接】BZOJ1758【前置技能】二分答案单调队列点分治【题解】先二分答案midmidmid,将每条边的权值减去midmidmid,问题转化为判断在树上是否存在一条长度在LLL到RRR之间的路径,其权值和非负。路径问题,用点分治处理。记录下每个分治中心出发的各个长度的路径的最大权值。在处理分治中心的某个子树的时候,在已经处理出来的数组中用单调队列查询,然后...原创 2018-06-06 21:35:17 · 290 阅读 · 0 评论 -
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 · 265 阅读 · 0 评论 -
【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 · 252 阅读 · 0 评论 -
【NOIP2017】【UOJ334】【LOJ2319】列队
【题目链接】BZOJ3572【前置技能】动态开节点线段树【题解】关键点的数量和与NNN同阶,那么建虚树,剩下来的问题就在于树形DP了。先两次树形DP求出虚树上每个点的最近关键点和它们之间的距离。第一次DP自叶节点向上,考虑以该节点为根的子树中离该节点最近的关键点。第二次DP自根向下,考虑祖先节点的最近关键点对于该节点的影响。然后再遍历虚树上的每一条边,虚树边上的点...原创 2018-06-05 08:25:14 · 320 阅读 · 0 评论 -
【HNOI2014】【BZOJ3572】世界树
【题目链接】BZOJ3572【前置技能】树形DP虚树树上倍增【题解】关键点的数量和与NNN同阶,那么建虚树,剩下来的问题就在于树形DP了。先两次树形DP求出虚树上每个点的最近关键点和它们之间的距离。第一次DP自叶节点向上,考虑以该节点为根的子树中离该节点最近的关键点。第二次DP自根向下,考虑祖先节点的最近关键点对于该节点的影响。然后再遍历虚树上的每一条边,虚树...原创 2018-06-04 17:31:04 · 215 阅读 · 0 评论 -
【JSOI2010】【BZOJ1823】满汉全席
【题目链接】BZOJ1823【前置技能】Tarjan2-SAT【仅需知道图的收缩即可】【题解】题意最简化之后就是:每个集合都含有2个元素,且这2个元素不允许同时取出,现给出一些取元素的规则,判断是否可行。显然就是一个裸的2-SAT,而且只要判断是否可行,不要求方案。Tarjan缩点后判断同一集合中的两个元素是否在同一个强连通分量中即可。时间复杂度O(N)O(N)...原创 2018-06-04 16:54:00 · 263 阅读 · 0 评论 -
【HEOI2014】【BZOJ3611】大工程
【题目链接】BZOJ3611【前置技能】虚树树形DP【题解】关键点的数量和与NNN同阶,那么建虚树,剩下来的问题就在于树形DP了。树形DP记录四个值:一个端点为pospospos另一个端点在以pospospos为根的子树中的路径的最大长度maxnmaxnmaxn、最小长度minnminnminn、数量tottottot、长度和sumsumsum。转移要分pospo...原创 2018-06-03 22:09:25 · 175 阅读 · 0 评论 -
【BZOJ2821】作诗(Poetize)
【题目链接】BZOJ2821(权限题)【前置技能】分块【题解】题意:有一个长度为NNN的序列AAA,其中Ai≤CAi≤CA_i \leq C,MMM组询问,每次询问区间[L,R][L,R][L,R]中出现正偶数次的数的种类数,强制在线。数据范围:N,M,C≤105N,M,C≤105N, M, C \leq10^5首先,这道题不强制在线怎么做呢?莫队。似乎强制在线...原创 2018-06-03 16:02:12 · 280 阅读 · 0 评论 -
【六省联考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 · 201 阅读 · 0 评论 -
【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 · 350 阅读 · 0 评论 -
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 · 221 阅读 · 0 评论 -
【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 · 317 阅读 · 0 评论 -
【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 · 466 阅读 · 0 评论 -
【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 · 202 阅读 · 0 评论 -
【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 · 188 阅读 · 0 评论
分享