自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 博客搬迁

新博客地址:https://neworld2002.github.io/ 此博客不会再次更新 转载于:https://www.cnblogs.com/Neworld2002/p/10561254.html

2019-03-19 20:54:00 201

转载 曼哈顿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 585

转载 [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 325

转载 [模板] 最长上升子序列

传送门 看题解做的。 想一想最长上升子序列,有一个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 143

转载 FJWC2019 游记

Day1 很奇怪居然没有day0 充满欢乐的一天。 难得起床时间在日出之前,出门想捞一张照片发现天亮了emmmm。感觉箱子装的作业太多了,重心过偏一直倒。 比较头铁的是动车票都卖光了,于是坐到尤溪(20分钟)改了站票(1小时)。 宾馆还是同一家,但较夏天多了一些装饰(好评),但是!厕所还是半透明!!! 中午拿到了营员证和餐票,营员证简直丑出天际…… llz”点“了外卖,于是等了快一个...

2019-02-11 23:54:00 271

转载 [模板] 可持久化并查集

传送门 基于可持久化数组 = 可持久化线段树 = 主席树,使用按秩合并,并且查询操作返回点的位置,可以重复使用,能减少查询次数。 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 6000005 int fa[MAXN],d[MAXN],root[MAXN];...

2019-02-06 16:30:00 115

转载 [模板] 可持久化数组

传送门 可持久化线段树 建树、单点修改、单点查询 #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 125

转载 [luogu1231] 教辅的组成

传送门 这题有个坑点(好吧是我第一次做这类题没有感觉)。就是一本书只能用一次,也就是这个点带有点容量,所以需要进行拆点。 #include <queue> #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 20005 #define INF 2147...

2019-02-02 12:04:00 161

转载 [luogu2774] [网络流24题] 方格取数问题

传送门 某个方格如果选了,那么其周边的四个方格都不能选,有点二分图染色的味道。 考虑建立一个二分图。源点向\(x+y\)是奇数的连边,是偶数的向汇点连边。 然后根据最大和 = 全局和 - 舍弃和 = 全局和 - 最大流,求解 可以理解为在这个二分图中存在一个简单割,有一些点就被舍弃掉了,剩下的点就是我们要需选取的。 #include <queue> #include <...

2019-02-02 11:19:00 123

转载 [luogu2762] [网络流24题] 太空飞行计划问题

传送门 一道最大权闭合子图的题目。直接建图跑dinic就行了,答案为正权点-最大流。 那剩下的问题就是如果知道哪些点被选进最大权闭合子图。 我们知道一个简单割对应了一个闭合子图,当这个简单割是最小割,即最大流,其与\(s\)相关的点即为闭合子图。 #include <queue> #include <cstdio> #include <cstring>...

2019-02-01 20:33:00 137

转载 [笔记] 最大权闭合子图&&最大流最小割相关笔记

最大权闭合子图 对于最大权闭合子图的理论学习并且补充一部分网络流的笔记 有向图中若干个点组成的一个集合\(V\),集合\(V\)的所有出边所连的点也都属于\(V\),这些点构成的图即为闭合子图 点有点权,最大权闭合子图即为权值和最大的闭合子图 Solution 建图 建立超级源点\(s,t\) \(s\)向所有点权为正的点连一条容量为其权值的弧 所有点权为负的点向\(t\)连一...

2019-02-01 00:01:00 161

转载 [luogu1341] 无序字母对

欧拉路径模板,但是细节有点多…… 存在欧拉路径的条件: 图连通 : 使用并查集维护 只有两个点的度为奇数,或者没有一个点 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 1005 bool vis[MAXN]; int fa[MAXN]; int dre...

2019-01-29 00:07:00 157

转载 [Luogu2756] [网络流24题]飞行员配对方案问题

传送门 这应该是比裸的一个网络流/二分图匹配了。 直接跑一遍Dinic求出最大流。再依次遍历所有二分图上的边,如果剩余流量是0,则说明两者相互匹配,作为一组输出。 #include <queue> #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 2...

2019-01-05 18:43:00 138

转载 二分图最大匹配 - 网络流

建立一个超级源点和超级汇点,点与点之间的容量均为1,因为一个点只能匹配一个点,源点向所有左边的点连边,汇点向右边的点连边。最后网络的最大流即为最大匹配。 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 2005 struct queue { int ...

2018-12-29 20:07:00 318

转载 [模板] 网络流

网络最大流 DInic #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 10005 #define MAXM 100005 #define INF 2147483647 struct queue { int q[MAXN]; int head,tai...

2018-12-23 13:26:00 123

转载 [luogu1486][NOI2004]郁闷的出纳员

传送门 看到这题觉得是平衡树,因为有查找第k大和插入删除操作。 但是我不会平衡树啊……所以拿树状数组写了一个伪平衡树。 对于插入操作,直接插,但是要减掉一个rec值。这个rec是什么意思等下说。 对于删除操作,直接删就行了。 对于A,我们肯定不行把所有数字都加一遍,于是利用rec,使rec这个变量加上修改值。所以员工真正的工资 = 他们的值 + rec 对于S,同理。但是这里我们需要不断...

2018-12-21 13:31:00 159

转载 [luogu2471][SCOI2007]降雨量

传送门 细节题…… 首先离散化。 然后用线段树维护最大值 因为左端点和右端点的存在性,要做一系列的讨论。 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 50005 struct Node { int year,val; }G[MAXN]; in...

2018-12-12 12:34:00 183

转载 [luogu1198][JSOI2008]最大数

传送门 最初用线段树写,莫名其妙挂掉了…… 于是开始单调栈: 如果后来的数大于前面的数,那么前面的数一定不会作为答案,出栈。 否则直接插入即可,并记录编号。 那么查询操作,只需要二分查找即可。 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 200005 ...

2018-12-07 23:12:00 116

转载 [luogu1972][SDOI2009]HH的项链

传送门 开始用莫队水了90分。 想了很久还是没想出来,于是看了一眼题解。妙!实在妙! 考虑一个数字只被算一次?那么其他的数应该被删掉。 对于一个固定的右区间端点,显然删的数越往后越好。 于是考虑把所有询问的区间按右端点排序,然后开始扫一遍。用树状数组维护前缀和。 #include <cstdio> #include <cstring> #include <a...

2018-12-05 22:10:00 132

转载 [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 150

转载 [luogu2709] 小B的询问

传送门 直接莫队即可。 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define MAXN 50005 struct Node { int l,r,num,ans; }G[MAXN]; int book[MAXN]; in...

2018-12-01 18:04:00 111

转载 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 142

转载 浅谈普通莫队算法

前言 对于一个维护区间的问题,最暴力的方法就是每次枚举区间,进行统计。 而这就是莫队的基本思路 但不过莫队的枚举是进行优化的,可以优化到\(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 175

转载 [模板] 普通平衡树

传送门 您需要一种数据结构: 插入一个数\(x\) 删除一个数\(x\) 查询\(x\)这个数在所有数中的排名 查询排名为\(x\)的数 求\(x\)这个数的前驱(前驱定义为小于\(x\)的最大数)‘ 求\(x\)这个数的后继(后继定义为大于\(x\)的最小数) 平衡树 Splay #include <cstdio> #include <cstring> #i...

2018-11-28 19:39:00 132

转载 [luogu5022][NOIP2018] 旅行

传送门 这个思路在考场上就想出来了,但是没有写出来很可惜。 对于一棵树来说,求其最小字典序的dfs序非常简单,每次从小到大遍历出边即可。对于边我们考虑事先进行排序,然后再插入到邻接表里。时间复杂度为\(O(N\log N)\) 对于一个图,并且\(N=M\),就可以保证有且只有一个环。那么会出现一种神奇的情况,如果按照树的做法进行dfs: 你的dfs序是132546,但是答案是1324...

2018-11-28 19:17:00 224

转载 [luogu4315] 月下“毛景树”

传送门 这题真棒! 首先是这题是边权题,为了方便处理,化为点权。可一条边有两点点啊,用哪个存权值好呢?当然是儿子啦!因为一个儿子唯一对应一个连着父亲的边。 然后这题对于线段树涉及到区间最值查询、区间修改、区间加、单点修改,我很偷懒地把单点修改弄成区间修改了。 那么运算优先级问题:区间覆盖优于区间加,因为一旦有一个区间覆盖出现,之前所有的区间加都可以情空,处理起来很方便。 那么就是剖分的问...

2018-11-25 20:04:00 112

转载 [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 102

转载 [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 141

转载 [luogu2590] [ZJOI2008]树的统计

传送门 emmm树剖裸题,就线段树维护一下最大值和权值和就行了。 这里有一个点就是:因为会出现负数,所以查最大值的时候不能初始化为0,这样就没法维护负值 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 30005 struct Node { long...

2018-11-21 20:02:00 93

转载 浅谈树链剖分

传送门 捡起了之前树剖的坑,之前只写了树剖LCA的板子但是树剖模板却一直没有写好,学长sjie非常贴心地给我们上课,于是我去补了一下板子,并且写下自己对树剖的理解。 树剖用来干什么? 维护树上的修改 求u到v的路径上的所有点的权值和 修改u到v的路径上的所有点的权值 求以u为根的子树的结点的权值和 修改以u为根的子树的结点的权值 LCA 树剖怎么实现? 利用dfs序,将树上节...

2018-11-17 15:21:00 111

转载 思维记录

对于访问次数很多的题目,可以考虑预处理离线做,也可以在线搞一搞 转载于:https://www.cnblogs.com/Neworld2002/p/9908522.html

2018-11-05 12:45:00 127

转载 NOIP2018游记

day(-1) 赶车 坐车 坐车 坐车 坐车 真是偏僻…… 颓废了一个早上,中午把某jl机房惨案(逃,一个下午咸鱼干活,晚上欢乐游戏 day0 剪视频+剪视频+剪视频……感觉还可以……不管了丢下工作之后再说了。 开始写模板,状态非常不好,缩点tarjan交了好几次一直WA且找不到错,最后一行一行地和之前的代码比较,才发现自己把low[u] = std::min(low[u],low...

2018-11-02 23:32:00 215

转载 [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 127

转载 [luogu1197] [JSOI2008]星球大战

传送门 看到联通块,好像跟并查集、强连通分量有关系吧,仔细一看跟哪些点属于哪些块没关系,只关心联通块数量,那么应该可以用并查集做。继续看,这是一道删边的题,好像很难维护删边,我们又知道并查集是可以维护加边的,那么我们就倒过来做好了。 #include <cstdio> #include <cstring> #include <algorithm> #d...

2018-10-19 00:21:00 97

转载 [luogu2055] [ZJOI2009]假期的宿舍

传送门 所有学生都有床可以让认识自己的人睡,不在校的学生不占用床铺。 考虑建一个二分图,人对应床,求出最大匹配,根据题意,所有人都应该被安排上,那么就不能存在无法匹配。 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 55 int Link[MAXN],vi...

2018-10-05 10:58:00 99

转载 [luogu1993] 小K的农场

传送门 Solution 算是一道差分约束的模板题了。 将符号统一一下,如果是小于号就求负环,否则求正环 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 10005 struct edge{ int v,w,next; }G[MAXN<<...

2018-10-04 12:19:00 94

转载 [luogu1983] 车站分级

传送门 妙啊…… 很容易想到建个图,然后跑一下拓扑排序,看看有几层就行了。但是会发现连边的代价是平方。 所以可以建立一个虚点,将层与层之间的所有边汇集同一个点上。然后就只需要线性的代价就可以做了。 #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 2005 ...

2018-10-03 11:59:00 119

转载 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 138

转载 [luogu1119] 灾后重建

传送门 Solution 虽然没做过多少Floyd的题……但是还是灵性了一波。 首先你会发现数据是有单调性的!那么我们就干脆一个一个点加进去跑Floyd就行了,那么怎么加点呢? 对于某个点key,我要把它加进去,我们可以假设它是起点,那么以i为中点,j为终点,跑一下平方的松弛操作;同上,分别假设key为终点,key为中点。 这样我们每加入一个点,它的循环次数跟跑一次完整的Floyd一样了...

2018-09-21 23:40:00 93

转载 [luogu1462] 通往奥格瑞玛的道路

传送门 首先就发现了这题可以二分答案,毕竟是求最大的最小。 考虑二分最大边,则所有边权大于二分值的边都不能选。 在此基础上跑SPFA,求出从1到N耗的最少血量。然后观察血量是否为空即可。 #include <cstdio> #include <cstring> #include <algorithm> #define SIZE 16383 #defin...

2018-09-14 23:45:00 184

空空如也

空空如也

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

TA关注的人

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