自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Patrickpwq

佛系

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

原创 【SCOI2005】骑士精神(IDA*)

IDA*=迭代加深+估价函数A*=BFS(优先队列)+估价函数迭代加深通常用于:1.在有一定的限制条件时使用(例如本题中“如果能在15步以内到达目标状态,则输出步数,否则输出-1“)。2.题目中说输出所有中的任何一组解。相当于对于一颗很深的搜索树,我们限制它的层数,类似于广搜,尽可能遍历更多的分支。evaluate:估价函数,本题中是将目标棋盘与当前棋盘作比较,注意估价函数...

2019-06-21 23:36:32 258

原创 【SCOI2010】传送带(三分套三分)

第一次接触三分算法,我认为是比较好理解的。三分算法用于求单峰函数的最值,与二分不同,二分用于求单调函数中趋近某个值的值。三分搜索的实现主要是判断midl和midr所在值的大小。以凸函数为例(凹函数类似,只是判mid大小的时候保留小的即可(其实也是保留离极值最近的mid)),先以left和right为端点计算出它们的中点midl,然后再以midl和right为端点计算出它们的中点midr,接...

2019-06-17 16:17:50 428

原创 【UVA1608】不无聊的序列(分治,中途相遇)

如果一个序列里没有只出现一次的元素,那么这个序列显然是无聊的。如果一个序列里有一个出现一次的元素A[k],那么对于这个序列无聊或不无聊的判断,只需判断[1,,k-1]和[k+1,n]是不是无聊的。所以就可以递归下去,那么我们现在的问题就变为如何找到一个只出现一次的元素。预处理好每个数的前驱,后继,扫一遍,判断是否在区间内即可。不过问题来了,设检查长度为n的序列花费T(n)的时间,则有T...

2019-04-25 23:57:46 318

原创 【NOI2002】贪吃的九头龙(树上背包)

// luogu-judger-enable-o2// luogu-judger-enable-o2#include<bits/stdc++.h>#define bmn lkx266404225#define ll long longconst int N=305;using namespace std;template<class T>inline vo...

2019-03-02 16:19:57 303

原创 【CF343D】Water Tree(树链剖分)

大水题#include<bits/stdc++.h>const int N=500005;using namespace std;template<class T>inline void read(T &x){ x=0; int f=1; static char ch=getchar(); while(!isdigit(ch)) {if(ch=...

2019-03-02 10:46:25 234

原创 【codevs1288】埃及分数(迭代加深搜索)

我也不知道为什么样例输出答案不是5 9 9....有时候,答案的搜索树深度过大,甚至根本无法估测,使得我们很容易超时。这时往往用到的是迭代加深搜索——限制本次搜索的层数,每次比上次多一层,这样不会很浪费时间,因为当前层的状态数相对于之前的来说少的多。本道题是个典型的例子代码还进行了一个剪枝:若剩下的层数全部选同一个数还不够,就break掉#include<bits/st...

2019-02-23 21:44:46 261

原创 【HNOI2010】弹飞绵羊(LCT)

这道题不用换根,因为换根存在的意义就是方便查询路径(u,v)上的信息,而这道题只需要一个点的size#include<bits/stdc++.h>const int N=200005;using namespace std;template<class T>inline void read(T &x){ x=0; int f=1; s...

2019-02-23 15:06:31 163

原创 Link-Cut-Tree学习笔记及洛谷模板

