- 博客(99)
- 收藏
- 关注
转载 博客搬迁
新博客地址:https://neworld2002.github.io/此博客不会再次更新转载于:https://www.cnblogs.com/Neworld2002/p/10561254.html
2019-03-19 20:54:00
146
转载 曼哈顿MST学习笔记
曼哈顿MST的学习笔记这几天一直在验wsydalao的题,需要用到曼哈顿MST,于是赶紧补一下功课。定义曼哈顿距离:平面上两点\((x_1,y_1)\)和\((x_2,y_2)\)之间的曼哈顿距离为:\(|x_1-x_2|+|y_1-y_2|\)(为了方便我们之后简称为\(dis\))曼哈顿MST:平面上若干个点,他们两两之间存在一条权为其\(dis\)的边,求这个图的最小生成...
2019-03-09 01:22:00
464
转载 [FJWC2019] 全连
Description有若干个音符,出现的时间为\(i\),若选择这个音符,则\((i-t_I,i+t_i)\)这部分的音符都不能选。每个音符都有权值,求可以得到的最大权值。数据范围\(N \leq 1000000\)。Solution上机的时候没有做出来。只写了一个\(O(N^2)\)的解。一开始我想把这些音符建个图:所有音符向\((i-t_I,i+t_i)\)之外的音符连边,...
2019-02-16 21:54:00
250
转载 [模板] 最长上升子序列
传送门看题解做的。想一想最长上升子序列,有一个NlogN的做法。也就是说如果我们把大小按12345排,改成按a[1]a[2]a[3]a[4]排,就可以求一个b的最长上升子序列。并且这个b的子序列在a中一定存在,且最长.#include <cstdio>#include <cstring>#include <algorithm>#defi...
2019-02-16 10:01:00
87
转载 FJWC2019 游记
Day1很奇怪居然没有day0充满欢乐的一天。难得起床时间在日出之前,出门想捞一张照片发现天亮了emmmm。感觉箱子装的作业太多了,重心过偏一直倒。比较头铁的是动车票都卖光了,于是坐到尤溪(20分钟)改了站票(1小时)。宾馆还是同一家,但较夏天多了一些装饰(好评),但是!厕所还是半透明!!!中午拿到了营员证和餐票,营员证简直丑出天际……llz”点“了外卖,于是等了快一个...
2019-02-11 23:54:00
189
转载 [模板] 可持久化并查集
传送门基于可持久化数组 = 可持久化线段树 = 主席树,使用按秩合并,并且查询操作返回点的位置,可以重复使用,能减少查询次数。#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 6000005int fa[MAXN],d[MAXN],root[MAXN];...
2019-02-06 16:30:00
70
转载 [模板] 可持久化数组
传送门可持久化线段树建树、单点修改、单点查询#include <cstdio>#include <cstring>#include <algorithm>#define MAXN (1000005*20)int root[MAXN];inline int read() { int flag = 1,num = 0; ch...
2019-02-05 22:21:00
81
转载 [luogu1231] 教辅的组成
传送门这题有个坑点(好吧是我第一次做这类题没有感觉)。就是一本书只能用一次,也就是这个点带有点容量,所以需要进行拆点。#include <queue>#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 20005#define INF 2147...
2019-02-02 12:04:00
99
转载 [luogu2774] [网络流24题] 方格取数问题
传送门某个方格如果选了,那么其周边的四个方格都不能选,有点二分图染色的味道。考虑建立一个二分图。源点向\(x+y\)是奇数的连边,是偶数的向汇点连边。然后根据最大和 = 全局和 - 舍弃和 = 全局和 - 最大流,求解可以理解为在这个二分图中存在一个简单割,有一些点就被舍弃掉了,剩下的点就是我们要需选取的。#include <queue>#include <...
2019-02-02 11:19:00
74
转载 [luogu2762] [网络流24题] 太空飞行计划问题
传送门一道最大权闭合子图的题目。直接建图跑dinic就行了,答案为正权点-最大流。那剩下的问题就是如果知道哪些点被选进最大权闭合子图。我们知道一个简单割对应了一个闭合子图,当这个简单割是最小割,即最大流,其与\(s\)相关的点即为闭合子图。#include <queue>#include <cstdio>#include <cstring>...
2019-02-01 20:33:00
95
转载 [笔记] 最大权闭合子图&&最大流最小割相关笔记
最大权闭合子图对于最大权闭合子图的理论学习并且补充一部分网络流的笔记有向图中若干个点组成的一个集合\(V\),集合\(V\)的所有出边所连的点也都属于\(V\),这些点构成的图即为闭合子图点有点权,最大权闭合子图即为权值和最大的闭合子图Solution建图建立超级源点\(s,t\)\(s\)向所有点权为正的点连一条容量为其权值的弧所有点权为负的点向\(t\)连一...
2019-02-01 00:01:00
104
转载 [luogu1341] 无序字母对
欧拉路径模板,但是细节有点多……存在欧拉路径的条件:图连通 : 使用并查集维护只有两个点的度为奇数,或者没有一个点#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 1005bool vis[MAXN];int fa[MAXN];int dre...
2019-01-29 00:07:00
100
转载 [Luogu2756] [网络流24题]飞行员配对方案问题
传送门这应该是比裸的一个网络流/二分图匹配了。直接跑一遍Dinic求出最大流。再依次遍历所有二分图上的边,如果剩余流量是0,则说明两者相互匹配,作为一组输出。#include <queue>#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 2...
2019-01-05 18:43:00
90
转载 二分图最大匹配 - 网络流
建立一个超级源点和超级汇点,点与点之间的容量均为1,因为一个点只能匹配一个点,源点向所有左边的点连边,汇点向右边的点连边。最后网络的最大流即为最大匹配。#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 2005struct queue { int ...
2018-12-29 20:07:00
244
转载 [模板] 网络流
网络最大流DInic#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 10005#define MAXM 100005#define INF 2147483647struct queue { int q[MAXN]; int head,tai...
2018-12-23 13:26:00
75
转载 [luogu1486][NOI2004]郁闷的出纳员
传送门看到这题觉得是平衡树,因为有查找第k大和插入删除操作。但是我不会平衡树啊……所以拿树状数组写了一个伪平衡树。对于插入操作,直接插,但是要减掉一个rec值。这个rec是什么意思等下说。对于删除操作,直接删就行了。对于A,我们肯定不行把所有数字都加一遍,于是利用rec,使rec这个变量加上修改值。所以员工真正的工资 = 他们的值 + rec对于S,同理。但是这里我们需要不断...
2018-12-21 13:31:00
108
转载 [luogu2471][SCOI2007]降雨量
传送门细节题……首先离散化。然后用线段树维护最大值因为左端点和右端点的存在性,要做一系列的讨论。#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 50005struct Node { int year,val;}G[MAXN];in...
2018-12-12 12:34:00
112
转载 [luogu1198][JSOI2008]最大数
传送门最初用线段树写,莫名其妙挂掉了……于是开始单调栈:如果后来的数大于前面的数,那么前面的数一定不会作为答案,出栈。否则直接插入即可,并记录编号。那么查询操作,只需要二分查找即可。#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 200005...
2018-12-07 23:12:00
70
转载 [luogu1972][SDOI2009]HH的项链
传送门开始用莫队水了90分。想了很久还是没想出来,于是看了一眼题解。妙!实在妙!考虑一个数字只被算一次?那么其他的数应该被删掉。对于一个固定的右区间端点,显然删的数越往后越好。于是考虑把所有询问的区间按右端点排序,然后开始扫一遍。用树状数组维护前缀和。#include <cstdio>#include <cstring>#include <a...
2018-12-05 22:10:00
89
转载 [luogu1494] [国家集训队]小Z的袜子
传送门直接普通莫队敲上去。问题在于每只袜子对于答案的贡献。1只袜子的恭喜是0,2只是1,3只是3……其实就是x的贡献是\(1+2+3+...+(x-1)\),这里直接等差数列求和就行了。最后求出gcd,就可以得到最简分式#include <cstdio>#include <cstring>#include <algorithm>#inclu...
2018-12-02 11:00:00
99
转载 [luogu2709] 小B的询问
传送门直接莫队即可。#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#define MAXN 50005struct Node { int l,r,num,ans;}G[MAXN];int book[MAXN];in...
2018-12-01 18:04:00
73
转载 UVA11992 Fast Matrix Operations
传送门发现最多只有20行,所以开20个线段树处理即可。当然存在更优的做法,就是一行接着一行,变成一个线段树,节省空间。#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 1000006#define lson (rt<<1)#define rs...
2018-12-01 18:02:00
99
转载 浅谈普通莫队算法
前言对于一个维护区间的问题,最暴力的方法就是每次枚举区间,进行统计。而这就是莫队的基本思路但不过莫队的枚举是进行优化的,可以优化到\(O(N\sqrt{N})\)基本思路首先:已知\([L,R]\)的答案,那么求\([L-1,R]\) 、\([L+1,R]\) 、\([L,R-1]\)、\([L,R+1]\)的代价为\(O(1)\)如果你已知区间\([L,R]\)的答案...
2018-12-01 17:58:00
113
转载 [模板] 普通平衡树
传送门您需要一种数据结构:插入一个数\(x\)删除一个数\(x\)查询\(x\)这个数在所有数中的排名查询排名为\(x\)的数求\(x\)这个数的前驱(前驱定义为小于\(x\)的最大数)‘求\(x\)这个数的后继(后继定义为大于\(x\)的最小数)平衡树Splay#include <cstdio>#include <cstring>#i...
2018-11-28 19:39:00
94
转载 [luogu5022][NOIP2018] 旅行
传送门这个思路在考场上就想出来了,但是没有写出来很可惜。对于一棵树来说,求其最小字典序的dfs序非常简单,每次从小到大遍历出边即可。对于边我们考虑事先进行排序,然后再插入到邻接表里。时间复杂度为\(O(N\log N)\)对于一个图,并且\(N=M\),就可以保证有且只有一个环。那么会出现一种神奇的情况,如果按照树的做法进行dfs:你的dfs序是132546,但是答案是1324...
2018-11-28 19:17:00
139
转载 [luogu4315] 月下“毛景树”
传送门这题真棒!首先是这题是边权题,为了方便处理,化为点权。可一条边有两点点啊,用哪个存权值好呢?当然是儿子啦!因为一个儿子唯一对应一个连着父亲的边。然后这题对于线段树涉及到区间最值查询、区间修改、区间加、单点修改,我很偷懒地把单点修改弄成区间修改了。那么运算优先级问题:区间覆盖优于区间加,因为一旦有一个区间覆盖出现,之前所有的区间加都可以情空,处理起来很方便。那么就是剖分的问...
2018-11-25 20:04:00
67
转载 [luogu3258] [JLOI2014]松鼠的新家
传送门这道题可以用树剖或树上差分+LCA做,思路一致。每次把两个点之间的路径+1即可,但是这里是经过一次+1次,终点除外。这里采用树上差分+LCA,LCA使用树剖维护树上差分的思路是:每个点的权值为其子树的权值和。修改u到v的路径,那么\(val[u]+1,val[v]+1,val[lca]-1,val[fa[lca]]-1\)为什么是对的呢?对于这条路径,路径下的点的权值显然...
2018-11-23 21:45:00
66
转载 [luogu2486] [SDOI2011]染色
传送门emmmm裸的树剖,但是考点好像是在线段树上……如何维护一个区间里有多少个连续相同的数字块呢?考虑对于\(a\)和\(b\)两个区间,如果他们相接的端点颜色相同,那么合并出的新区间的\(seg = seg[a] + seg[b] - 1\),否则就是\(seg = seg[a] + seg[b]\)这就是pushup操作了,但是懒标记怎么下推?直接把区间\(seg = 1\)...
2018-11-23 19:24:00
100
转载 [luogu2590] [ZJOI2008]树的统计
传送门emmm树剖裸题,就线段树维护一下最大值和权值和就行了。这里有一个点就是:因为会出现负数,所以查最大值的时候不能初始化为0,这样就没法维护负值#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 30005struct Node { long...
2018-11-21 20:02:00
54
转载 浅谈树链剖分
传送门捡起了之前树剖的坑,之前只写了树剖LCA的板子但是树剖模板却一直没有写好,学长sjie非常贴心地给我们上课,于是我去补了一下板子,并且写下自己对树剖的理解。树剖用来干什么?维护树上的修改求u到v的路径上的所有点的权值和修改u到v的路径上的所有点的权值求以u为根的子树的结点的权值和修改以u为根的子树的结点的权值LCA树剖怎么实现?利用dfs序,将树上节...
2018-11-17 15:21:00
70
转载 思维记录
对于访问次数很多的题目,可以考虑预处理离线做,也可以在线搞一搞转载于:https://www.cnblogs.com/Neworld2002/p/9908522.html
2018-11-05 12:45:00
79
转载 NOIP2018游记
day(-1)赶车坐车坐车坐车坐车真是偏僻……颓废了一个早上,中午把某jl机房惨案(逃,一个下午咸鱼干活,晚上欢乐游戏day0剪视频+剪视频+剪视频……感觉还可以……不管了丢下工作之后再说了。开始写模板,状态非常不好,缩点tarjan交了好几次一直WA且找不到错,最后一行一行地和之前的代码比较,才发现自己把low[u] = std::min(low[u],low...
2018-11-02 23:32:00
162
转载 [luogu1880] [NOI1995]石子合并
传送门Solution看上去的确是一道dp题,还是区间dp的那种但是你发现这是一个环,非常难受所以我们想啊:如果这是一条链该多好于是乎,我们直接把这个环拉直。1 2 3但是怎么绕回去呢?再接一遍好了:1 2 3 1 2这样就可以了!!那么如何进行区间dp呢?首先我们定义\(dp[i][len]\)为合并\([i,i+len-1]\)这段区间的最优值那么我们一定可以找...
2018-10-24 21:54:00
87
转载 [luogu1197] [JSOI2008]星球大战
传送门看到联通块,好像跟并查集、强连通分量有关系吧,仔细一看跟哪些点属于哪些块没关系,只关心联通块数量,那么应该可以用并查集做。继续看,这是一道删边的题,好像很难维护删边,我们又知道并查集是可以维护加边的,那么我们就倒过来做好了。#include <cstdio>#include <cstring>#include <algorithm>#d...
2018-10-19 00:21:00
56
转载 [luogu2055] [ZJOI2009]假期的宿舍
传送门所有学生都有床可以让认识自己的人睡,不在校的学生不占用床铺。考虑建一个二分图,人对应床,求出最大匹配,根据题意,所有人都应该被安排上,那么就不能存在无法匹配。#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 55int Link[MAXN],vi...
2018-10-05 10:58:00
67
转载 [luogu1993] 小K的农场
传送门Solution算是一道差分约束的模板题了。将符号统一一下,如果是小于号就求负环,否则求正环#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 10005struct edge{ int v,w,next;}G[MAXN<<...
2018-10-04 12:19:00
62
转载 [luogu1983] 车站分级
传送门妙啊……很容易想到建个图,然后跑一下拓扑排序,看看有几层就行了。但是会发现连边的代价是平方。所以可以建立一个虚点,将层与层之间的所有边汇集同一个点上。然后就只需要线性的代价就可以做了。#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 2005...
2018-10-03 11:59:00
80
转载 My Code Style of OI
参考资料: Menci's Code Style for OI概况在任何地方,不同功能的代码块应使用空行隔开全局变量按照:结构体、数组、单个变量排列。预编译指令#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 1005#define INF 21...
2018-09-23 16:26:00
80
转载 [luogu1119] 灾后重建
传送门Solution虽然没做过多少Floyd的题……但是还是灵性了一波。首先你会发现数据是有单调性的!那么我们就干脆一个一个点加进去跑Floyd就行了,那么怎么加点呢?对于某个点key,我要把它加进去,我们可以假设它是起点,那么以i为中点,j为终点,跑一下平方的松弛操作;同上,分别假设key为终点,key为中点。这样我们每加入一个点,它的循环次数跟跑一次完整的Floyd一样了...
2018-09-21 23:40:00
61
转载 [luogu1462] 通往奥格瑞玛的道路
传送门首先就发现了这题可以二分答案,毕竟是求最大的最小。考虑二分最大边,则所有边权大于二分值的边都不能选。在此基础上跑SPFA,求出从1到N耗的最少血量。然后观察血量是否为空即可。#include <cstdio>#include <cstring>#include <algorithm>#define SIZE 16383#defin...
2018-09-14 23:45:00
138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人