自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dawn_LLLLLLL

【AFO】歌唱吧。

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

原创 POJ 3764 The xor-longest Path

传送门题目大意:给定一棵 n 个点的带权树,求树上最长的异或和路径。对于树上从x到y的路径的异或和,表示为 D(x,y)D(x,y)D(x,y),则有:D(x,y)=D(1,x)⊕D(1,y)D(x,y)=D(1,x) \oplus D(1,y)D(x,y)=D(1,x)⊕D(1,y)而所有的D(1,i)D(1,i)D(1,i)是可以O(n)O(n)O(n)求出的。问题转化为在N-1...

2019-01-26 10:49:14 234 1

原创 LOJ #10029 棋盘游戏

传送门题目大意:有两个4×4的01方阵,在只能交换相邻的点的情况下,求从一个方阵转移到另一个所需要的最少的步数。tag是广搜,但是深搜能过还跑得飞快。输入时处理出两组数组,第一组是初始状态为0目标状态为1的棋子的坐标,另一组是初始状态为1目标状态为0的棋子的坐标。我们只需要把第一组的棋子移到第二组的棋子的位置就好了。而事实上不需要去模拟棋子移动的过程,直接爆搜每个点的目的地,代价就是两...

2019-01-25 16:40:57 420 2

原创 NOIP2018游记

今年神神奇奇地过了初赛。说实话考提高组还是有点紧张的其实能过初赛我已经很高兴了Day 0下午就出发去六中了于是早上就看看模板,最后重新写了一遍负环发现过不了???据说是改了题了但是来不及调于是就仓促地出发了。这趟车坐的真是极其不舒服,大概是遭了头天晚上仗着不用上课拉着舍友唠嗑的报应吧。酒店的房间真的小,晚上出去吃饭听到了一个极其震撼的消息,但可能是因为我比较冷血或是说没有造成什么实质性...

2018-11-23 13:44:10 226

原创 洛谷 P3313 [SDOI2014]旅行(树链剖分+线段树)

传送门这题是求固定路径上某固定宗教的评级最大值或和,由于我们知道树上路径是顺着链走的,我们可以用树链剖分使一条链上的编号连续,方便查询。每个宗教建一棵线段树,动态开点,编号按树链剖分后的新编号,维护的是城市评价。 那么改变评级就相当于改变某线段树内的值,改变宗教就相当于换根(移到另一棵线段树内)。求值时按链往上跳,统计答案。Code:#include<cst...

2018-07-12 09:31:48 212

原创 洛谷 P3157 [CQOI2011]动态逆序对(主席树+树状数组)

传送门做这题前请先学动态第k小,这里blog。首先我们有 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。那么第一次输出时直接输出序列的逆序对个数,然后问题就转化为删去某个元素时删去的逆序对数。若删去元素的位置为x,它产生的贡献就是原序列中区间[1,x-1]中大于x的数的个数与区间[x+1,n]中小于x的数的个数加上前面删去的...

2018-07-11 14:55:37 371

原创 洛谷 P2468 [SDOI2010]粟粟的书架(主席树+二分)

传送门首先我们知道,这题数据有两部分: 对于50%的数据,满足R, C≤200,M≤200,000; 另有50%的数据,满足R=1,C≤500,000,M≤20,000;对于前50%的数据,我们可以直接二分取书的页数下界解决。 于是我们定义to[i][j][k]表示矩阵[1,1]至矩阵[i,j]中所有不小于k的数的总和,num[i][j][k]为它们的个数。 于是...

2018-07-11 11:43:22 264

原创 洛谷 P2617 Dynamic Rankings(树状数组+主席树)

传送门动态区间第k小主要需要学习两种算法,一种是树状数组,另一种是主席树。也就是树状数组套主席树,可以去我以前的blog里看。在树状数组里,一个点x维护的是区间[x-lowbit(x)+1,x]的信息,而第x棵主席树维护的是区间[1,x]的信息,若是按原来的前缀和主席树修改会很麻烦,于是我们把它们套一套得到:第x棵主席树维护的是区间[x-lowbit(x)+1,x]的信息。而我们在...