特别鸣谢@gigo_64!感谢他为我讲解了LCT。LCT,link-cut-tree,用于解决一类动态树的问题。所谓“动态树”,就是说让我们维护若干棵有根树组成的森林。操作往往涉及到对树进行删边(cut),连接(link),一些路径操作。而LCT,可以在均摊log(n)的时间内实现上述问题。与树链剖分类似的是:LCT同样对节点的儿子进行了划分,分为“虚,实”两类,相应的边(链)叫做虚边(链...

2019-02-23 14:16:15 204

原创 PatrickpwqAFO了

中考学业繁忙 告辞 

2019-02-18 22:07:35 210 4

原创 【19.2.18】测试题解

题太水了懒得一个一个发T1:题意就是5000000个点,10000000条边,边权只有1或2,求最短路我的做法:先BB一句,要开始考试的时候L让我和gigo,gsy去楼下考,我说看一下题再决定,然后他说:你看,第一题是裸的最短路。又因为我懒得搬东西去楼下并且不想承受爆零/垫底的压力,于是就留在楼上。然后做这道题的时候。嗯...L都说了是最短路,直接上SPFA,觉得可能会卡我于是...

2019-02-18 14:57:18 189

原创 【P2709】小B的询问(莫队)

水博客的#include<bits/stdc++.h>#define ll long longconst int N=50005;using namespace std;template<class T>inline void read(T &x){ x=0; int f=1; static char ch=getchar(); while(...

2019-02-17 15:02:57 150

原创 【BZOJ2038】小Z的袜子(莫队)

解锁成就:块分错+忘了排序 结果还TM在洛谷上AC了....交到WOJ才发现(或许这也是WOJ评测慢的好处?)//P(same)=sigma(cnt[i]*(cnt[i]-1))/(r-l+1)*(r-l) #include<bits/stdc++.h>#define ll long long#define re registerconst int N=50005;us...

2019-02-17 15:01:37 181

原创 【SDOI2009】HH的项链(树状数组)

一开始想到了之前做的这道题先来看个例子 1 3 3 3 5若要询问[3,5],直接用[1,5]-[1,2]得到的答案是1,这显然是错误的我们观察问题发生在哪里[1,2]里的3,受到[3,5]里的3的影响,实际上是不应该算入贡献的,也就是说应该把下标为2的地方减去1,也就是说我们需要维护每个数上次出现的地方,之后进行减一不过我一直卡在离线过后,枚举询问,但缺不好确定这个地方怎...

2019-02-17 13:46:53 204

原创 【WOJ2440】李泽言的生日蛋糕(分块+stl)

分块+stl爆草#include<bits/stdc++.h>using namespace std;const int N=50005;const int K=305;template<class T>inline void read(T &x){ x=0; int f=1; static char ch=getchar(); while(...

2019-02-16 23:35:19 9186

原创 【WOJ 2443 L的鞋子】【luoguP4135 作诗】(分块猛草)

不会莫队+在线只能用分块卡常卡了一个小时 草 整个人都不好了自己YY出来的 记录a[i][j]表示i在块j中出现的次数。对于这个东西求出前缀和ss方便后面使用。再记录sum[i][j]表示块[i,j]中满足条件的个数,这玩意可以预处理出来。然后对于询问(x,y),枚举左右多出来的那一截里面的数带来的贡献(有可能为负),加上中间的sum即可。注意特判,以及对于50000以上的...

2019-02-16 12:52:18 490 2

原创 【BZOJ5102】【POI2018】Prawnicy (贪心)

#include<bits/stdc++.h> const int N=1000005; using namespace std;template<class T>inline void read(T &x){ x=0; static char ch=getchar(); while(!isdigit(ch)) ch=getchar(); whi...

2019-02-08 21:36:39 170

原创 【ZJOI2006】书架(Splay/树状数组+二分)

我们建棵平衡树,维护排名关系TOP:将元素Splay到根,然后将左子树合并到该元素的后继BOTTOM:将元素Splay到根,然后将右子树合并到该元素的前驱(相当于强行更改偏序关系)INSERT:直接与该元素的前驱/后继交换位置及信息ASK:将元素Splay到根,输出左儿子的sizeQUERY:第k大一开始的插入由于是有序的,可以不用那么麻烦#include<...

2019-02-08 14:51:27 271 4

原创 【CF1110B】Tape(贪心)

我在干嘛啊....明明想到了为什么觉得自己是错的......反着思考,先把所有的点用1覆盖,然后用N-K次机会将两两相连,显然,这里得用最小的#include<bits/stdc++.h>const int N=100005;typedef long long ll;using namespace std;template<class T>inline v...

2019-02-08 12:38:23 392

原创 【HNOI2012】永无乡(动态开点+权值线段树合并)

用并查集维护一下当前联通块的根节点#include<bits/stdc++.h>const int N=5000005;using namespace std;template<class T>inline void read(T &x){ x=0; static char ch=getchar(); while(!isdig...

2019-02-06 22:46:15 215

原创 【CF1111B】Average Superhero Gang Power(贪心)

假贪心FST了,那么假的贪心居然还能过pretest.....----------------------------------------------------------------------首先,先删小的肯定比删大的优,因为sum减少的更少,除下来就更大。但是我们无法确定究竟是删多少个(我当时就以为是全删后加),因此排序后枚举,不断对ans取max即可果然这证明了我对贪...

2019-02-06 11:04:34 341

原创 【CF1030F】Putting Boxes Together(线段树维护动态区间带权中位数)

这道题的模数把我调的快死亡了,不过这确实是一道不错的题,让我们来回顾一下。原问题我们可以转换为所有数走到一个点上,再分散开来,因为他们相对位置是一定的。接着我们发现,着很显然是一个区间动态带权中位数问题。没错博主看到这儿的时候也懵逼了,因为他没做过带权中位数的题于是博主去学习了下带权中位数,让我们来看看简略的介绍吧相信你一定没有看懂吧。不妨举个例子,我们有很经典的货仓选址的模型...

2019-02-04 22:00:32 466

原创 【HEOI2016/TJOI2016】排序(二分答案+线段数01)

思路很妙的一道题我们二分q位置上的数,将大于等于q的数赋成1,小于q的数赋成0,这样维护一个01排序(参见ldx的SGT水题1),最后检查q位置上的数是不是1,如果是,就符合要求,可以把q赋的更大。我们考虑这样是有单调性的吗?由于是全排列,假设当前二分出来的答案是ans,发现这个位置是1,那显然,比ans小的答案一定能同样满足。// luogu-judger-enable-o2#i...

2019-02-03 11:25:07 231

原创 【NOI2004】郁闷的出纳员(Splay+文意理解)

Now,follow me.第k多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多...

2019-02-02 20:34:06 194

原创 【P1402】酒店之王(最大流)

我只是来熟悉板子的,水题没啥好说(请问一个step数组忘记清零,dfs正向边反向边加反的人是如何拿到50分的???)#include<bits/stdc++.h>const int N=500;const int M=100000;const int INF=0x3f3f3f3f;using namespace std;int n,p,q;int s,t;str...

2019-02-01 22:00:29 260

原创 【SCOI2007】修车(费用流)

好像大家似乎都在筹备退役滚粗文化课的后事了,我是不是也应该准备了??不过我不想退役啊55555---------------------------------------------------------------------很好,这个记性~=鱼,zkw板子还是背不熟,我**。----------------------------------------------------...

2019-02-01 11:45:20 163

原创 【WOJ2325】大整数(线段树二分快速幂‘/进制模拟)

描述XXX实现了一个大整数模板(十进制) 。他的大整数有一个十分厉害的功能:它可以像提 取子串那样提取出整数中的一段。当然,这提取出的一段也是大整数。不过,XXX发现 他的模板中这种操作的效率很低,于是想请你帮他实现这样一个功能。也就是说,在给出一 个长度为 N 的大整数后,你的程序要能够快速求出大整数某一段的值。由于大整数在加减 中经常会有进位等状况发生,你的程序还需要支持区间修改操作,即将...

2019-01-31 23:06:48 195

原创 【BZOJ4293 】【PA2015】Siano(思维+线段树区间覆盖与线段树上二分)

有个弟弟性质,一开始没注意到,就是所有草的高度排名是永远不变的有了这个性质后,很容易想到将原序列通过二分找到那个临界点。然后全局加,答案是右半边的和减去原本的和。再对右边进行区间覆盖注意,代码细节很多,比如线段树上二分,只需要维护一个max就能省很多事,还有pushdown时,f与cover标记的处理不是常规的先f在cover,原因留给你们思考一下。#include<bits/...

2019-01-31 21:14:27 221

原创 【HNOI2004】宠物收养所(Splay删除前驱后继)

用Splay按照题意模拟即可注意边界情况的特判 pre返回的是-INF!以及INF的取值!// luogu-judger-enable-o2#include<bits/stdc++.h>#define ll long longconst int N=80005;const int mod=1000000;const int INF=2147483600;using...

2019-01-30 23:47:38 177

原创 【HNOI2002】营业额统计(Splay前驱后继)

数据结构之变傻警告Splay入门题注意特判为0的情况#include<bits/stdc++.h>const int N=50000;const int INF=0x3f3f3f3f;using namespace std;int n;template<class T>inline void read(T &x){ x=0; int f...

2019-01-30 13:51:05 160

原创 【POI2015】Kinoman(思维,线段树)

这是一道不错的题,不过我并没有思考充分就实在忍不住看了题解,有点遗憾记pre[i]表示原序列i位置的数上一次出现的位置每加入一个数,我们发现pre[i+1]~i作为左端点的答案就增加了w,1~pre[i]减少了w我们可以枚举右端点,每加入一个数进行区间加/减操作,不过我们发现,虽然从理论上来讲的确是1~pre[i]减少了w,不过如果每次都区间减,那会减出问题的。所以实际上,每次只需要对...

2019-01-29 19:31:52 275

原创 【hdu 5316】Magician(线段树傻瓜题)

(题目环视成Mogician?恶膜某民秒没命....)又是这种讨论合并的线段树注意子序列不能为空然后注意有可能全都是负数,容易在合并时出现左边加上右边还比原来小的情况#include<bits/stdc++.h>#define ll long longconst int N=1e5+5;const ll INF=0x3f3f3f3f3f3f3fll;using...

2019-01-29 11:44:19 150

原创 【hdu6183 】Color it(骚骚的动态开点)

这道题容易陷入权值线段树的怪圈其实不然,题目问的是有多少种颜色,我们只需查到各种颜色,在[y1,y2]中横坐标的最小值就行,判断其小不小于X需要动态开点#include<bits/stdc++.h>const int C=55;const int D=1e6+5;const int N=4e6+5;using namespace std;int rt[55],t...

2019-01-28 23:06:01 174

原创 【CF915E】Physical Education Lessons(动态开点)

这是一道线段树动态开点裸题空间一定能开多大开多大#include<bits/stdc++.h>#define N 15000005using namespace std;template<class T>inline void read(T &x){ x=0; static char ch=getchar(); while(!isdigit...

2019-01-28 22:06:39 274

原创 【WOJ4351】 ldx的SGT水题3

水题*3我们处理出差分数组,注意到gcd(a,b)=gcd(b,a-b),满足差分的样子,因此可以用线段树维护差分数组,区间加相当于单点修改,需注意的是询问[l,r]的第一个点需要前缀和统计#include<bits/stdc++.h>const int N=200005;using namespace std;template<class T>inlin...

2019-01-27 14:26:35 209

原创 【WOJ4350】ldx的SGT水题2

水题 gcd可合并#include<bits/stdc++.h>const int N=200005;using namespace std;template<class T>inline void read(T &x){ x=0; static char ch=getchar(); while(!isdigit(ch)) ch=getchar...

2019-01-27 14:23:50 216

原创 【WOJ 4348】ldx的SGT水题1

水题 把排序看成区间覆盖就行 我写复杂了 只需要维护0的个数就行了的#include<bits/stdc++.h>const int N=1000005;using namespace std;int n,v[N];struct Tree{ int l,r,cover,sum[2];}tree[4*N];inline void pushdown(int now...

2019-01-27 13:10:34 224

原创 【洛谷P2045】方格取数加强版(费用流)

源点先连(1,1)容量为k,费用为0,表示有k条方案。(n,n)连汇点,同上。然后向下面,右边的方块连容量为INF,费用为0,仅表示可以联通。为了满足每个点只能用一次的限制,套路地拆点,并且连流量为1,费用为点权的边。注意有个坑,光是这样一条是不行的,因为我可以不取这个数,因此还要连流量为INF,费用为0的边。注意这是一个最大费用流,我们一般把所有费用取个负就行了。#includ...

2019-01-27 00:16:37 239

原创 又短又快♂的zkw费用流模板

ZKW费用流+SPFA SLF优化,简直针快!说几个关键点对于普通费用流,因为每次增广后有一些边会因流量为0而导致一些点的最短路增大,但没有必要再跑一遍spfa. ...其实具体我也不知道怎么弄得 毕竟我只是一个背板选手#include<bits/stdc++.h>#define re registerconst int N=405;const int M=...

2019-01-26 23:11:23 216

原创 【USACO18JAN】Cow at Large G(树形DP)

见识了好多乱搞神仙我是用树形DP做的 设dp[i]表示在i点的子树放多少个守卫显然 有方程if(mind[i]-(depth[i]-1)<=depth[i]) (其中mind表示i的子树内的叶子节点最浅的深度) dp[i]=1 即守卫可以抓到这个人else dp[i]=Sigma{dp[i.son]}#include<bits/stdc++.h>const...

2019-01-26 13:46:30 217

原创 【USACO18JAN】MooTube(Kruskal重构树+倍增)

博主考试的时候失智了 明明只差一句话就可以AC了的 然后抽风了交了暴力上去标算是离线并查集 这里提供一种Kruskal重构树的简单做法将重构树建出来后 此时是一个小根堆我们倍增的往上跳 直到找到一个祖先的权值刚好小于K显然 这个祖先的子树内的所有点到v的距离都是大于等于K的 因为此时u到v的距离是LCA(u,v),而显然,LCA(u,v)一定属于这个祖先的子树。#includ...

2019-01-26 13:35:59 2106

空空如也

空空如也

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

TA关注的人

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