自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 gosh

我的提交不见了

2019-10-13 18:47:39 131

原创 训练笔记 9月26日

感觉是鸽了很久了,觉得还是总结以下提升会比较大。虽然原因其实是临近国庆,平时常用的几个oj都出了点不同程度上的问题,国外节点的CF卡爆,VJ也是很慢,然后bzoj暂时关闭,HDU晚上不营业(就是现在我写博客的时间),突然又不想做题又不想闲着,那就写点东西算了。HDU - 63042018年杭电多校第一场的G题,怎么说呢,这题其实打表可以明显看到有规律可循,因为每种数字x的出现个数就是lowb...

2019-09-26 22:50:45 169

原创 一轮集训半期总结

一轮集训已经到了半程,感觉一直在做题补题一直在做题补题,想着在摸鱼之余挑个时间来好好总结一下了。太鱼的题我就不拿出来说了,讲点有收获的吧。CodeForces - 1061D这题关键就是一个求前驱并修改,一般来说求前驱会用到平衡树,简便用起来就是set就够了。我当时用了一个数组循环模拟做出来的,虽然复杂度n方,但是因为跑不满所以也没被卡死,当然我也证不来真实复杂度,hrdg说是能被卡的,所以还...

2019-07-20 00:24:32 193

原创 图论专题 - 解题报告 - 目录

这时我很懒,就不加简述了直接进题解ABCDEFGHIJKLMNO

2019-06-10 20:01:03 143

原创 图论专题 - 解题报告 - O

题意:空间中内有n个点,连n-1条边,使得这些边的高度差之和比上水平距离之和最小。先来看一下普通的最小生成树(n点m边),其选边规则:x1∗a1+x2∗a2+x3∗a3+...+xm−1∗am−1+xm∗amx_1*a_1 + x_2 * a_2 + x_3 * a_3 + ... + x_{m-1} * a_{m-1} + x_m * a_mx1​∗a1​+x2​∗a2​+x3​∗a3​+....

2019-06-10 19:59:53 177

原创 图论专题 - 解题报告 - N

想起来我觉得这题算是过题数人少里的

2019-06-10 19:59:29 156

原创 图论专题 - 解题报告 - M

