自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 luogu P3275 [SCOI2011]糖果

analysis至少,暗示我们这题差分约束是最短路然后构建差分约束系统:case1:{xa<=xbxb<=xacase2:xa<=xb−1case3:xb<=xacase4:xb<=xa−1case5:xa<=xbcase5+:∀xi>=1case1:\begin{cases}x_a&am...

2019-08-31 22:12:24 140

原创 luogu P1993 小K的农场

analysis就是判断一组不等式是否有解于是建立差分约束系统,有三个不等式(因为这个题没有要求作物个数的正负,我们完全可以使其为负):case1:ai−bi>=cicase1:a_i-b_i>=c_icase1:ai​−bi​>=ci​case2:ai−bi<=cicase2:a_i-b_i<=c_icase2:ai...

2019-08-31 22:06:37 149

原创 luogu P1522 牛的旅行 Cow Tours

analysis很容易想到n方来暴力找一个连接方案,然后在连接后的图中跑Floyd,时间复杂度…于是考虑如何优化n方暴力枚举后找新图直径的过程:连接一条边后,新图直径可能是原来两个块中的直径中较大的那个或者新连接的这条边两端点在他们各自的块中的最远点距离之和和这条边的权值的和于是我们可以预处理出两个直径和每个点的最远点,然后就可以用一个O(n)O(n)O(n)的扫描得到答案了大约...

2019-08-30 20:21:26 129

原创 luogu P1119 灾后重建

analysis这种动态又具有一定单调性限制的最短路就要考虑Floyd仅需吧最外层循环的点k设为当前时间限制下可用的点就可以了Floyd的变式常见两种:对外层循环k的限制对方程的修改code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int i...

2019-08-30 17:32:13 131

原创 「一本通 3.4 例 1」 POJ 1201-Intervals

analysis本题使用差分约束求解:设sis_isi​为1到i所选的数的个数,我一开始是这样列的:{sbi−sai−1&gt;=ci0&lt;=si&lt;=bi0&lt;=si−si−1&lt;=1\begin{cases}s_{b_i}-s_{a_i-1}&gt;=c_i\\0&lt;=s_{i}&lt;=b_i...

2019-08-30 16:14:33 426

原创 UVA11090 Going in Cycle!!

analysis二分+spfa判负环,绝了!为什么会想到二分?因为问题可以转化为一个单调函数:平均值越大,存在这种环的可能性就越小也就是说可以二分平均值然后判断是否存在就可以了判断如何存在的话,可以考虑这样的回路的性质:如果对于一个平均值x,存在这样的一个回路A使得A的平均值小于x,那么∑i∈Alen[i]∣A∣&lt;x\frac{\sum_{i\in A}len[i]}...

2019-08-28 17:18:04 152

原创 UVA10537 The Toll! Revisited

analysis如果可以求出一个数组d[i]表示从i到达终点所需要的最少金额的话,这道题就解决了呗但是如何求出这个数组呢?可以用dijkstra来反推,把终点的距离设为最后一行的数字(也就是需要运到终点的货物量),然后对整个图以合适的松弛操作反着跑一个dij,然后就求出了这个数组于是现在最关键的问题就是如何松弛:对于边u到v,由于我们是反向跑的,因此如果u是一个城市,那么v走到u必然就...

2019-08-28 11:55:28 136

原创 CF1005F Berland and the Shortest Paths

analysis是的,这道题是用最短路树(图)做的要证明(理解)最短路树(图)就是本题的合法答案的话,有下面两种方式假设我们现在有随机的一个方案(n-1条边),那么对于每一个点i,如果它的did_idi​在用方案里n-1条边的时候不是最小值的话说明还可以更改路径使得did_idi​更小,而最短路树(图)上面的每个点的did_idi​都是最小的,因此总和∑di\sum d_i∑di​也是...

2019-08-28 08:41:47 164

原创 UVA10917 Walk Through the Forest

analysis其实类似求最短路树,这道题是求一个最短路图(最短路图一定是一个DAG)一次dij解决最短距离问题然后用一次记忆化搜索解决路径统计code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int i=start;i<=end;++i)#...

2019-08-27 20:10:01 141

原创 UVA1416 Warfare And Logistics

( 1<= n<=100, 1<=m<=1000)analysis很容易想到用暴力来每次暴力删除一个边然后跑各种最短路,比如Floyd和dijkstra时间复杂度分别为O(mn3)=1e9O(mn^3)=1e9O(mn3)=1e9和O(nm2logn)=6.6438561897747246957406388589788e8O(nm^2logn)=6.64385...

2019-08-27 19:26:12 114 2

原创 UVA11374 Airport Express

analysis第一眼看到这个题就知道是分层图最短路了因为每个点可以做决策决策次数比较少嗯,就是分层图最短路了这个题的状态呢只有两个,其一就是没有使用商业车票,另一个就是使用了商业车票两个状态之间的连边也很简单了,设用过商业车票的那一层的点的标号为原来的点的标号+n,于是对于一条u到v的普通路线,连u到v和u+n和v+n(双向边要连两次!),对于一条u到v的商业路线,连u到v+...

2019-08-26 20:39:08 126

原创 It's not a Bug, it's a Feature! UVA - 658

analysis这个是可以抽象为最短路问题的用状态压缩来表示bug的有无(0没有,1有)那么就可以把每个bug的状态表示的数看做点,然后就可以从(11111…111)开始,枚举每一个补丁,判断并且进行状态转移跑一个dij后直接看0号点(00000…000)的距离就可以判断答案了话说不要乱用map来hash,因为map的每一次操作都是logn的,我就是因为乱用map来Hash导致TLE。...

2019-08-26 19:11:10 335

原创 UVA - 247 Calling Circles

translate有n个人打电话,给出很多个u->v的打电话的关系定义u给v打电话(直接或间接),且v给u打电话(直接或间接),则u,v在同一个Calling Circles(电话环)里面然后输出所有Calling Circles里面的人analysis分析后发现,打电话这个关系是有连通性的在进一步分析的话这个题是符合scc缩点的模式的(tarjan)于是直接套tarjan就...

2019-08-26 11:51:31 189

原创 poj3613 ACwing 345:Cow Relays--牛站

analysis这是一个没有见过的模式:特征求S到E恰好走过N条边的最短路点数少到可以用邻接矩阵存解法Floyd+矩阵加速递推(快速幂)code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int i=start;i<=end;+...

2019-08-25 21:17:14 221

原创 luogu P4011 孤岛营救问题 #10073. 「一本通 3.2 例 2」拯救大兵瑞恩

analysis分层图最短路+01BFS这里不需要建图,图在心中code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int i=start;i<=end;++i)#define clean(arry,num) memset(arry,num,si...