2018-07-10 10:34:59 284

原创 洛谷 P3834 可持久化线段树 1(主席树)

传送门主席树模板,求静态区间第k小。 据说主席树又叫可持久化线段树,因此它肯定跟线段树很有关系。 我们用n棵线段树来维护,第i棵线段树维护的是前1~i个元素的值。而每棵线段树上同一位置的节点维护的范围是一样的,若第i个元素的值是x,我们就在线段树里把x这个位置与管理它的节点的值都加1。因为每一棵线段树的结构都是一样的,所以我们可以合并它们。我们每次只需根据新输入的第i个值建一条链,然后...

2018-07-09 16:45:06 338

原创 洛谷 P3178 [HAOI2015]树上操作(树链剖分)

传送门裸的树链剖分。。 不会的同学可以戳这。。我觉得可以直接上代码。。 这次并没有动态开点。。 Code:#include<cstdio>#include<cstdlib>#define ll long longstruct node{int y,next;}a[200010];struct tree{int l,r,lc,rc;ll c...

2018-06-28 13:34:08 215

原创 洛谷 P2590 [ZJOI2008]树的统计(树链剖分)

传送门比较基础的树链剖分吧。。。树链剖分的关键就在把在同一条链上的点的编号连续,这样就可以快速地用线段树维护修改与求值了(当然据说线段数组也可以)。 而我们找链的依据是什么? 这就要提到重链了。 首先我们提出一个概念:重儿子 重儿子就是儿子中他的子节点数最少的一个。#include<cstdio>#include<cstdlib>#inclu...

2018-06-28 13:24:00 214

原创 [网络流24题]洛谷 P2756 飞行员配对方案问题(最大流)

传送门最大流嘛…… 构图: 从源点向每一个外籍飞行员连流量为1的边。 从每一个英国飞行员向汇点连流量为1的边。 从每一个外籍飞行员向他可以搭档的英国飞行员连流量为1的边。 然后就跑dinic。 当最大流为0时无解。 反之,对于每条从外籍飞行员连向英国飞行员的边,如果它的反向边流量不为零,说明这两个飞行员匹配,计入答案。Code:#include<cstdio...

2018-05-18 13:54:30 172

原创 [网络流24题]洛谷 P1251 餐巾计划问题(费用流)

传送门把每一天拆成早上(i)和晚上(i+n),每天晚上会收到用过的脏毛巾,早上会从快洗部和慢洗部或通过购买得到新毛巾。构图: 1.从源点向每一天晚上建流量为当天需要的餐巾数ri,费用为0的边,表示每天晚上会有ri条用过的餐巾。 2.从每一天早上向汇点建流量为当天需要的餐巾数ri,费用为0的边,表示每天白天需要提供ri条干净的餐巾,流满时餐巾够用。 3.从每一天晚上向下一天晚上建流...

2018-05-15 13:50:07 225

原创 GDOI2018酱油记

今年东道主啊壮哉我大一中Day -1莫名其妙被教练拉去试机贴名字封USB接口整理胸卡,400+张有名字的牌要归到50个机构??(话说学校编号没有27哎还有编号999真的强)附带的10+张名单还是按字典序排序的??5个人弄这个弄了3个钟校对什么的真是要爆炸了…… 还有被赶去初中部竞赛室是什么,电脑卡到不做评论(大神指导手动修) 其实我觉得那件黄色衣服很好看的啊,毕竟我大一中嘛…… ...

2018-05-05 23:33:15 256

原创 洛谷 P1345 [USACO5.4]奶牛的电信Telecowmunication(最小割)

传送门最小割模型。 我们把点i拆成两个点i1和i2,把连入i点的边连到点i1,把从i点连出的边连到点i2,再在点i1和i2中间连流量为1的边,问题就转化成了最小割,割掉i1和i2中间的边就是踩坏第i台电脑。 然后跑最大流就好了。Code:#include<cstdio>#include<cstdlib>#include<cstring&gt...

