自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CleverLarry的博客

我的剑刃愿为您效劳

  • 博客(62)
  • 收藏
  • 关注

原创 Codeforces Round #674 F. Number of Subsequences——题解

题目传送门此题一定要注意要先将所有?变为abc后再求子序列,因此不在abc这一子序列中的?也要考虑变为a、b或c。(本人只考虑在子序列中的?,所以卡了好久。。。)思路:定义dpi,j,k为到第i个位置时,子序列已有了第j个字母(a对应1,b对应2,c对应3),子序列使用了k个问号的情况的数量。详细递归方式见代码。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;ll mod1=1e9+7;l

2020-09-30 10:54:23 89

原创 洛谷P2680 运输计划——题解

题目传送门题目大意:有一颗n个节点的树和m条路径,你可以将树上任一条边的长度变为0,求所有路径中最长的一条的最小值。思考过程:这是典型的求最大值最小可以为多少的问题,我们考虑二分答案。然后我们考虑如何检验当前答案是否可行。显然,长度小于当前答案的路径都是可行的,问题转化为如何判断长度大于当前答案的路径是否可行。因为我们要删掉一条边使得这些路径长度都变小,所以我们肯定要删掉这些路径的交,...

2018-09-25 23:22:30 147

原创 多项式乘法与FFT——学习笔记

前言 这篇博客很长,因为考虑到读者很多都是对FFT的了解除了名字再无其它的大白,所以详细地解释了许多,只要你耐心地把它看完,你一定会对FFT有更深刻的理解。准备工作 首先我们要从泰勒公式说起。 泰勒公式是指若一个函数在x=x0x=x0x=x_0处有n阶导数,我们可以用含这n阶导数和(x−x0)(x−x0)(x-x_0)的多项式来模拟函数在(x−Δx,x+Δx)(其中Δx无限接近于0)...

2018-07-04 20:49:27 1304

原创 K-d树

前言 K-d树的K其实表示的是数据是几维的,所以我们一般用的都是2-d树。2-d树原理 当数据有两维时,一般都是维护平面上的数据,我们无法想线段树那样一直缩小范围得到想要的区间,但是我们可以通过交错缩小横纵坐标来最终得到想要的平面,这就是2-d树的原理。写法: 例子:简单题 题目大意:动态维护矩形内数字和 和大多数树形结构一样,我们一切操作都需要从根开始,维护当前的点代表...

2018-06-30 18:05:03 204

原创 群论(Burnside引理和Polya定理)

群论 群指的是满足以下四个条件的一组元素的集合:(1)封闭性 (2)结合律成立 (3)单位元存在 (4)逆元存在。而在信息学中,我们主要用它来处理计数问题。Burnside引理 因为我们一般只会用Polya,这里就不介绍Burnside了。Polya定理 我们用一个例子来引入:一正方形分成4格,2着色,有多少种方案?其中,经过转动相同的图象算同一方案。 首先经过转动的这个变...

2018-06-30 17:53:43 1331 2

原创 CDQ分治——学习笔记

前言 因为中国集训队的大佬们总会发明一些新的东西,所以中国的计算机竞赛水平才会一直处于国际前沿,而cdq分治也是某一年的集训队成员发明的算法。什么是CDQ分治 cdq分治是一种分治(这不是废话嘛),和一般的分治一样,它先考虑前半部分,再考虑后半部分,再考虑前半部分对后半部分的影响,而cdq分治的精髓就在于处理前半部分对后半部分的影响。例题:陌上花开 经典的三维偏序问题,我们可...

2018-06-30 17:03:31 3736

原创 数据结构嵌套——学习笔记

引言 随着我们需要解决的问题越来越复杂,很多时候单一的数据结构已经无法解决问题了,所以我们需要把数据结构嵌套起来。什么是数据结构嵌套 顾名思义,数据结构嵌套就是结合使用两个及以上(一般是两个,否则多的一般用其他的方法来代替)的数据结构。 这样看来其实数据结构嵌套非常简单,没有任何思维难度,只不过代码量有一些大,需要一定的封装,我们通过具体题目介绍不同的数据结构嵌套。线段树套线...

2018-06-30 16:10:19 3731

原创 NOI2018湖北省队集训Day5 T2 cake