2019-08-23 18:02:33 343

原创 【Floyd求无向图最小环】一本通 3.2 例 1」Sightseeing Trip

analysis思路这算是弗洛伊德的一个活用版本了这个模式就是图中求最小环的长度和方案,然后时间复杂度必须要允许思路就是枚举一个k和和它相邻的两个点,看这三个点能否构成一个最小环但是注意,因为找环的时候是保证了环中出现的点在k以内且经过点k的,而且不能出现把一条链来回走然后把这种方案当做一个环的情况因此在找环的时候枚举i,j的时候应该 loop(k,1,n){ loop...

2019-08-23 11:43:08 451

原创 POJ2676/3074 Sudoku

analysis题目意思就是以各种方式给你一个9x9的数独让你填然后数据是各种鬼畜这个时候考虑一个很简单的搜索框架:就是找一个位置的可能数,然后暴力的dfs然后考虑剪枝和优化:想要优化这个算法,想了一个策略:找可选的数最少的一个但是如何统计可选的数呢,用数组?统计一次就O(n)未必太慢了,用状态压缩的方法就可以,因为这里的数据范围是这样的小我们可以用状态压缩表示每行每列每个九宫格的...

2019-08-22 11:01:04 172

原创 关于lowbit函数的原理

lowbit(n)函数取出n在二进制表示下最低位的1以及它后面的0构成的数值lowbit(x)=n&(~n+1)原理:假设x最低位的1在第k位上则 ~ n的二进制的第k位为0, 0~k-1位全部为1,k+1 ~ inf位也被取反于是~ n + 1 由于进位,0~k-1位全部为0,第k位为1,k+1 ~ inf位仍然和原来相反于是n&(~ n + 1)自然就只剩下最低位...

2019-08-21 21:32:49 1531

原创 luogu P1731 [NOI1999]生日蛋糕

analysis搜索基本框架显然搜索每一层的h和r即可关于hi和ri的范围,有如下推导:根据圆柱体积公式:Vnow=πr2hV_{now}=\pi r^2hVnow​=πr2h极端情况下,高为1于是Vnow=πr2V_{now}=\pi r^2Vnow​=πr2按照题意约掉π\piπ得到r=Vnow=N−vnowr=\sqrt{V_{now}}=\sqrt{N-v_{now}}...

2019-08-21 20:11:10 187

原创 luogu P1120 小木棍 [数据加强版]

analysis想到搜索,搜索每一根木棒被哪些木棍填满,可以枚举答案然后dfs于是可以列举出问题状态空间的维度:当前已经填满的木棒数正在填的木棒已经填到了的长度考虑剪枝(不剪的话复杂度最坏O(n∗50∗k),k∈(?,n!]O(n*50*k),k\in(?,n!]O(n∗50∗k),k∈(?,n!])优化搜索顺序本题枚举木棍的时候可以从大到小枚举排除等效冗余限...

2019-08-21 19:28:09 400

原创 [MSSB]搜索EX(剪枝)

目录特征解法剪枝的角度题目小木棍生日蛋糕靶型数独虫食算特征暂无解法爆搜+剪枝剪枝的角度优化搜索顺序排除等效冗余可行性剪枝最优化剪枝记忆化常数优化题目小木棍>>>>>>>>>>>>>>题解生日蛋糕>>>>>>>&...

2019-08-21 18:02:00 29

原创 [MSSB]分层图最短路

目录特征解法建图考虑角度一:建图考虑角度二:新图正确性检查题目飞行路线luogu P4011 孤岛营救问题行动!行动!最优贸易改造路电话线冻结回家的路草鉴定分层图最短路是指在可以进行分层图的图上解决最短路问题。分层图:可以理解为有多个平行的图。特征在一个正常的图上可以进行 k 次决策,对于每次决策,不影响图的结构,只影响目前的状态或代价这种状态量相互影响数据范围合适解法分层图最短...

2019-08-19 16:03:00 24

原创 luogu P3831 [SHOI2012]回家的路

analysis符合分层最短路的特征,于是考虑使用分层最短路第一层只走横向边,边该怎么连就怎么连第二层只走纵向边,同理两层之间的点之间连一条权值为1的边,代表换方向的花费然后就跑一个最短路就可以了(这题不卡spfa)具体处理的时候可以把起点和终点看做可以0花费变向的点和其他转向点一起处理,且各个坐标分别按照x和ysort一遍,然后就可以建图了code#include<bit...

2019-08-19 15:28:09 225

原创 [MSSB]缩小枚举范围后的简易递推

特征每一个位置顶多只会操作一次。如果操作两次的话,相当于不操作,必然不满足最优解在一套方案中,操作的顺序无关紧要如果我们确定了第1行的操作方案的话,那么后面的行数都可以依此递推解法枚举第一行的操作方案,然后依次递推时间复杂度为\(O(1<<len(1))\)题目费解的开关#include <bits/stdc++.h>using n...

2019-08-19 09:15:00 20

原创 [MSSB]并查集求连通块

文章目录分析特征对应算法题目1.无线网络2.星球大战3.岛屿分析特征联通块个数或连通性动态联通或删除联通关系,但是不能两种操作一起来对应算法利用并查集对集合合并的高效性来解决如果是删除联通关系,那么就把时间轴翻转过来进行合并操作题目1.无线网络Description有一个由n台计算机组成的无线网络。(n <= 1001),正常情况下,每台计算机都能跟与它距离不超过d...

2019-08-17 18:01:02 712

原创 P2176 [USACO14FEB]路障Roadblock

analysisDIJ先求一个最短路然后暴力枚举最短路径上的每条边将边权double,然后再跑最短路,最后取最大值code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int i=start;i<=end;++i)#define anti_loop...

