
题解
文章平均质量分 73
子衿君
要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡
展开
-
题解:SDOI2005 扫雷 【DP】
这道题总的来说还是很简单的,但教练在我们只会数组循环什么的时候考试是几个意思,考试过了几百年之后发现了这个,成功给他A掉了思路是DP(万物皆可DP)状态设计:f[N][2][2] i,j,k分别表示第几个,第i个有没有雷,第i+1个有没有雷初始化:f[0][0][0]=f[0][0][1]=1; 转移比较好理解a[i]==0从f[i-1][0][0]转移到f[i][0][0]a[...原创 2019-03-11 08:05:23 · 312 阅读 · 0 评论 -
题解:SDOI2010 连续攻击游戏 【二分图】
这个题目,我们很容易的看出来这是个二分图匹配,每个装备和两个属性连边,然后跑二分图匹配就行了struct node { int next,to;} e[N<<1];int h[N<<1],n,m,cnt;#define add(u,v) e[++cnt].next=h[u],e[cnt].to=v,h[u]=cnt;#define QXX(u) for(i...原创 2019-03-11 08:03:28 · 180 阅读 · 0 评论 -
题解:ZJOI2007 棋盘制作【DP】
这个题目属于悬线法的板子题,用于求最大矩形或最大正方形问题这里我们需要记录三个数组 left,right,upleft [ i ] [ j ] 表示 i j 能到达的最左端的位置rigth [ i ] [ j ]表示 i j 能到达的最右端的位置up [ i ] [ j ] 表示从 i j 向上扩展最长长度.于是,我们可以写出这样的递推式:l e f t [ i ] [ j ] ...原创 2019-03-11 07:59:36 · 217 阅读 · 0 评论 -
题解:NOIP2014 飞扬的小鸟
#include <algorithm>#include <iostream>#include <cstdio>#include <vector>using namespace std;#define re register#define gc getchar()inline int read(){ re int x(0),f(1...原创 2019-03-19 15:15:34 · 271 阅读 · 0 评论 -
史上最(不)详细的莫比乌斯反演学习记录
由于楼主是个小蒟蒻,所以理解的很慢,所以就很详细首先先介绍一下什么是莫比乌斯函数(转自百度百科)莫比乌斯函数是一个数论函数,它同时也是一个积性函数(i.e.μ(ab) =μ(a)μ(b), a,b互质)当n不等于1时,n所有因子的莫比乌斯函数值的和为0也就是说∑d∣nμ(d)={1n=10n&amp;amp;amp;amp;amp;amp;amp;gt;1\sum_{d|n}\mu(d)=\begin{cases}1&amp;amp;amp;amp;amp原创 2019-03-14 18:19:25 · 906 阅读 · 0 评论 -
小蒟蒻的题解(代码)系列-----凸包入门题目集合
学习过斜率优化的童鞋们应该对凸包都不陌生,这里就不做详细的介绍了手动上代码 P2742 【模板】二维凸包#include <algorithm>#include <iostream>#include <cstdio>#include <cmath>using namespace std;const int N=100010;const...原创 2019-03-04 17:37:56 · 726 阅读 · 0 评论 -
题解:YY的GCD 【莫比乌斯反演】
题意求∑i=1n∑j=im[gcd(i,j)==k](k∈prima)求\sum_{i=1}^n\sum_{j=i}^m [ gcd(i,j)==k ](k\in{prima})求i=1∑nj=i∑m[gcd(i,j)==k](k∈prima)根据莫比乌斯反演的常见套路,我们可以很容易地化到这一步:∑k∈prima∑d=1min(n,m)μ(d)⌊nkd⌋⌊mkd⌋\sum_{k\in{...原创 2019-03-14 13:13:43 · 386 阅读 · 0 评论 -
题解:HAOI2011 Problem b【莫比乌斯反演】
题意求∑i=ab∑j=cd[gcd(i,j)==k]求\sum_{i=a}^b\sum_{j=c}^d [ gcd(i,j)==k ]求i=a∑bj=c∑d[gcd(i,j)==k]对于这个题目,我们可以运用一下容斥原理如果说 f(n,m)=∑i=1n∑j=1m[gcd(i,j)==d]f(n,m)=\sum_{i=1}^n\sum_{j=1}^m [ gcd(i,j)==d ]f(n,...原创 2019-03-14 12:34:59 · 291 阅读 · 0 评论 -
题解:POI2007 ZAP-Queries 【莫比乌斯反演】
题意:求∑i=1n∑j=1m[gcd(i,j)==d]求 \sum_{i=1}^n\sum_{j=1}^m [ gcd(i,j)==d ]求i=1∑nj=1∑m[gcd(i,j)==d]这个题目很明显就是一个莫比乌斯反演的板子题我们令f(x)=∑i=1n∑j=1m[gcd(i,j)=x]我们令 f(x)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=x]我们令f(...原创 2019-03-14 12:26:54 · 274 阅读 · 0 评论 -
题解:HEOI2014 人人尽说江南好 【博弈论】
作为一个文科学不好的喜欢文科的假的理科生,我是被标题骗进来的这个题目看完之后很容易的就能看出来这是个博弈论,对于博弈论其实我什么都不会,但是这个题目水啊不管怎么取,石子的最终分布一定是:m,m,m…(共n/m个m),n%m ; (因为初始每堆1个,石头数不能超过m)那么直接可以求出合并成最终状态需要的次数,%2判断即可那么不就是 (n / m)*(m - 1)+n % m - 1闲得慌粘...原创 2019-03-11 08:18:15 · 359 阅读 · 0 评论 -
题解:HNOI2004 L语言 【AC自动机】
这个题目就是AC自动机的一个半板子题,难度不大(然而似乎没什么人用AC自动机)似乎暴力跑的更快???(应该只是我水)直接建AC自动机,然后跑就信了(喵喵喵???)用广搜的样式(懒得慌STL好),DP的思想,然后就那样的找,最后能跑到的最后面的一个就是我们要找的长度(因为如果前面的有问题他是泡不到后面的,正确性一定可以保证)#include <iostream>#include...原创 2019-03-11 08:25:23 · 260 阅读 · 0 评论 -
题解:ZJOI2008 树的统计 【树链剖分】
这个题目就是树剖的板子题(比板子还裸)于是就直接上了QAQ还是先扯一下树剖吧fa[x]:x在树中的父亲dep[x]:x在树中的深度size[x]:x的子树结点数(子树大小)son[x]:x的重儿子,即u→son[u]为重边top[x]:x所在重路径的顶部结点(深度最小)seg[x]:x在线段树中的位置(下标) (但是我一直发疯打的seq)rev[x]:线段树中第x个位置对应的...原创 2019-03-11 08:33:21 · 232 阅读 · 0 评论 -
题解:BZOJ 4361 isn【dp】【容斥】
给出一个长度为n的序列A(A1,A2…AN)。如果序列A不是非降的,你必须从中删去一个数,这一操作,直到A非降为止。求有多少种不同的操作方案,答案模10^9+7。对于这个题目,我们用 f [ i , j ]表示选到 i ,i 必须选,已经删了j个,构成一个不降的子序列的方案数于是由于每次都是从前for,然后统计个数,我们考虑用树状数组优化因为取出来有一定的顺序,所以要乘以 ( n -...原创 2019-03-13 17:08:36 · 353 阅读 · 0 评论 -
题解:BZOJ4358: permu 【莫队】
题目给出一个长度为 n 的排列 P(P1,P2,…,Pn) ,以及 m 个询问。每次询问某个区间 [l,r] 中, 最长的值域连续段长度这个题目很容易的可以看出来这是一个莫对的题目,然后就能够做出来优秀的O(n sqrn logn )的线段树+莫对的算法,于是…这是我的结果这是大佬的分数**其实这个题目考的是卡常 **废话了半天就来说一下这个优秀的(可以让大佬A掉的优秀算法)...原创 2019-03-13 17:00:15 · 851 阅读 · 0 评论 -
题解:HNOI2004 敲砖块 【DP】
作为一个小蒟蒻,感觉自己的DP已经菜的要死了…省选前抱普及的佛脚这个题目大佬们说要旋转,然后本蒟蒻不会…怎么看都像是树形背包但是他上面的两个转移过来中间有重叠,所以和树形背包没有任何关系…压根就不是一棵树…于是开始磕…int main(){ n=read(),m=read(); for(int i=1;i&lt;=n;++i) { for(in...原创 2019-03-12 14:17:38 · 303 阅读 · 0 评论 -
题解:[USACO12MAR]花盆Flowerpot 【单调队列】
#include <algorithm>#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define ll long long#define re register#define gc getchar()inline int rea...原创 2019-03-20 15:22:03 · 384 阅读 · 0 评论 -
题解:滑动窗口 【单调队列】
N2N^2N2 暴力应该都会NlogNNlogNNlogN 线段树,树状数组ST表随便搞NNN单调队列#include <iostream>#include <cstdio>using namespace std;#define ll long long#define re register#define gc getchar()inline int...原创 2019-03-20 14:48:48 · 313 阅读 · 0 评论 -
题解:三维偏序(陌上花开)【CDQ分治】
题意:求所有的 xj&lt;xi yj&lt;yi zj&lt;zi ~~x_j&lt;x_i~~y_j&lt;y_i~~z_j&lt;z_i~~ xj<xi yj&a原创 2019-03-15 19:13:26 · 290 阅读 · 0 评论 -
题解:SDOI2015 约数个数和 【莫比乌斯反演】
求∑i=1n∑j=1md(ij)[d(x)表示x的约数个数]求\sum_{i=1}^n\sum_{j=1}^m d(ij) [d(x)表示x的约数个数]求i=1∑nj=1∑md(ij)[d(x)表示x的约数个数]首先,我们要指导如何去求d(ij),有这么一个式子首先,我们要指导如何去求d(ij),有这么一个式子首先,我们要指导如何去求d(ij),有这么一个式子d(ij)=∑x∣i∑y∣j...原创 2019-03-15 11:53:28 · 419 阅读 · 0 评论 -
题解:poj2449 Remmarguts' Date 【k短路模板】
传送门这个题就是求第k短路的板子题,由于数据范围,不能暴力n*(短路复杂度)来更新原创 2019-03-09 18:55:02 · 212 阅读 · 0 评论 -
题解:POJ1636 Prison rearrangement 【DP】
传送门#include &lt;algorithm&gt;#include &lt;iostream&gt;#include &lt;cstring&gt;#include &lt;vector&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;using n原创 2019-03-06 16:21:09 · 533 阅读 · 0 评论 -
题解:[APIO/CTSC 2007]数据备份
传送门你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份。然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣。已知办公楼都位于同一条街上。你决定给这些办公楼配对(两个一组)。每一对办公楼可以通过在这两个建筑物之间铺设网络电缆使得它们可以互相备份。然而,网络电缆的费用很高。当地电信公司仅能为你提供 ...原创 2019-02-15 18:28:45 · 365 阅读 · 0 评论 -
题解:普通平衡树
(内容更新ing)文章目录Treap树状数组SBT树fhq_treapSplayTreap首先是标准的Treap,楼上的dalao们已经说的很清楚了// treap my 数组#include &amp;amp;amp;lt;algorithm&amp;amp;amp;gt;#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include &amp原创 2019-02-15 16:19:28 · 321 阅读 · 0 评论 -
题解:[APIO2007]风铃
传送门你需要选一个满足下面两个条件的风铃:(1) 所有的玩具都在同一层(也就是说,每个玩具到天花板之间的杆的个数是一样的)或至多相差一层。(2) 对于两个相差一层的玩具,左边的玩具比右边的玩具要更靠下一点。风铃可以按照下面的规则重新排列:任选一根杆,将杆两头的线“交换”。也就是解开一根杆左右两头的线,然后将它们绑到杆的另一头。这个操作不会改变更下面的杆上线的排列顺序。其实看着这个题目...原创 2019-02-15 13:46:51 · 249 阅读 · 0 评论 -
题解:[APIO2007]动物园
传送们对于这个题目很明显的就是状压DP,不过,作为一个不会状压DP的蒟蒻,考场让只能根据大佬们的之前聊天和对状压DP的印象来瞎搞状态是这样设计的:f[i,j] 表示转移到从第i个位置出发的j表示五个的动物的状态能使多少个小朋友满意 s[i,j]表示从i出发的5个位置中表示j的状态使多少个小朋友满意所以,状态量其实和小朋友的人数没什么关系,总状态量是n*25 =320 0000,两个...原创 2019-02-15 13:33:42 · 453 阅读 · 1 评论 -
题解:P2766 最长不下降子序列问题
传送门给定正整数序列x1,…,xn 。(1)计算其最长不下降子序列的长度s。(2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列。(3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的不下降子序列。«编程任务:设计有效算法完成(1)(2)(3)提出的计算任务。对于这个题目,首先可以很简单的用DP求出第一个问题的答案,不过这个地方不能用n...原创 2019-02-14 21:47:10 · 219 阅读 · 0 评论 -
题解:P2711 小行星
传送们星云中有n颗行星,每颗行星的位置是(x,y,z)。每次可以消除一个面(即x,y或z坐标相等)的行星,但是由于时间有限,求消除这些行星的最少次数。这个题目乍一看是个三维的,有点难以下手,消除次数最少代表着最少割,所以这就是最大流。x与超级源s相连,z与超级汇t相连,y为中间连接x与z,由于y每个点只能割一次,所以拆为两个点y1与y2,x连接y1,y2连接z,y1连接y2int x[...原创 2019-02-14 18:45:52 · 270 阅读 · 1 评论 -
题解:P2057 [SHOI2007]善意的投票
传送们幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?这道题的思想就是最大流=最小割,...原创 2019-02-14 18:37:00 · 160 阅读 · 0 评论 -
[APIO2010]巡逻题解
[APIO2010]巡逻在一个地区中有 n 个村庄,编号为 1, 2, …, n。有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其 他任一个村庄。每条道路的长度均为 1 个单位。 为保证该地区的安全,巡警车每天要到所有的道路上巡逻。警察局设在编号 为 1 的村庄里,每天巡警车总是从警察局出发,最终又回到警察局。 下图表示一个有 8 个...原创 2018-11-06 21:13:57 · 981 阅读 · 0 评论 -
【题解】P1963 [NOI2009]变换序列
https://www.luogu.org/problemnew/show/P1963变换序列【问题描述】对于N个整数0,1,…,N-1,一个变换序列T可以将i变成Ti,其中:Ti∈{0,1,…,N-1}且 {Ti}={0,1,…,N-1}。 x,y∈{0,1,…,N-1},定义x和y之间的距离D(x,y)=min{|x-y|,N-|x-y|}。给定每个i和Ti之间的距离D(i,Ti),你...原创 2018-10-30 21:31:52 · 497 阅读 · 0 评论 -
题解:APIO2007
话说,相对而言,2007APIO是简单多了。三道题:风铃 数据备份 动物园风铃:难度不大,两边DFS即可完成,同时也不要忘了特判数据备份:部分分很足,正解方法很多动物园:状压DP,比较版子题解如下:风铃数据备份动物园(完成时间:19.2.15)...原创 2019-02-15 18:37:11 · 211 阅读 · 0 评论 -
题解:[NOI2016]区间
传送门在数轴上有NN 个闭区间 [l_1,r_1],[l_2,r_2],…,[l_n,r_n][l_1,r_1 ],[l_2 ,r_2 ],…,。现在要从中选出M 个区间,使得这M 个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间,都有 l_i≤x≤r_i 。对于一个合法的选取方案,它的花费为被选中的最长区间长度减去被选中的最短区间长度。区间 的长度...原创 2019-02-15 21:13:48 · 629 阅读 · 0 评论 -
题解:骑士共存问题
传送门对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击这个题运用奇偶性建图,黑白染色,黑连S,白连T,然后跑最大流,求出最小割,用n2 减去即可。#include &lt;queue&gt;#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;iostream原创 2019-02-16 15:17:55 · 506 阅读 · 0 评论 -
题解:NOIP2018旅行
这个题目其实挺水的,CCF数据也比较水我们考虑对于一棵树的情况,找 dfs 序最小,那么直接贪心,从1开始找,每次遍历最小,输出即可对于环基树,我们采用暴力断边(n<=5000),所以N2是没有任何问题的,然后更新最小字典序即可(这个数据范围水到我连领接表都懒得开,然而本蒟蒻考场上依旧没A)代码如下:#include <iostream>#include <cs...原创 2019-03-08 22:10:49 · 628 阅读 · 0 评论 -
题解:poj3013 Big Christmas Tree 【最短路】
传送门这个题题意是,给一个n个节点的图,在要求其一棵以1结点为根的生成树使树的边权和最小,树边权 = 对应的图边权 * 树边末端点为根的子树所有结点对于图顶点的点权和然后就是直接跑最短路(我爱SPFA)#include<iostream>#include<cstdio>#include<queue>#include<cstring>u...原创 2019-03-08 18:49:36 · 228 阅读 · 0 评论 -
题解:poj3715 Blue and Red 【二分图】
传送门这个题目就是二分图最大匹配,然后输出字典序最小的那个编号,这个输出和[NOI2009]变换序列有点像,区别就是这个题水一些#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;iostream&gt;using namespace std; const int M = 210;bool g[M][M],vis...原创 2019-03-08 18:10:34 · 315 阅读 · 0 评论 -
题解:POJ1035 Spell checker 【DP】
传送门对于这个题目,原本打算打AC自动机的,结果看了一眼数据范围,暴力码上去对于一个串如果进行修改可以变成另外一个串,那么这两个串的长度相差 1,-1,0,然后暴力for过去,判断相同字符数量,暴力比较即可#include <algorithm>#include <iostream>#include <cstring>#include <cst...原创 2019-03-06 15:33:06 · 269 阅读 · 0 评论 -
题解:POJ1015 Jury Compromise 【DP】
传送门描述在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团。选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小。如果有多种选择方案的辩方总分和控方总分的之差...原创 2019-03-06 15:14:14 · 437 阅读 · 0 评论 -
题解:poj3261Milk Patterns 【后缀数组】
传送门这个题意是求 可重叠的出现K次的最长重复子串我们考虑二分子串长度#include <iostream>#include <cstdio>using namespace std;const int N=200020;int n,k,m,sa[N],h[N],rk[N],x[N],y[N],c[N],s[N];void qsort() { for(i...原创 2019-03-08 17:26:09 · 232 阅读 · 0 评论 -
题解:POJ1743 Musical Theme 【后缀数组】
传送门这个题目的题意就是差分一下,求差分数组的不可重叠的最长重复子串这个题目的暴力很简单,就不多扯了(考试打了四个暴力的蒟蒻捂脸走开)于是我们考虑二分这个子串的长度,然后运用后缀数组进行判断#include <algorithm>#include <iostream>#include <cstdio>using namespace std;co...原创 2019-03-08 14:40:02 · 268 阅读 · 0 评论