- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 【noip 2015 D1T2】luogu P2661 信息传递
分析这题要求的就是一个图中的最小环的长度首先我想到的是每个点每个点的dfs一次,取最小值虽然这样写时间复杂度爆炸,但是居然得了80pts(代码太丑,就不来了)在题解中学到了用并查集来找图中最小环的方法:code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(regist...
2019-02-22 11:48:45 152
原创 【noip 2015 D1T1】P2615 神奇的幻方
分析模拟题,把每种情况翻译成代码即可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(ar
2019-02-22 11:42:18 179
原创 【noip 2015 Day1 T3】luogu P2668 斗地主
分析深搜即可,只是注意几个坑点:四带二可以带两张单牌也可以带两对牌顺子都不包括大小王和2X带Y可以带大小王和二(由于是任意牌嘛)输入大小王时是:0 1或0 2(中间有空格!不知道某谷的数据为什么还不改)反正我没有用贪心的策略,直接枚举的每种情况,最后加个最优性剪枝就过了(构码半小时,调试一下午 lmao)code#include<bits/stdc++.h>u...
2019-02-22 08:57:36 163
原创 luogu P1198 [JSOI2008]最大数
分析其实不难想到这道题用线段树可以A掉首先,有多少次操作就最多有多少个数据,于是我们将线段树数组大小开到操作次数的4倍,然后就可以解决往数列后面插入数字的问题了然后每次查询,只需查询区间[len-L+1,len] (len是当前数组长度)的最大值即可尝试分析一下时间和空间复杂度,时间:一次查询和修改都是logn,然后有m次操作,即O(mlogn),此题m<=200000,n&lt...
2019-02-20 17:05:08 190 1
原创 luogu P2330 [SCOI2005]繁忙的都市
分析找MST中权值最大的边即可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,sizeof(arry));int ...
2019-02-18 16:16:38 167
原创 【分层最短路】行动!行动!
分析第一次遇到这类题,表示比较不熟悉但其实这是一类经典题型,即分层最短路分层最短路,其实就是拆点,由于一个点有多个决策,故我们应该将这个点拆成n个决策点,类似于枚举每种可能性,然后连边跑好spfa即可还有一种从DP的角度出发的理解,即对于点v,使用了k个血包,有dis[v][k]=min(dis[pre[v]][k]+w,dis[pre[v]][k−1]),k&lt;K(血包数...
2019-02-18 10:40:19 275
原创 luogu P4779 【模板】单源最短路径(标准版)
分析这是一个悲伤的故事dij即可,优化的时候注意重载,我就因为这个问题WA了多次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(ar...
2019-02-17 22:12:46 186
原创 luogu P1144 最短路计数
分析在无权图中,bfs便可以代替spfa从1开始bfs,第一次访问到某个节点时走的路径便是1到此节点的最短路,此时累加方案数第n(n>1)次访问到某个节点且此时走的是最短路时,累加方案即可code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int...
2019-02-17 16:18:15 134
原创 【spfa】codevs 1021 玛丽卡
分析首先是spfa但是要考虑如何处理堵车的路一开始想枚举每条边,每枚举一条跑一遍spfa,这样的结果各位一定都知道的于是想去优化,考虑到如果是非最短路上有堵车,女主一定会走最短路,对答案没有影响,于是只需要枚举最短路上的每一条边即可对于路径的保存,可以开一个pre数组,在每次松弛边的时候如果d[i]被更新了,就将pre[i]=j,表示当前到i点的最短路径中,j是i的前驱结点。在做完sp...
2019-02-17 15:19:47 228 1
原创 史上第二详细的平衡树模板讲解
留坑待补#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#define loop(i,start,end) for(register int i=start;i&amp;amp;lt;=end;++i)#define clean(arry,num); memset(arry,num,sizeof(arry));const int maxn=100000+...
2019-02-16 22:05:23 1087
原创 luogu P1339 [USACO09OCT]热浪Heat Wave
分析本来想用spfa做的(毕竟是模版题),但转念一想,有个叫Dijkstra的东西啊于是在线学了下要点如下:从起点开始向四周扩展,扩展的节点是当前已扩展过的节点的相邻节点中边权最小的那个,我们有充分的理由相信这样出来的距离是最短路code#include&lt;bits/stdc++.h&gt;using namespace std;#define loop(i,start,en...
2019-02-15 21:29:47 141
原创 luogu P1462 通往奥格瑞玛的道路
分析以前做过这类题,就是二分歪嘴哦所能接受的费用最大值,然后以此为上限,跑spfa,看是否能够到达终点,如果能,调小上界,不能,调大下界,然后就不断对res(答案变量)取min,最后的res就是答案code#include&lt;bits/stdc++.h&gt;using namespace std;#define loop(i,start,end) for(int i=start;...
2019-02-15 15:34:58 108
原创 P2850 [USACO06DEC]虫洞Wormholes
分析看了半天才看出来,其实就是虫洞建个单向负边,其他的双向正边,然后判断是否有负环即可判负环参照【spfa 判负环】P3385 【模板】负环code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(register int i=start;i<=end;++i)#def...
2019-02-15 10:27:26 351
原创 【spfa 判负环】P3385 【模板】负环
分析主要是如何在spfa里判负环的问题首先易得,对于一个不存在负环的图,从起点到任意一个点最短距离经过的点最多只有 n 个而spfa里,当某个点入队时,就意味着这个点可能成为最短路上的点,而一共只有n个点,所以若某个点入队大于n次后说明有负环同时注意输出话说slf优化不行吗?第九个点就是被卡?想不通啊code#include&lt;bits/stdc++.h&gt;using n...
2019-02-15 10:00:50 585 1
原创 【floyd】P2888 [USACO07NOV]牛栏Cow Hurdles
分析floyd,只是方程改一下dis[i][j]=min(max(dis[i][k],dis[k][j]),dis[i][j])dis[i][j]=min(max(dis[i][k],dis[k][j]),dis[i][j])dis[i][j]=min(max(dis[i][k],dis[k][j]),dis[i][j])注意是有向图code#include<bits/stdc+...
2019-02-13 19:11:24 192
原创 luogu P4231 三步必杀
分析一开始想到差分+线段树,好像数据有太大,拿不满分于是看到了题解里某各路大佬都讲一个高端名词曰:二阶差分何为二阶差分?就是对差分数组进行差分乍一眼看去好像没用,但是手推一下会发现牛逼的地方(图小,大佬轻喷)我们发现,原数组要加上一个等差数列,而一阶差分只需区间均加,而二阶差分更恐怖,只需要修改4个数。。。从图中不难推得:设l,r,s,e如题意,且方差为d设l,r,s,e如题意...
2019-02-12 21:13:32 223
原创 主席树模版--- Luogu P1533 可怜的狗狗
code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(int i=start;i<=end;i++)#define clean(arry,num); memset(arry,num,sizeof(arry));const int maxn=3e5+100;int n,m...
2019-02-12 11:46:30 99 1
原创 luogu P3834 【模板】可持久化线段树 1(主席树)
code#include&lt;bits/stdc++.h&gt;using namespace std;#define loop(i,start,end) for(int i=start;i&lt;=end;i++)#define clean(arry,num); memset(arry,num,sizeof(arry));const int maxn=2e5+10;int n,m,...
2019-02-12 11:42:30 156
原创 luogu P1340 兽径管理
分析题意非常明确,就是在不断加边的过程中跑MST(求最小生成树)Kruskal或prim由于题是要不断加边,若用prim就必须在线操作,而kruskal则可以离线一遍sort就行于是这道题的最优解应该就是kruskal了code#include&lt;bits/stdc++.h&gt;using namespace std;#define loop(i,start,end) fo...
2019-02-08 20:52:30 242
原创 luogu P1972 [SDOI2009] HH的项链【莫队——奇偶优化详解】
题面分析莫队,往死里卡常,开O2加奇偶性优化可卡过我才不会告诉你我这道题提交了37次呢code// luogu-judger-enable-o2#include&amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;gt;using namespace std;#define loop(i,start,end) for(register int i=start;i&amp;amp;
2019-02-07 22:54:35 2498 6
原创 【莫队】luogu P3901 数列找不同
题面分析首先膜拜莫大队长本题是莫队的入门题,数据真心良心用莫队直接过用线段树的大佬无视本蒟蒻code#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#define loop(i,start,end) for(int i=start;i&amp;amp;lt;=end;i++)#define anti_loop(i,start,end)
2019-02-07 13:47:06 187
原创 Luogu P1197 [JSOI2008]星球大战
题面分析并查集即可,注意由于并查集只能维护集合求并,不能维护集合“相减”,故需要按照摧毁顺序倒着运行,变减为加,这基本上算是并查集的一个较高级的用法了code#include<bits/stdc++.h>using namespace std;#define loop(i,start,end) for(int i=start;i<=end;i++)#define ...
2019-02-05 19:55:19 220 1
原创 【dfs】Luogu P1092 虫食算
题面分析这道题自从学习到搜索之日以来一直是我心中的一颗毒瘤什么高斯消元,蒟蒻不会,免谈。。。搜索嘛,枚举对象无非就是每个字母代表的数字而枚举的顺序有大概两种:1.按照算式从右上向左下枚举 2.按照字母在字母表中顺序依次枚举蒟蒻表示驾驭不了第一种,情况比较多,但是打出来后比较好剪枝第二种其实类似于全排列,只是每次生成的序列需要用题中所给算式来验证是否合法罢了,所以比较好打,但剪枝有点...
2019-02-04 13:52:57 218
原创 算法竞赛中在windows下的对拍
昨日听网课习得创建.bat文件进行大数据对拍一法,颇觉好用,现撰博客一篇于此——bat文件bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以...
2019-02-01 11:35:51 727 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人