2019-08-16 19:52:05 210

原创 Dijkstra的救赎

SPFA的复杂度大约是O(kE),k是每个点的平均进队次数(一般的,k是一个常数,在稀疏图中小于2)spfa似乎是个神话,统领着正权最短路算法世界,各个领域都有他的痕迹,直到:随着网格图银光闪闪的大刀出鞘,spfa人头落地,其在正权最短路算法世界的统治宣告结束对于|V|,|E|在10^5级别的题目,正解肯定不是SPFA(不然就是错题)这时需要一个人来拯救处于混乱中的正权最短路算法...

2019-08-16 11:28:04 99

原创 luogu P4568 [JLOI2011]飞行路线

analysis基本上是第一次见这个模式(上一次是在luogu P3119)这个模式的特征大概就是:在一个正常的图上可以进行 k 次决策,对于每次决策,不影响图的结构,只影响目前的状态或代价那么这个题就是这个模式嘛,可以做k次决策,做了之后会影响到后面走的距离,图实际上没有改变于是就可以拆点分层了,把一个点强行拽成k个,然后就可以连边了。怎么连呢?首先原来就有的边是不能不连的,而且还要在...

2019-08-15 21:07:15 190

原创 luogu P3119 [USACO15JAN]草鉴定Grass Cownoisseur