2018-04-24 11:16:47 249

原创 洛谷 P2149 [SDOI2009]Elaxia的路线(SPFA+记忆化搜索)

传送门其实题目大意就是求两条最短路径的公共部分,那么怎么判断一条边(u,v,d)是否同时在两条最短路径内呢? 当 (disx1,u+d+disv,y1=disx1,y1)∧(disx2,u+d+disv,y2=disx2,y2)(disx1,u+d+disv,y1=disx1,y1)∧(disx2,u+d+disv,y2=disx2,y2)(dis_{x1,u}+d+dis_{v,y1...

2018-04-24 08:55:31 224

原创 洛谷 P2055 [ZJOI2009]假期的宿舍(最大流)

传送门很明显是二分图最大匹配,不过似乎网络流更快,所以这里讲网络流吧。 每张床向汇点连流量为1的边,源点向每个在学校住的在校学生或其他学校的学生连流量为1的边,每个要在学校住的学生向自己的床与自己认识的人的床连边,然后跑最大流。如果最大流=要在学校住的学生人数,就表示存在方案,反之则不存在。Code:#include<cstdio>#include<cst...

2018-04-24 08:12:30 234

原创 [网络流24题]洛谷 P2774 方格取数问题(网络流)

传送门题目描述在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。对于给定的方格棋盘,按照取数要求编程找出总和最大的数。输入输出格式输入格式: 第 1 行有 2 个正整数 m 和 n,分别表示棋盘的行数和列数。接下来的 m 行,每行有 n 个正整数,表示棋盘...

2018-04-24 07:41:38 276

原创 洛谷 P3227 [HNOI2013]切糕(最小割)

传送门最小割模型,我们构造一个P*Q*(R+1)的点阵,相邻的点连边(i,j,k) –>(i,j,k+1),边权为下面的点的点权(v[i][j][k])。源点st向第一层的点连边,边权为INF,最上面一层的点向汇点ed连边,边权为顶层点权。 这样就把取点变成了割边,割掉(i,j,k) –>(i,j,k+1)这条边就是选取(i,j,k)这个点(f(i,j)=k)。 再从(i,...

2018-04-23 21:38:32 218

原创 洛谷 P1268 树的重量(容斥_图论)

传送门当只有两个点时,很明显 ans=disi,jans=disi,jans=dis_{i,j} 当有三个点时 ans=x+y=dis1,2+xans=x+y=dis1,2+xans=x+y=dis_{1,2}+x 由容斥原理得 x=dis1,3+dis2,3−dis1,22x=dis1,3+dis2,3−dis1,22x=\frac{dis_{1,3}+dis_{2,3}-d...

2018-04-23 21:11:54 172

原创 洛谷 P4436 [HNOI/AHOI2018]游戏(DP)

传送门今天信心赛第一题,其实真的不是很难,只是我太弱不会。。 其实就是DP啦。 公路起点记为左儿子,铁路起点记为右儿子,从根开始深搜做DP,f[i][j][k]表示走到第i个节点,重修了j条公路与k条铁路的最小贡献。转移方程: f[i][j][k]=max(dfs(son[0],j+1,k)+dfs(son[1],j,k),dfs(son[0],j,k)+dfs(son[1],j...

2018-04-23 19:28:01 260

原创 洛谷 P1726 上白泽慧音(强连通)

传送门强连通裸题,跑tarjan找最大的环,每次记录第一次找到该点的时间(dfn)与该点不通过父亲能到达的最早的祖先(low),第一次找到时将该点入栈,对于该点没搜过的子节点,我们用子节点的low来更新该点的low,对于搜过的且还在栈中子节点,用它的dfn来更新我的low。 如果有一个节点的dfn==low,则说明该节点与该节点在栈中以上的所有节点构成了一个强联通分量,全部出栈并记录信息...

2018-04-23 07:56:17 247

原创 洛谷 P1983 车站分级(搜索_图论)

传送门每次从所有停靠的车站往不停靠的车站把没建过的边建一次。 由于保证数据符合要求,图是没有环的,所以直接深搜跑最长路找最多的级别数。Code:#include<cstdio>#include<cstdlib>#include<cstring>struct node{int x,y,next;}e[1000010];bool v[10...

2018-04-23 07:36:49 265

原创 洛谷 P1111 修复公路(最小生成树)

传送门Kruskal裸题嘻嘻 不说了 Code:#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;struct node{ int x,y,c; inline bool op...

2018-04-22 21:36:26 247

原创 洛谷 P1525 关押罪犯(并查集)

传送门在两个有冲突的罪犯中间连边,边权为怒气值,把边按权排序,然后用并查集处理。 我们让边权大的边得两个点不在同一集合中,一旦遇到冲突,当前边权即是最大怒气值。 Code:#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;struct no...

2018-04-22 21:31:54 224

原创 洛谷 P1113 杂务(搜索_图论)

传送门从某项工作的准备工作往该工作建边(这里用的vector),然后从第一个节点直接跑深搜求距离。Code:#include<cstdio>#include<cstdlib>#include<vector>using namespace std;int n,x,ans=0;int d[10010],m[10010];vector...

2018-04-22 21:21:29 227

原创 洛谷 P1265 公路修建(最小生成树_Prim)

传送门最小生成树裸题,至于政府的三个条件: (1)如果两个或以上城市申请修建同一条公路,则让它们共同修建; (2)如果三个或以上的城市申请修建的公路成环。A申请修建公路AB,B申请修建公路BC,C申请修建公路CA。则政府将否决其中最短的一条公路的修建申请; (3)其他情况的申请一律同意。 很明显,第一个条件和第三个条件都是废的,我们再仔细看一看第二个条件,发现三角形ABC是等边三角...

2018-04-16 11:01:49 275

原创 洛谷 P1991 无线通讯网(最小生成树_Kruskal)

传送门在正常情况下,连通p个点至少需要p-1条边,而s个卫星电话最多能代替s-1条边(如下图_五个卫星电话) 因此我们只需要选中(p-1)-(s-1)也就是p-s条边就行了。 由于数据较小,我们跑一遍K算法,输出选中的边中的最大边权即可。Code:#include<cstdio>#include<cstdlib>#include<cst...

2018-04-16 10:47:44 261

原创 洛谷 P2330 [SCOI2005]繁忙的都市(最小生成树_Prim)

传送门还是稠密图,选出的道路数量很明显是n-1,跑一遍P算法然后找选中的边中最大就行了。Code:#include<cstdio>#include<cstdlib>#include<cstring>int a[310][310],d[310];int n,m,ans=0;bool v[310];int main(){ ...

2018-04-16 10:29:14 650

原创 洛谷 P1546 最短网络 Agri-Net(最小生成树_Prim)

传送门最小生成树模板,大家都说是Kruskal,但brz大神说是稠密图要用Prim。 由于大神很强我听大神的关于Prim算法和Kruskal看这里,我觉得他写得很好Code:#include<cstdio>#include<cstdlib>#include<cstring>int n,ans=0;int a[110][110],d...

2018-04-16 10:22:12 293

原创 洛谷 P1522 牛的旅行 Cow Tours(最短路_Floyd)

传送门先用Floyd求一次最短路,然后记录对于每一个点距离最远的点,枚举任意两个不联通的点将它们联通,计算新的牧场直径(两点间的距离加上他们各自的最远距离)。#include<cstdio>#include<cstdlib>#include<cmath>#include<iostream>using namespace std...

2018-04-15 21:36:21 349

原创 洛谷 P1144 最短路计数(最短路_SPFA)

传送门数据范围看起来好像很吓人,但我还是水过去了嘻嘻 先跑一遍SPFA确定最短路长度,然后用记忆化搜索累加答案(点1到点1的答案为1,然后递归搜索,如果下一个点在最短路径上,我就把我的答案加上它的答案)Code:#include<cstdio>#include<cstdlib>#include<cstring>struct node...

2018-04-15 11:23:02 378

原创 洛谷 P1119 灾后重建(最短路_Floyd)

传送门第一反应是对于每个询问建一次边跑最短路,但似乎会TLE,于是再看一眼题面 t[0] ≤ t[1] ≤ … ≤ t[N – 1] 数据保证了t是不下降的 于是我们可以边输入询问边处理,每次把t[i]<=t且没有处理过的点作为中转站跑一次Floyd,判-1,输出即可。Code:#include<cstdio>#include<cstdlib&g...

2018-04-15 11:09:20 221

原创 洛谷 P1346 电车(最短路_Floyd)

传送门每个点向它所联通的点建单向边,开关默认指向的边权为0,其他为1,然后跑最短路(FLoyd,SPFA,Dijkstra均可),由于2<=N<=100,我们用邻接矩阵跑FLoyd就可以了。Code:#include<cstdio>#include<cstdlib>#include<cstring>const int IN...

2018-04-15 10:54:25 515

原创 洛谷 P1462 通往奥格瑞玛的道路(最短路_SPFA)

传送门题目其实是求经过城市最多的一次的费用最小值 由于要满足费用与血量两个条件,我们用血量建边,二分枚举费用跑最短路。Code:#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>using namespace std;const int...

2018-04-15 10:35:13 225

原创 洛谷 P1339 [USACO09OCT]热浪Heat Wave(最短路_SPFA)

传送门SPFA裸题,似乎没什么好说的…Code:#include<cstdio>#include<cstdlib>#include<cstring>struct node{int x,y,c,next;}a[13010];int n,m,st,ed,len=0;int f[2510],first[2510],q[3010];bo...

2018-04-15 10:20:37 309

原创 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm(搜索_图的遍历)

传送门似乎有点强连通的意思??? 直接搜吧,搜的时候记录第一次访问当前点的时间 如果一个点后继牛棚是自己,则形成自环,答案为1 如果一个点在环中且不是自环,则答案为环的大小=第二次搜到当前点的时间-第一次搜到当前点的时间+1,用当前点的答案去更新环内其他点的答案 如果一个点不在环中,则当前点往前搜一定会搜到一个环,递归时更新答案,为当前点的后继牛棚的答案加一。Code:#i...

2018-04-15 10:09:01 266

原创 洛谷 P1341 无序字母对(搜索_图的遍历)

传送门欧拉回路嘛…也叫一笔画,当度为奇数的点有0个或2个时有解,其他情况就“No Solution”。 由于要字典序最小的方案,我们从最小的字母开始遍历,然后记录答案即可。Code:#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>us...

2018-04-15 09:41:39 246

原创 洛谷 P1330 封锁阳光大学(搜索_图的遍历)

传送门对点进行染色,将一条道路的两端染成不同的颜色,如果有冲突则“Impossible”,没有冲突则比较两种颜色的点的数量,选较小者累加。 Code:#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;...

2018-04-12 09:10:09 181

原创 洛谷 P2661 信息传递(搜索_图的遍历)

传送门其实题意就是求最小环。 这里直接暴搜,如果当前点已经遍历过就记录答案(当前时间戳-第一次搜到该点的时间戳),如果没有遍历过就dfs遍历一遍,记录时间戳。 据说还可以用并查集做,只不过我没写嘻嘻Code:#include<cstdio>#include<cstdlib>#include<cstring>#include<i...

2018-04-12 09:04:29 263

原创 洛谷 P1313 计算系数(杨辉三角+快速幂)

传送门我们知道(by+ax)^k的展开式中,第x^n*y^m的系数为杨辉三角形中的第(k,m)项乘以a^n*b^m,因为数据太大,后者需要用快速幂解决。关于快速幂,可以看前文Code:#include<cstdio>#include<cstdlib>#define MOD 10007int f[2010][2010];int a,b,k,n,m...

2018-04-11 15:23:31 339

空空如也

空空如也

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

TA关注的人

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