一开始写拓扑排序一不小心就写挂了,后来知道差分约束就是专门来解决这种不等式问题,所以学了下新技巧,蛮好用。总的来说就是若A < B,则认为A 到B间有一条长度为1的有向边来表示深度差,若A == B,那么这条有向边不能传达深度差,让它的长度为0,我们能知道AB之间的深度的关系,但是具体的深度差是多少呢?我们来想,具体的深度差由什么决定呢?是不是由A到B的全部通路中最长的一条(中间点数最多的...

2019-06-10 19:59:00 155

原创 图论专题 - 解题报告 - L

首先想,这里有一堆物品,你可以选择取用或者不取,每种有一定的收益,支付一定的代价,那么就决定是你了!背包!(抱歉不是dp,OJ会等你枚举个2n 次?)权衡奖金与代价,这两者是有我没他的,怎么去处理呢?我们先建立一张图,所有的亲戚要求与源点相连,容量为其收获(压岁钱);所有的购买物与汇点相连,容量为其价格。所有要求与购买物相连,容量无限大(一定能买到)。这个时候跑最小割,必定会割掉连接源点或者...

2019-06-10 19:57:15 112

原创 图论专题 - 解题报告 - K

首先,做题的一个技巧就是观察数据范围奇特的地方。这道题的k只有20,n也比一般的图的10w级别要小,也许就是要在这里做文章。一般来说突然出现的小数据k,就是让我们巧妙地将一个算法复杂度扩大k倍的常数就能做的情况。分层图求最短路问题!这个类图建立的思路很棒,就是把原图复制k份,形成一个三维的图形,同一层点之间的边权就是原图中的边权,相邻两层的点之间的边权都是零(脑子里一旦有了这个图的大致形...

2019-06-10 19:56:40 138

原创 图论专题 - 解题报告 - J

题意:给你一个二分图,选出最少的点使得覆盖的边数最多。查阅过之后发现这就是常说的二分图中最小点覆盖问题,而最小点覆盖问题是可以转化为二分图最大匹配问题的,详见 二分图最大匹配的König定理及其证明二分图最大匹配:对于二分图G的一个子图M,若M为其边数最多的子图,则称M为G的最大匹配。那么问题来了,二分图最大匹配如何求呢,自然匈牙利算法是常用解法,但是复杂度O(n3)O(n^3)O(n3)...

2019-06-10 19:55:22 138

原创 图论专题 - 解题报告 - I

第K短路首先可以想到在BFS中,从起点开始走,把每个点放入队列中时,以当前走过的距离加上当前点到终点的最短距离的和(即我们假设可以预知走哪个点到终点的距离最短)作为比较条件从小到大排序,当第一个到达终点时,走过的路径长度即为最短路,那么第k次到达终点的长度显然就是k短路。那么接下来就是问题的核心了,如何判断哪个点到终点的距离最短呢?我们需要一个排序条件,可以保证每次都优先走最有希望到达终点的点...

2019-06-10 19:54:51 131

原创 图论专题 - 解题报告 - H

首先整个题就透露着那么几个字:网络流板子。但是不会咋整啊,学呗。这里整理了一下网络流的求法知识啥的。这里引用一下别人博客的内容,这一篇是找到的比较好的了:增广路:找到一条从源点到汇点的路径,使得路径上任意一条边的残量>0(注意是小于而不是小于等于,这意味着这条边还可以分配流量),这条路径便称为增广路找到这条路径上最小的F[u][v](我们设F[u][v]表示u->v这条边...

2019-06-10 19:54:14 185

原创 图论专题 - 解题报告 - G

没啥好说的,排序后贪心,并查集判定连通,达成数量条件就可以输出。#include<bits/stdc++.h>#define FOR(a, b, c) for(int a=b; a<=c; a++)#define maxn 500005#define maxm 55#define hrdg 10007#define zh 16711680#define inf 21...

2019-06-10 19:53:41 283

原创 图论专题 - 解题报告 - F

题目大意:单源,带环有向图中求多终点中最长路。有这样的题意,解法就很明显了,把环内的收益tarjan缩点为新的强连通分量,构造新图,从起点开始跑一遍spfa最长路循环找最优解就行了。但是首先,我们得先来了解一下tarjan缩点要怎么操作:TARJAN总的来说是需要一个递归函数来完成缩点,类似于dfs。递归过程中我们维护两个数组dfn[ ],low[ ],前者是点 i 的进入时间,后者是...

2019-06-10 19:52:38 134

原创 图论专题 - 解题报告 - E

这题是我最先开始做的一批题之一,糖哥tql,您带的榜可卡死我咯。一开始想到一个很单纯的套路,就是搜,最短路,最少代价最先到达,BFS走起冲冲冲,每次到下一个层次的新点就延申出一条边,一次性更新全部同色的边上点的深度。每次广搜扩展就有了很多跳过条件,能保证每条边最多遍历一次,这么听起来好像算是Om的算法?但是由于每次在一个点上判断次数过多,所以这么做基本上是必t的,加了算是优秀的剪枝也过不了19点。...

2019-06-10 19:51:40 161

原创 图论专题 - 解题报告 - D

问题大意就是给出多次询问,问两点间的最短路,首先知道每次都跑一遍最短路肯定是不现实的,总共1e5次询问你来?但是我们如果能预处理出一些两点间的最短路径关系就可以完成这样的查找了对吧。如果用上最小生成树呢?树覆盖了全部点,我们要最短路,要么在树上,要么过树外的一条边。树外这些冗余的点边关系就派上了用场,我把那些冗余边的端点称为坏点(badnode),两点(u,v)间的树上距离(u→→ v)可以用...

2019-06-10 19:51:05 156

原创 图论专题 - 解题报告 - C

首先这是明确的是一个打印有向图欧拉通路路径的题目,现在我们知道欧拉通路的成立需要些什么条件:图连通每个点的入度等于出度或有两个点入度不等于出度,且一个点出度比入度大一(起点),另一个点入度比出度小一(终点)如下图只能从中间一点开始到中间另一点结束,并且起点出度比入度大一推论:当有向图D,除了出度,入度之差为1,-1的两个节点之外,其余顶点的出度与入度相等时,D的有向欧拉通路必以出度...

2019-06-10 19:50:32 191

原创 图论专题 - 解题报告 - B

先来看看我一开始以为这个题是什么吧。因为买下来的路就可以来回走动,所以就是买下来最小生成树就是代价,这是没有选择免费边的情况。如果能免费一条边呢,我们连出一个缺少最长边的最小生成树,保证代价最小,然后再连入最后一条边,如果最后一条边能连出整棵树,那么代价一定就是最小的,这样的情况有多少也很好计算。很可惜必不是正解,举出反例,如果最长边有好几条,这样的话绝对只会计入一种的情况,至于分类再枚举最长边讨...

2019-06-10 19:49:29 143

原创 图论专题 - 解题报告 - A

重要结论:如果有在一颗有向边的DAG上(无环),连上一条新边,一定存在一个方向使得这个新图依旧无环。

2019-06-10 19:48:15 168

原创 动态规划专题 - 解题报告 - 目录

A - oy环游世界 - 解题报告状态压缩dp入门题B - 挖矿攻略 - 解题报告棋盘dp问题,是需要自己画出图来想通了就简单的那种C - 手办 - 解题报告四维状压dp,原型:help bubuD - 序列 - 解题报告最长上升路径nlogn做法E - 神 - 解题报告F - 苇名欧一郎 - 解题报告状压dp,预处理和状态转移的设计G - 子串 - 解题报告状态设计出后就...

2019-05-25 23:21:39 205

原创 动态规划专题 - 解题报告 - M

别的我不说了,良心题解先吹一波好吧。最重要的使这一段假如第一位4,第二位7,三四位就可以随便取了。设这种状态为(2,2),意思为前两位已经匹配上了4750的第二位。则用dp[2][2]表示(dp[100010][5],一共5*1e5种状态)。那么(2,2)就有10种选择(0~9):·会转移1次到(3,3)(选5);·1次(3,1)(选4);·8次(3,0)(选其他)在一番推导后,...

2019-05-25 23:19:20 302

原创 动态规划专题 - 解题报告 - L

转移方程:dp[i]=min(dp[i],dp[j]+(x−L)2),0&lt;=j&lt;=i−1dp[i]=min(dp[i],dp[j]+(x-L)^2) , 0&lt;=j&lt;=i-1dp[i]=min(dp[i],dp[j]+(x−L)2),0<=j<=i−1但是如果只是单纯的n2 爆破大概率超时,(但就是有爆破神仙过了),这里的优化想法...

2019-05-25 23:18:19 103

原创 动态规划专题 - 解题报告 - K

首先想到靠一次抽中和靠收集碎片得到角色得分开计算。n次里靠一次抽中的概率为:ans1=1−(1−x)nans1 =1-(1-x)^nans1=1−(1−x)n而靠收集碎片则需要一个递推公式,我们令dp[ i ][ j ]为抽i次抽到j种碎片的概率,是由以下两种情况转移而来的i-1次抽奖时已经抽到了j种碎片dp[i - 1][j],那么再抽一次,要么什么都抽不到,要么出的碎片还是之前出现过的...

2019-05-25 23:16:26 131

原创 动态规划专题 - 解题报告 - I

我们发现如果把攻略每位女主角需要的魅力值大小从大到小排过序后,选择较大的一个后再选其他的女主角就不需要计算在魅力值上的氪金了,只用考虑花费和收益,意思是这样预处理后就变成了一个板板的01背包?但是复杂度变成了n3 ?这是每一次先枚举最后一位的之后的计算,但是和滚动数组优化一样,都是逆序倒推,那么有没有可能优化呢?我们用滚动数组优化的是空间复杂度,意思是一般的背包只需要一维数组,但是我们看数据的...

2019-05-25 23:12:34 171

原创 动态规划专题 - 解题报告 - H

eom选择的时候:dp[i]=make_pair(dp[j].first+a[i],dp[j].second)j为节点i的儿子中dp[j].first尽可能大并在此基础上dp[j].second尽可能小的儿子编号。moe选择的时候:dp[i]=make_pair(dp[k].first,dp[k].second+a[i])k为节点i的儿子中dp[k].first尽可能小并在此基础上dp[...

2019-05-25 23:11:36 172

原创 动态规划专题 - 解题报告 - G

第i位之前,以i位结尾的子串,与第(i-1)位一起考虑的话,会有这样的规律,i-1位上的子串的数量乘以10+第i位的数字,就是当前串的大小,但是我们需要的不是大小,而是能否整除数字k,其实就更方便了,因为i-1上的数字取模后不影响乘积求和再取模,我们知道每一次的取模都会对后面的状态转移有影响,而且每次取模后结果都可以控制在k内,我们其实可以把每一次取模后结果为t的数量记下来,我们最后求的是t==0...

2019-05-25 23:09:56 124

原创 动态规划专题 - 解题报告 - F

首先我们要找如何让状态转移,前提就是需要知道那些状态能干掉j用压缩后的状态来表示当前的武器,如果i的状态(初始为weapon[0])可以杀死敌人j,那么就可以升级武器weapon[i],weapon[i] |= change[j],所以武器i的下一轮的武器k的状态就是更新后的weapo[i]。dp就是如果当前武器i无法杀死敌人j,但是武器升级后weapon[i]可以直接杀死,因为i到weapo...

2019-05-25 23:08:29 110

原创 动态规划专题 - 解题报告 - E

dp[i][j]表示第i块中第j位结尾的最小值。初始化并读入字符串。处理第一个板块,数出现了几个字母,第一块中对于任何j都有dp[1][j] = cnt。然后处理后面的板块,枚举块数,从2到len/k,每一个板块内,数出出现字母种类数,并开始枚举第i块的第j位(使以j位为板块结束),内嵌套枚举i-1块的第p位,只要p位在i段出现过,且i段只有这一种字母或者i段最后一个字母不是p位字母,那么就...

2019-05-25 23:07:02 85

原创 动态规划专题 - 解题报告 - D

我们先来想想n2 怎么做,两个n2 循环一个求以i结尾的最长上升子序列,另一个逆序求一遍,然后枚举i,以i为中间点的长度,循环更新结果就有了。是不是很简单,恭喜你TLE。想都不用想必T好吗?没有个nlogn算法怎么在1e6的数据范围面前找场子?nlognnlognnlogn做法:我们其实不难看出,对于n2做法而言,其实就是暴力枚举:将每个状态都分别比较一遍。但其实有些没有必要的状态的枚...

2019-05-25 23:05:34 104

原创 动态规划专题 - 解题报告 - C

依旧是先写博客打草稿再写码,听过题解后来整理一下思路,我们把抽出插入分为两个部分,①抽出k个手办,②将k个手办插入剩余(n-k)的手办堆中。问题二很好解决,只要插入的堆中有一样高度的手办,就不会改变混乱值,尽量把这个手办安排在队列最后就不会影响到前面的排列,总体来说就是个贪心的思路。问题一是难点,前n个手办抽出k个每个手办的状态只有取(1)或者不取(0)两种状态,这听起来就很01背包了,对于第...

2019-05-25 23:02:57 205

原创 动态规划专题 - 解题报告 - B

首先在从一个点,目标是向西运输,那么它一路走过的路径x中可能朝西也可能朝北,但最终指向的都是西边,画图可知西方同行中所有的矿点必只能向西运输,即使是从出发就开始一路向北,最终也只能汇流进路径x中,指向西。从该点向北的运输,北方同列的考虑也是一样的。我们可以预处理出从一个点向西和向北的贡献是什么。我们令dp[i][j]为前i行j列的矿石采集总数,在点(i, j)有这么一堆矿石,我们只能二选一将其向...

2019-05-25 23:00:47 146

原创 动态规划专题 - 解题报告 - A

一个经典的货郎担问题,加上17的范围限制各种明示状态压缩,用二进制来表示走过哪几个城市,我们可以开一个二维数组dp[i][j],表示走过了i的城市,最后在j城市停留的距离。预处理一遍每个城市间的距离,算出dis[i][j],到dp[i][j]的状态可以由[1 ^ (1 << j)][k]转移过来,比较距离保存最优值就行,然后就有转移方程:dp[i][j] = min(dp[i][j]...

2019-05-25 22:59:32 143

原创 数据结构专题 - 解题报告 - O

按位异或,将数字转化为二进制数字,按位比较,如果不相等则为1,相等则为0。做法是建立一颗01trie,在字典树上贪心查找,从高位到地位,最大值是有不同的位就选不同的数字,最小值则是在同一位上尽可能选择相同的数字。插入:化为二进制表示就是从最高位向下排列,依次搭入主树干,如果有出现过的节点,就在数该节点出现次数cnt[now]++,之后也方便删除操作。在树枝末端存下该树枝表示的数字,查询方便调用。...

2019-05-12 17:31:30 98

原创 数据结构专题 - 解题报告 - N

很板的题,我建了三棵树,分别维护区间和最大值最小值,当然更简洁的写法是结构体一次挂三个属性。不过也没差其实。要注意的是,查询时初始化最小值最大值要用llinf,之前定义的inf是不够的,详见我的宏定义。话说这两个还是之前偷看zh的cf上的代码学来的(斜眼笑)……#include<bits/stdc++.h>#define maxn 10000005#define maxm 2...

2019-05-12 17:31:16 106

原创 数据结构专题 - 解题报告 - M

首先感谢dalao前辈提供思路,整理如下:读入数据并前向星建图以1为根节点dfs走图建树,并标记已经走过(布尔型vis[ ]数组判断),以防走回父节点,然后深度(depth[ ])逐级+1,且dis[to]=depth[to](因为现在的最短距离是到根节点1的距离,即深度),然后搜下一个点。建图完毕后倍增初始化。m次循环,输入操作类型和操作点,如果是染色,那么红色总点数++,为当前点,如...

2019-05-12 17:31:02 155

原创 数据结构专题 - 解题报告 - L

等差数列嘛,就是公差相等嘛。求最长一段序列等差数列差不多就是求公差相等的序列最长的长度,但是,注意这里有一点点不一样,我们假设有三个连续的数公差为1,但是我们会说这串等差数列长度为4。而在区间左端点开始便右三个连续数公差为1则不一样,因为这样的等差效果没办法延申到左端点左方,那不在我们需要查询的区间内。处理方法是查询从左端点右方一位开始至右端点结束,然后ans++。然后就是简单的维护线段树...

2019-05-12 17:30:49 113

原创 数据结构专题 - 解题报告 - K

这题一开始我看到,反应的是用差分求关系,然后挨个推,但是发现这个做法有很多逻辑上的漏洞填不起来,虽然能过前7个点(捂脸笑),在这种错误的想法中做了各种优化的尝试,后来才意识到!原来是考并查集啊……但是我原本的想法出发点其实没错,我们知道区间 [l, r] 的区间和为奇数或者偶数,用前缀和差分来考虑就是 sum[r] - sum[l-1] ,l-1和r间的差值为奇数或者偶数。我们可以这么想,如果差...

2019-05-12 17:30:35 141

原创 数据结构专题 - 解题报告 - J

原题洛谷P1484种树,又捡到一题做过的,lucky。所谓用堆来解决问题,从来就是一个词,贪心,堆的使用是否成功取决于你贪心的策略,而贪心一般来说处理起全局最优是有难度的,本题引入了一个小有名气的进阶贪心策略,反悔贪心。通过读题,我们发现贪心有一个尴尬之处在于,你如果选择了此刻的最大值i,那么在选择两个的条件下,你只能选择a[j]+a[i] (j !=i-1 && j != ...

2019-05-12 17:30:21 193

原创 数据结构专题 - 解题报告 - I

平衡树做法,因为最近正好自己看了点平衡树相关的知识,便觉得这个题就是专门为了平衡树准备的。(完全没想到set,其实也是不会用)因为查排名,如果我们有一棵二叉搜索树那就很好办,上面每个点都有相应的判断位置的值,从根节点入手,如果当前节点比过题数较多就往左儿子查,过题少就往右儿子查,相等就是判断罚分然后向左或者向右儿子搜索。一旦发现与当前节点过题数和罚分都相等的节点就返回左方所有节点囊括的点数,在那...

2019-05-12 17:30:06 181

原创 数据结构专题 - 解题报告 - H

单调队列的板子题,维护好队首队尾,然后一路找最值过去。维护的操作注释写在代码里了int n, m;ll sum[maxn], x, ans=-inf;int q[maxn]; //q[]是队伍位置(下标)int head=0, tail=1;int main(){ n = read(); m = read(); FOR(i, 1, n) ...

2019-05-12 17:29:49 111

空空如也

空空如也

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

TA关注的人

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