analysis首先要缩点之后如果不考虑反向走边的话,这题就是一个大水题但要考虑的话,可以用分层图最短路的思想来解决考虑一张图,将这个图复制一份,点的编号从1~ N到(N+1)~(N+N)。然后在两层图中连边。对于原图上的每一条边,从原图的指向点到新图的起始点连一条边,边权与原边相同,代表逆向走一条边。逆向走了一条边,就不能再逆向走了,所以从上面的一层(新图)无法回到下面的一层。最后跑一...

2019-08-15 19:00:56 1467

原创 luogu P2515 [HAOI2010]软件安装

自定义HP背景好评!analysis有传递关系,还可能成环?缩点!缩点后呢?显然是一棵树了求整棵树分W空间的收益,和子树分Wi空间的收益好像有点关系子问题相似,边界问题就是叶子结点emm,树形DP吗?试一下,好像可以诶!于是就这样做:缩点树形DP时间复杂度 O(n3)O(n^3)O(n3)code#include<bits/stdc++.h>using...

2019-08-15 11:54:06 109

原创 SIEMIWP系列二:二分,排序

文章目录二分一般二分二分答案转化为判定三分二分一般二分特征:问题可转化为单调函数(定义域:可行方案;值域:方案对应的解)时间复杂度:O(logn)举例:lowerbound,upperbound函数二分答案转化为判定特征:问题可转化为01函数(函数在(-inf,x]=1,[x+1,inf)=0)题目中有特征为:最大值最小时间复杂度:O(logn)最佳...

2019-08-14 18:36:10 217

原创 SIEMIWP系列一:位运算,枚举,模拟,递推,递归

文章目录位运算快速幂大数乘法二进制状态压缩DP枚举,模拟,递推[AcWing 95. 费解的开关](https://www.acwing.com/problem/content/97/)一维前缀和(差分)二维前缀和(差分)递归递归实现指数型枚举递归实现排列型枚举约数之和位运算快速幂特征:aba^bab,b特别大解法:快速幂复杂度:O(log2b)O(log_2 b)O(log2​b)...

2019-08-14 11:15:30 246

原创 2019.8.13 test 总结

文章目录题目T1T2T3题解T1T2题目T1T2T3题解留坑待补T1#include <bits/stdc++.h>using namespace std;#define loop(i,start,end) for(int i=start;i<=end;++i)#define anti_loop(i,start,end) for(int i=start...

2019-08-13 21:54:06 84

原创 普通平衡树的2种stl实现方法

以luogu上普通平衡树一题为例vector#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int i=start;i<=end;++i)#define anti_loop(i,start,end) for(register int i=start;i&g...

2019-08-11 10:58:42 985

搜集的可用于WInhex的解析模版

可用于Winhex(X-Way Forensics)的各种文件格式解析模版

2024-06-16

关于并查集求连通块的三道例题的代码

关于并查集求连通块的三道例题: 1.无线网络 2.星球大战 3.岛屿 的代码

2019-08-17

空空如也

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

TA关注的人

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