题面: 得分情况: 用不断切三角形做的,没注意数据范围,只拿了subtask1的5分。。。 (也没想到这是个结论题)大结论: 对于n和m,先将n边形放到lcm(n,m)边形的盒子里(有公式),再用m边形来套这个盒子(有公式)是最优情况,不会证。。。 然后导导角推推公式就可以了。代码:#include &lt;bits/stdc++.h&gt;using na...

2018-05-23 20:13:10 146

原创 NOI2018湖北省队集训Day5 T1 tree

题面: 得分情况: 写了朴素的O(n2)O(n2)O(n^2)dp没看到OJ上有多组数据,成功爆零了。正解: 首先O(n2)O(n2)O(n^2)的朴素dp很简单,dp[i]表示在以i为根的子树中满足条件的方案数,转移是dp[i]=∏j(j为i的儿子)(dp[j]+1)dp[i]=∏j(j为i的儿子)(dp[j]+1)dp[i]=\prod_{j(j为i的儿子)}(dp[j]...

2018-05-23 20:07:26 175

原创 NOI2018湖北省队集训Day4 T2 djq 的朋友圈

题面: 得分情况: 35分枚举全排列暴力。。。正解: 我们将直接与1相连的点称为a,不与1直接相连而与a直接相连的点称为b。 状压dp[i]表示已选的a,转移时枚举现在要选的a点,计算对答案的影响。(之前已选的点不管怎么排影响都已经计算过了)复杂度为O(2A∗B)O(2A∗B)O(2^A*B)(A,B表示a,b点的个数),能拿到70分。 对于剩下的点,我们选取A,B中...

2018-05-23 19:28:34 365

原创 NOI2018湖北省队集训Day4 T1 djq和MZ

题面: 得分情况: 40分,写了纯暴力。正解: 其实O(nn−−√logn)O(nnlog⁡n)O(n\sqrt{n}\log{n})的做法还挺好想的(然而我在考场上并没有想出来),分块莫队再用线段树维护块中类型的最大值即可。我们要想办法把这个lognlog⁡n\log{n}去掉。经过冷静地分析,我们发现,修改的总次数为nn−−√nnn\sqrt{n},查询的总次数为nnn,...

2018-05-23 19:12:21 334

原创 NOI2018湖北省队集训Day3 T1 贪婪人

题面: 得分情况: 爆零。。。正解: 我们用dp[n][m][w]表示在n*m的网格中,贪心路径权值为w的方案数,转移时枚举向右和向下,时间复杂度O(h∗w∗s2)O(h∗w∗s2)O(h*w*s^2),能过70%的数据。 我们首先可以通过维护前缀和去掉一个s,将复杂度降为O(h∗w∗s)O(h∗w∗s)O(h*w*s),然后你还是只能过70%的点。 我们又发现,每次在不...

2018-05-23 18:35:00 290

原创 NOI2018湖北省队集训Day2 T2 string

题面: 得分情况 省队集训A掉的第一题。正解: 长度为k的01串最多可以有(k-1)k/2个满足要求的数对(0,1交错出现),在这个串中每将一段长度为t的子串变成一样的(均为0或1),答案会减小t(t-1)/2,而这个减小的数是可以贪心的,每次减去小于还需要减的数种最大的即可。代码: 怕后面写错了,我先对小数据打了个表。#include&lt;bits/stdc...

2018-05-23 18:19:40 180

原创 NOI2018湖北省队集训Day2 T1 number

题面: 得分情况: 在1到n形成的子串上跑KMP,拿到10分。正解: 对于每个正整数,答案有三种情况: 1.ans为n 2.在n的字符串中至少完整地出现了一个正整数,枚举位数和开头解决 3.n由i的一个后缀和i+1的一个前缀构成,枚举分割位置和位数解决 总复杂度O(n∗位数3)O(n∗位数3)O(n*位数^3)代码:#include &lt;bits/...

2018-05-23 16:46:32 211

原创 NOI2018湖北省队集训Day1 T3 san

题面: 得分情况: 本来是照着30分的2n2n2^n枚举全排列打的,结果多拿了五分,开心。正解: 题目需要我们求的是一个拓扑序中的一个子串的和的最大值,看到题目并没有什么思路而且数据范围又这么小,开始考虑网络流。 我们对于每个节点考虑三种情况,1.不选在选的子串前,2.在选的子串中,3.不选在选的子串后。然后把每个点拆成两个点,从s到t依次连边,会有三条边,即对应这三种...

2018-05-23 10:32:33 203

原创 洛谷P3620 [APIO/CTSC 2007]数据备份——题解

题目传送门思考过程&amp;具体做法: 显然,我们选作答案的每一个点对中的点都是相邻的,我们将这些数两两作差,于是问题变成了在n-1个数中选出k个不相邻的数,和最小为多少。 首先考虑初步贪心,即每次都取最小的数,但显然这样是错误的。 我们要思考怎么贪心才是对的。 我们发现,可以在取完最小的数后,删掉他的前一个数和后一个数,插入前一个数和后一个数的和减去当前数的差,这样如果取了插入的...

2018-05-16 22:08:52 239

原创 洛谷P2323 [HNOI2006]公路修建问题——题解

题目传送门思考过程&amp;具体做法: 首先将所有边的价格从小到大排序,然后二分答案,并查集维护是否连通来检验即可。代码:#include &lt;bits/stdc++.h&gt;using namespace std;const int maxn=2e4+1000;struct stu{ int x,y,type,cost,id;}len[maxn...

2018-05-16 21:59:29 265

原创 洛谷P3459 [POI2007]MEG-Megalopolis——题解

题目传送门 题目大意: 题目翻译有毒,我也表述不清楚,可以看第一篇题解弄清题意。思考过程&amp;具体做法: 我是用树链剖分硬搞的。具体的是把每个点父亲连向自己的那条边作为自己的权值,土路为1,公路为0,这样除了1外一开始所有点点权都是1,树链剖分维护点权即可。代码:#include &lt;bits/stdc++.h&gt;using namespace std;...

2018-05-16 21:55:37 122

原创 洛谷P4298 [CTSC2008]祭祀——题解

题目传送门 题目大意: 从一个图中选出最大的任意一点都无法到达其他点的点集。思考过程&amp;具体做法: 我们首先假设所有点都选了,现在问题转化为了删除最少的点。 我们从s向所有点连边,再从所有点的另一点向t连边,如果a能够达到b,我们从a向b的另一点连边,最终情况就是使得这个图从s无法到达t,即要求最小割。又因为这是一个只有两层的分层图,没必要写网络流,二分图匹配就可以解决了。...

2018-05-16 21:45:10 341

原创 洛谷P3627 [APIO2009]抢掠计划——题解

题目传送门 题目大意: 看题面吧。思考过程&amp;具体做法: 先缩点,然后从市中心所在的新点开始做dp,最后对有酒吧的新点统计答案。代码:#include &lt;bits/stdc++.h&gt;using namespace std;const int maxn=5e5+1000;struct stu{ int to,next;}road[m...

2018-05-16 21:37:05 279

原创 洛谷P3258 [JLOI2014]松鼠的新家——题解

题目传送门 题目大意: 给出一个在树上移动的序列,求出每个点被经过的次数。思考过程: 维护两个点之间的链的信息很明显我们需要树剖,但是树剖无法维护链上每个节点的信息,所以我们需要借助差分数组。具体做法: 1.树剖 2.对于序列中相邻的两个点,像普通树剖求答案那样往上跳到LCA,过程中将两个节点的差分数组起点+1,终点-1,注意重复的情况,用tag数组来记录代码:...

2018-05-15 14:41:42 116

原创 洛谷P4049 [JSOI2007]合金——题解

题目传送门 题目大意: 看题面吧。思考过程: 首先很显然地一点,第三维是可以忽略的,因为c=1-a-b。 我们从最简单的情况开始考虑,如果只有两种备选合金,能配出的合金就在这两种合金连线的线段上,三种就在三种合金形成的三角形中,以此类推,n种就在这n种合金围成的凸包上。具体做法: floyd求最小环,具体的是如果一个点在线段ij的一边,dis[i][j]=1,否则为inf...

2018-05-09 19:28:11 122

原创 洛谷P4036 [JSOI2008]火星人——题解

题目传送门 题目大意: 写一个数据结构,需要支持三种操作: 1.单点修改一个字符 2.单点插入一个字符 3.询问两个后缀的LCQ思考过程: 一开始想到的是后缀数组,但是后缀数组似乎不支持插入的操作。那么能够在小于log的时间内求出LCQ的,也只有hash的O(1)O(1)O(1)了。而题目又需要提出一段区间来进行操作,所以很容易想到splay。没错,hash+splay就能够完...

2018-05-09 19:15:02 192

原创 洛谷P2506 [SCOI2008]劣质编码——题解

题目传送门 题目大意: 给定n个01字符串,试问能由这些字符串以三种方式构成的最短字符串长度为多少。思考过程&amp;具体做法: 神DP,看题解才会的。 首先我们考虑二维的情况(也就是只要求能有两种构成方式),令dp[i][j]表示模式串为i,匹配串当前匹配到的位置为j的最短长度。我们将这种状态推广到三维,令dp[i][j][k]表示模式串为i,较长的匹配串匹配到j,较短的匹配串匹...

2018-05-09 18:37:20 195

原创 洛谷P4291 [HAOI2008]排名系统——题解

题目传送门 题目大意: 看题面吧。具体做法: hash+splay,数据结构题得自己看代码。代码:#include &lt;bits/stdc++.h&gt;using namespace std;const int maxn=1e6+10,mod=999983,inf=2147483647;int num[maxn],size[maxn],c[maxn][2...

2018-05-08 21:01:13 135

原创 洛谷P2474 [SCOI2008]天平——题解

题目传送门 题目大意: 看题面吧。思考过程&amp;具体做法: 我也是看别人的题解才会做的。 这个题真的很难往DP方面去想,但是想到了就特别简单,用dn[i][j]表示i比j大的最小值,dx[i][j]表示i比j大的最大值(若j比i大,则这个值为负数),转移请看代码,挺容易理解的,主要这个状态真的想不到。代码:#include &lt;bits/stdc++.h&g...

2018-05-08 20:03:50 162

原创 洛谷P4467 [SCOI2007]k短路——题解

2018-05-08 19:47:30 515

原创 平面凸包——学习笔记

什么是平面凸包? 平面凸包(以下简称“凸包”)是指覆盖平面上n个点的最小凸多边形。形象来说就是把n个点看成n根柱子,用橡皮筋去紧框住这n根柱子,最后形成的拉紧的多边形就是要求的凸包。怎么求平面凸包?1.Jarvis算法 首先我们需要了解凸包的数学构造法:找一条直线l过其中一点(记为A)并且其他所有点都在l的同侧,则A必为凸包上的一点。那么我们以A为起点,让直线以A为中心绕着同一...

2018-05-08 11:06:30 366

原创 洛谷P2475 [SCOI2008]斜堆——题解

题目传送门 题目大意: 看题面吧。思考过程&amp;具体做法: 当前插入的是极左没有右儿子的节点,也就是一直往左走直至一个没有右儿子的点停止,然后删掉他交换父节点的左右儿子,这样做是符合的,但为什么最优不会证2333。代码:#include &lt;bits/stdc++.h&gt;using namespace std;const int maxn=60;i...

2018-05-03 10:58:20 103

原创 洛谷P4026 [SHOI2008]循环的债务——题解

题目传送门 题目大意: 三人互相交换纸币使每个人都达到最终结果,试问交换纸币的最少张数。思考过程&amp;具体做法: 比较明显的dp,因为一共只有6种币值,考虑枚举币值,dp[i][a][b]表示枚举到第i种纸币,a的钱数为a,b的钱数为b(c的钱数为总数-a-b)的最小交换数,转移比较简单看代码吧。(我用了滚动数组写这个dp)代码:#include &lt;bits/s...

2018-05-03 10:54:23 196

原创 洛谷P4201 [NOI2008]设计路线——题解

题目传送门 题目大意: 给定一棵树,你可以在上面指定一些不相交的链,试问从每个节点到根经过的非链边最多的最小值是多少。思考过程&amp;具体做法: 看别人的题解艰难地写出来的。 首先impossible很好判断,图不联通直接输出就行了。 图联通的话, 我们对于每一个点,在所有向下的路径中选择最长的两条,然后把这两条全部变成铁路。那么假设f(x)为有x节点的树的最大可能答案...

2018-05-03 10:48:49 164

原创 洛谷P2470 [SCOI2007]压缩——题解

题目传送门思考过程&amp;具体做法: 明显的dp题,考虑如何表示状态。首先自然想到用dp[i][j]表示i到j这一段压缩后的最短长度,后面还要加一维 bool t 来表示这段中是否有M。如何转移请见代码注释。代码:#include &lt;bits/stdc++.h&gt;using namespace std;int l;int f[60][60][2],ma...

2018-05-02 21:49:50 139

原创 洛谷P1477 [NOI2008]假面舞会——题解

题目传送门思考过程: 很容易发现,收集的信息共有两种情况: 1.成环 2.成链 对于第一种情况,我们dfs遍历整个图,第一次到达每个点时给一个id,若后来的路再次通向这个点,abs(id-newid)就是这个环的大小,最大答案即为所有环大小的gcd,最小答案为最大答案的最小因数(除1之外且要大于等于3) 对于第二种情况,最小答案为3,最大答案为最长的链长,最小答案为3(最长链长要...

2018-05-01 10:33:46 277

原创 洛谷P4050 [JSOI2007]麻将——题解

题目传送门 题目大意: 看题面吧。思考过程&amp;具体做法: 看起来很高级的一个题目,但其实做法是赤裸裸的暴力,暴力枚举每一张听牌然后暴力检验即可。代码:#include &lt;bits/stdc++.h&gt;using namespace std;const int maxn=500,maxm=1100;int n,m,num[maxn],now[maxn...

2018-04-30 17:05:35 138

原创 洛谷P4302 [SCOI2003]字符串折叠——题解

题目传送门 题目大意: 看题面吧。思考过程&amp;具体做法: 用记忆话搜索的方法,dp[l][r]表示l到r这一段能缩成的最短长度,递归地处理自身缩、分成两段分别缩的情况,具体的实现请参考代码。代码:#include &lt;bits/stdc++.h&gt;using namespace std;int dp[110][110],p[110];int n;c...

2018-04-30 17:02:11 113

原创 洛谷P1131 [ZJOI2007]时态同步——题解

题目传送门 题目大意: 看题面吧。思考过程&amp;具体做法: 很明显我们无法直接求得全局的答案,所以要递归处理每棵子树,用dp[i]代表使i的子树中的所有叶子节点时态同步需要的最小代价,转移方程为dp[i]=∑dp[j](j为i的儿子)+∑(子树中最远的叶子节点距离−每个儿子的子树中最远的叶子节点距离)∑dp[j](j为i的儿子)+∑(子树中最远的叶子节点距离−每个儿子的子树中最远...

2018-04-30 16:53:03 93

原创 洛谷P4290 [HAOI2008]玩具取名——题解

题目传送门 题目大意: 看题面吧。思考过程&amp;具体做法: 我们用1,2,3,4分别表示W,I,N,G四个字母,用布尔数组dp[i][j][k]表示从i到j是否能用k来表示,w[i][1],w[i][2],w[i][3]表示读入的数据中w[i][1]w[i][2]可以用w[i][3]来表示,转移方程为:dp[i][j][w[i][3]]=dp[i][t][w[i][1]]&amp...

2018-04-30 16:29:46 124

原创 洛谷P4289 [HAOI2008]移动玩具——题解

题目传送门 题目大意: 有一个4*4的方格,有些格子放有玩具,每次可以将任意两个格子互换,问从起始状态到目标状态最少需要多少步。思考过程&amp;具体做法: 直接跑bfs,对每个图状压记录状态判重就行了。代码:#include &lt;bits/stdc++.h&gt;using namespace std;struct stu{ int step; ...

2018-04-30 15:52:55 302

原创 洛谷P2325 [SCOI2005]王室联邦——题解

题目传送门 题目大意: 题面说得很清楚了。思考过程: 其实这个题很奇怪,既没要求最多可能分多少个省,又没要求城市数最多的省的城市数最小是多少,所以有很多种做法。具体做法: 从1开始做dfs,对所有点维护一个栈,第一次到这个点则让他入栈,回溯时如果比第一次到时栈中元素多了n个或以上,则将这一部分弹栈,划分成一个省,省会为当前回溯的城市,最后未划分的城市和最后被划分一个省合为一...

2018-04-30 15:49:04 109

原创 洛谷P2476 [SCOI2008]着色方案——题解

题目传送门 题目大意: 有k种颜色的油漆,每种只能涂一定次数,所有加起来刚好能涂满,相邻的不能涂相同的颜色,求方案数。思考过程: 我们发现这题的c值非常小,最大才5,于是可以用五维来暴力记录状态,再加上记录上一次涂的颜色,一共六维,可以暴力转移。具体做法: dp[t1][t2][t3][t4][t5][last]其中ti表示能涂i下的颜色有多少种,last表示上次涂的颜色,...

2018-04-30 15:37:46 136

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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