自定义博客皮肤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

佛系

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

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

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

2019-01-31 23:06:48 212

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

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

2019-01-31 21:14:27 241

原创 【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 204

原创 【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 184

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

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

2019-01-29 19:31:52 296

原创 【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 173

原创 【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 191

原创 【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 299

原创 【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 228

原创 【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 240

原创 【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 247

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

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

2019-01-27 00:16:37 355

原创 又短又快♂的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 242

原创 【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 247

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

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

2019-01-26 13:35:59 2164

原创 【SCOI2007】蜥蜴(最大流)

很显然柱子的高度就是边的容量 因为这个定义和容量很像所以把柱子拆成两个点然后之后就很显然了源点先连接蜥蜴所在柱子上 容量为1 然后柱子之间符合距离要求的相连(注意是右端点连上左端点) 容量随意 然后能出去的柱子连汇点 容量随意 然后注意细节#include<bits/stdc++.h>const int N=100005;const int INF=0x3f3...

2019-01-25 23:05:36 152

原创 【USACO07OPEN】吃饭Dining(最大流)

将超级源点先与所有食物相连,容量为1(这代表每种食物主人只能有一个),饮料和超级汇点相连,容量也为1(这代表饮料的主人只有一个),随后食物与对应的牛相连,容量也为1(这代表每种食物量为1,选完就没有了),以及牛与饮料连1(这代表每种饮料量为1,选完就没有了),不过注意到隐藏的限制条件,流入牛的流量有可能大于1,流入饮料的流量也可能大于1,这代表这头牛选了多个食物/饮料,每只牛只能选择一...

2019-01-25 17:44:13 522

原创 【SCOI2013】摩托车交易(Kruskal重构树+贪心)

货车运输升级版从u到v,能卖出的黄金取决于路径上的最大值的最小值->Kruskal重构树还有个贪心的思想,遇到黄金能买就买,因为就算我们买多了,我们可以假装上次没有买这么多。那怎么处理铁路车站呢?只需建值为INF的边即可然后就模拟了(话说谁能给我讲一下Kruskal重构树各个数组到底开多大啊 全凭感觉开)#include<bits/stdc++.h>#...

2019-01-24 23:02:19 227

原创 【USACO09JAN】安全出行Safe Travel(最短路树+并查集优化)

萌新冒泡首先有个套路 只要题目中说了源点到每个点最短路径是唯一的 那往往都和最短路树有关系题意是求不能经过最后一条边的次短路 要使得这条路最短 显然要尽量的多走最短路径上的路 假设现在要求1->x 我们考虑走了一段最短路径后如何跳到x点设当前点为u 选择与u点相连的一条非树边(这条边连向x的子树内的某点v) 然后ans[x]=dis[u]+w(u,v)+(dis[v]-dis...

2019-01-24 17:14:29 511

原创 【ZJOI2012】灾难(拓扑+重新建树+lca)

(我怎么又双叒叕发烧了...)不难想到 对于一个生产者 它死了 所有它的子树就都死了换句话说 对于一个消费者 它死 当且仅当它的所有食物都死了 什么时候所有食物都死了呢?——最顶端的生产者死了。否则,那消费者一定能至少找到一种食物假如我们能够建出这样的一颗树就是极好的 不妨先来考虑建树的过程 对于新加入的点now 首先我们确定now是否为生产者 否则 将now放在食物们lca的儿子的地...

2019-01-24 10:47:59 126

原创 浅谈最短路计数Dijkstra 与 SPFA实现的不同

由于Dijkstra每个点被“操作”完了后就不会再进行对其他点的松弛操作,而SPFA会入队多次,这就造成了它们在最短路计数实现上的不同先说Dijkstra的思路,给每个点记一个ans[i]表示源点到当前点最短路的条数若需要松弛,那么直接ans[y]=ans[x]否则这个是非常好理解的,正确性也显然——每个点只会对其他点最多松弛1次。而SPFA不能直接套用,一个显然的例子是...

2019-01-22 22:48:21 331

原创 【USACO08FEB】修路Making the Grade(dp+单调性优化+离散化)

萌新冒泡这道题是一道较难的dp综合运用题在手玩几组数据后 我们会发现一个数要么不改 要么改成原序列中某个数的值(以下我们只讨论不下降序列)比如100 250 130 如果要修改250 那肯定修改成130是最优的 而不是110 120等等那我们或许可以尝试枚举当前数修改成的值?但由于 Ai ≤ 1,000,000,000,我们最好先离散化再来那设f[i][j]表示第i个数修改...

2019-01-22 14:09:54 365

原创 【POJ 1661】Help Jimmy

萌新冒泡由于“是男人就下一百层” 使得这道题很形象 然后写的时候思路就会非常顺畅啦 我虽然还是个菜鸟 都能一遍AC总的来说 我们记f[i][0] 表示到达第i块板子左端点所需最少时间 同理f[i][1]为右端点可以先预处理出每块板子左右端点所对应的是那块板子然后当前板子从左端点可以转移到所对应板子的左边或者右边 右端点同理#include<iostream>#i...

2019-01-21 22:50:50 190

原创 【P2858 USACO06FEB】奶牛零食Treats for the Cows(区间DP)

萌新冒泡这是一道更水的区间dp#include<bits/stdc++.h>const int N=2005;using namespace std;int n,a[N],f[N][N];int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n...

2019-01-21 18:26:41 209

原创 【USACO07NOV】挤奶的时间Milking Time(领接表优化dp)

萌新冒泡 这道题比较水 dp有两种做法 这是其中一种#include<bits/stdc++.h>const int N=1000005;const int M=1005;using namespace std;int n,m,r,head[N],next[N],f[N];struct Node{ int st,ed,ef; friend istream&...

2019-01-21 18:14:49 263

原创 【HAOI2007】理想的正方形(单调队列)

萌新冒泡记得很早之前A过 不过忘完了 当年毫无思路只会暴力 现在能够独立打出来AC啦 虽然还是很菜 不过看到进步就挺开心的思路就是找出每一个点往上延伸k个的最大值,最小值 然后再把每段长度为k的再看做一个整体注意细节就好#include<bits/stdc++.h>#define N 1005const int INF=0x3f3f3f3f;using name...

2019-01-21 12:11:42 175

原创 【P1281】书的复制

萌新冒泡这是一道比较简单的dp题 总的来说就是先把这个最大值的最小值求出来 然后打印方案设dp[i][j]表示前i本书 被j个人复制得到的最大值的最小值 转移方程dp[i][j]=min(dp[i][j],max(dp[k][j-1],sum[i]-sum[k] ) ) 注意初始化#include<bits/stdc++.h>const int N=505;using...

2019-01-21 11:16:02 329

原创 【USACO13NOV】挤奶牛Crowded Cows

萌新冒泡啦这是一道单调队列题 正反做两遍 可用于加深对单调队列的理解#include<bits/stdc++.h>const int N=50005;using namespace std;int n,D;struct Node{ int pos,h; friend istream&operator>>(istream &in,Nod...

2019-01-20 22:57:18 278

原创 【USACO16OPEN】钻石收藏家Diamond Collector

萌新又冒泡我最初的想法就是先找到最长的一段 删去后找次长的一段不过很显然 这个方法有很多毛病 比如最长的不止一段 就会对次长的一段的抉择产生影响不过我们可以以此做一点修改 可以先排序 接着预处理出每个数往后最长的一段然后可以考虑枚举每一个数 对于这个数后的最长段 次长段一定在最长段之后的某一段 可以不考虑在之前的情况 因为之前是会被枚举到的那对于次长段的寻找 甚至可以套上线段树...

2019-01-20 21:46:05 868

原创 【51Nod 1051】 最大子矩阵和

萌新冒泡上一道题的推广子矩阵是由连续的几个不一定完整的列组成的 我们只需抓住是“连续”的这个特点即可 因此枚举起始行 结束行 对于这个区间 采用一维的方式来做 #include<bits/stdc++.h>const int INF=0x3f3f3f3f;const int N=505;using namespace std;int n,m,a[N][N],b...

2019-01-19 23:08:44 174

原创 【P1115】最大子段和(分治)

这个方法挺重要的 虽然这道题O(n)可以过萌新冒个泡#include<bits/stdc++.h>const int INF=19260817;const int N=200005;using namespace std;int n,a[N];int Solve(int Left,int Right){ if(Left==Right) return a[L...

2019-01-19 11:03:01 206

空空如也

空空如也

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

TA关注的人

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