自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

肘子的博客

向流星许愿

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

原创 BZOJ1221: [HNOI2001] 软件开发(拆点+费用流)

题意:传送门题解:这个题需要使用拆点,因为这一天毛巾用完后可以留到下一天,或者用于A洗衣,或者用于B洗衣中,同时每一天的来源也有买的或者洗好的,所以拆为两个,一边放置用过的毛巾(1-n),一边放需要用的毛巾(n+1,n+n),首先将S与需要用的毛巾连(S,(n+i),inf,p),然后再将需要用的毛巾与最后的T连边(n+i,T,r[i],0),将源点与所需要的毛巾连边(S,i,r[i],0),...

2019-03-29 22:38:19 127

原创 BZOJ3171: [Tjoi2013]循环格(规律+费用流)

题意:传送门题解:首先需要证明出最后对应每个点都对应一个入度和一个出度,详细证明可参考传送门,证明一番之后就能用费用流进行做题了,S向每个点连容量1费用0的边,每个点拆出的点向T连容量1,费用0的边,每个格子向四周连费用0或1的边。附上代码:#include<bits/stdc++.h>using namespace std;const int maxn=20;in...

2019-03-29 17:37:40 141

原创 BZOJ2190: [SDOI2008]仪仗队(欧拉函数)

题意:传送门题解:将这些点统一向左下方移动一格,可以将这些点与原点进行连线,一种斜率只能看到一个点,这是必然的,因为y2/x2=y3/x3,可以进行化简为y1/x1,然后就OK了,要使斜率不同,也就是这两个数需要互质,然后可以统计一下[2,n)之间的欧拉值,最后还有个(1,1),(1,0),(0,1)是特例。附上代码:#include<iostream>#include...

2019-03-29 16:41:49 126

原创 Divide Candies CodeForces - 1056B(思维+数学)

传送门题意:给出a,b,范围为[1,n],然后问(a^2+b^2)%m==0的情况有多少个,n<=1e9,m<=1e3题解:(a^2+b^2)%m=((a^2)%m+(b^2)%m)%m=((a%m*a%m)%m+(b%m*b%m)%m)%m,所以可以通过枚举取余m的情况,然后统计个数即可。附上代码:#include <bits/stdc++.h>usi...

2019-03-29 09:58:00 281

原创 Labyrinth CodeForces - 1063B (0-1最短路)

传送门题意:从起点开始最多能向左走L步,最多能向右走R步,问最多能覆盖图上多少个点?题解:参考ysl的题解,先进行变量代换,之后使用0-1最短路的deque算法即可。附上代码:#include<bits/stdc++.h> using namespace std; struct node{ int x,y; node(int x=0,int y...

2019-03-28 10:19:58 285

原创 快速幂深入了解,以及加法,减法,乘法取余的证明

题外话:昨天看李煜东老师写的算法竞赛进阶指南中说探究一门学问有三个层次:求其解,知其原因,究其思维之本。通俗地讲,就是”怎么做“,”为什么是对的“,”怎么做才能想到这么去做“。--------------------------------------------------------------------------------------------------------------...

2019-03-26 10:48:32 917

原创 BZOJ1818: [Cqoi2010]内部白点(离散化+树状数组+扫描线)

题意:传送门题解:最后黑点的总个数也就是线段之间交点的个数再加上刚开始黑点的个数,首先可以将x轴上的进行离散化,然后把横线和竖线打出来,之后利用扫描线从下往上扫,如果见到竖线的下端,更改树状数组,将对应位置加1,如果见到横线,统计出这个范围的1的个数,见到竖线的上端继续更改树状数组,将对应位置又重新置为0即可。附上代码:#include<bits/stdc++.h>us...

2019-03-23 21:42:56 168

原创 BZOJ2875: [Noi2012]随机数生成器(矩阵龟速乘法/龟速乘法+等比数列递归求和)

题意:传送门题解:可以将前几项依次写出来:x[1]=(a*x[0]+c)%m;x[2]=(a*x[1]+c)%m=(a*(a*x[0]+c)+c)%m=(a^2*x[0]+a*c+c)%m;x[3]=(a*x[2]+c)%m=(a*(a^2*x[0]+a*c+c)+c)=(a^3*x[0]+a^2*c+ac+c)%m;可以发现点规律,每个的第一项都是a^i*x[0],然后后面跟着一...

2019-03-20 17:05:47 158

原创 BZOJ1189: [HNOI2007]紧急疏散evacuate(二分+最大流拆点法)

题意:传送门题解:直接二分答案 mid,也就是所有人安全撤离所需时间,通过最大流来判断逃生时间为 mid 时,所有人能否安全撤离,能则缩小边界: 将源点 S 向每个空地连一条容量为 1 的边,表示每个空地初始时有一个人; 因为每一秒钟只能有一个人移动到门的位置,我们要将每个门拆成 mid 个点,分别表示时刻为第 1 ~ mid 秒的门,并向汇点 T 连一条容量为 1 的边...

2019-03-15 21:07:35 654

原创 BZOJ1070: [SCOI2007]修车(费用流的思维建模/EK+动态边)

题意:传送门题解:参考传送门构造一个图,左边n∗m个点,表示第j个技术人员修的倒数第i辆车,右边n个点,表示第k辆车,源点向左边的点(w=1,cost=0)的边,因为每个人同一时刻只能修一辆车,左边m∗n个点再分别向右边n个点连边,左边第(i,j)个点向右边第k个点(w=1,cost=i∗t[i][j])的边,相当于此时有i个人在等待着这辆车修完,代价就是等待的人数∗修这辆车的时间,右边的...

2019-03-15 12:25:34 143

原创 Easy Problem CodeForces - 1096D (关于前缀的一个DP)

传送门题意:不知道什么类型的DP,做的时候没想出来,参考了篇博文用num1表示到了构成前缀‘h'的最小代价,用num2表示构成前缀’ha‘的最小代价,用num3表示构成前缀'har'的最小代价,用num4表示构成前缀‘hard’的最小代价,那么状态转移方程就是num1=num1+'h'num2=min(num1,num2+'a')num3=min(num2,num3+'r')...

2019-03-14 19:28:58 317

原创 The Fair Nut and the Best Path CodeForces - 1083A(树形DP)

传送门题意:给出一个树,然后每个点都有相应的权值,点与点之间有相应的边权,只能跑树上的简单路径,也就是每个点只能经过一次,最后经过路径落下的值最大能是多少,经过点加上点权,经过边,减去边权。题解:树形DP,dp[u][0]表示经过u这个点的一个子边所能达到的最大值,也就是起点是儿子,终点是u,dp[u][1]表示经过了u,也就是起点和终点分别是儿子,这个dp[u][1]先维护dp[u][0...

2019-03-14 15:23:35 146

原创 BZOJ1054: [HAOI2008]移动玩具(bfs+hash)

题意:传送门题解:直接bfs,最重要的是设计出如何进行判重,然后可以将棋盘看成一个16进制数就可以了。附上代码:#include&lt;bits/stdc++.h&gt;using namespace std;const int maxn=65536;int bg,ed,h,xx[]={0,0,1,-1},yy[]={1,-1,0,0};bool ans[5][5],mark...

2019-03-13 08:20:24 155

原创 BZOJ1040: [ZJOI2008]骑士(基环树DP)

题意 :传送门题解:这道题是传送门的升级版,参考传送门,由于基环树森林最多只有一个基环,所以直接断开算,最后累加森林答案即可。附上代码:#include&lt;bits/stdc++.h&gt;#define ll long longusing namespace std;const int maxn=1e6+5;struct edge{int v,next;}e[maxn*...

2019-03-12 11:20:13 138

原创 P1352 没有上司的舞会(树形DP)

题意:传送门题解:首先根据上司关系系列建图,从上司向下属建一条边,然后把下属的父亲标记为上司,可以看到相邻的边只能选择一个点,然后用用dp[i][0/1]表示以i为根节点的子树选i/不选i所能获得的最大价值,则状态转移方程便很明显了:1、dp[i][0]+=max(dp[son][1],dp[son][0]) //意思是对于节点i,如果i不选,则它的值取决于它的字节点最大值,且字节点可选...

2019-03-11 22:31:21 215

原创 BZOJ1862: [Zjoi2006]GameZ游戏排名系统(splay+hash)

题意:传送门题解:可以看到一共有三种操作,第一种操作是插入操作,然后可以将人名进行哈希,然后将哈希值与在splay中对应的序号对应起来,用个map,之后插入操作,注意相同值查到相同的左儿子处,因为顺序的问题,还有就是如果以前有,那么将先删去,再插上,还有一个操作是查询这个人的排名,很简单,可以直接旋转到根节点的儿子下,然后看大小即可,最后另一种操作是输出第k大到第k+10大,如果没有10个,能...

2019-03-11 21:25:04 164

原创 Tree Cutting (Easy Version) CodeForces - 1118F1(树形DP思想)

传送门题意:给出一个树,然后对树上每个点进行染色,每次可以割去一条边,使得两边要么只有蓝色,要么只有红色,白色无所谓,就是不能一边既有红色又有蓝色,问图中有多少条这样的边?题解:从1开始跑子树,维护当前点以及子树的红色个数和蓝色个数,之后再从1开始跑每条边,如果子树的红色个数等于所有红色个数并且蓝色个数为0,或者红色满蓝色空,那么以可以割去这条边,通过维护子树来进行。附上代码:#...

2019-03-11 15:04:20 172

原创 BZOJ1497: [NOI2006]最大获利(最大权闭合图)

题意:传送门题解:参考06年胡伯涛论文附上代码:#include&lt;bits/stdc++.h&gt;using namespace std;int n,m,x,u,v,w;const int MAX_V=1e5+50;const int INF=0x3f3f3f3f;struct edge{ int to,cap,rev; edge(int _to,i...

2019-03-10 18:46:45 135

原创 BZOJ1007: [HNOI2008]水平可见直线(单调栈/维护下凸包思想)

题意:传送门&amp;传送门题解:可以看到的是上面这些线段其实维护了一个下凸包,然后按照k值为第一关键字(从大到小),按照b值为第二关键字(从大到小),通过单调队列维护一个下凸包,如果交点在此前交点的右方,那么直接弹栈。建议上面两个都交交。附上代码:#include&lt;bits/stdc++.h&gt;using namespace std;const double ep...

2019-03-10 16:55:01 163

原创 BZOJ1877: [SDOI2009]晨跑(拆点法,最小费用最大流)

题意:传送门题解:每天的道路都得完全不相同,然后通过将每个点进行拆点,拆为i和i',流量为1,费用为0,之后其他对应的边除了起点和终点不拆,然后其他的边都建为(u+n,v,1,w),之后跑最小费用最大流即可。#include&lt;bits/stdc++.h&gt;using namespace std;const int MAX_V=1000;const int INF=0x...

2019-03-10 15:00:16 121

原创 Painting the Fence CodeForces - 1132C(前缀和优化)

传送门题意:有n块篱笆,然后有q个工人,分别给出这q个工人的粉刷范围,最后只能雇佣q-2个工人,问最多能粉刷多少篱笆?题解:可以看到本题无法贪心啊,可以通过枚举这两个工人,然后导出对答案所造成的贡献,最主要的问题就是如何维护能快速查找,刚开始用了set进行维护,T19,最后参考了一番,先对一个人进行删减,然后通过维护一个以1构成的前缀和,然后直接更改对答案造成的贡献,最后导出最大值即可。...

2019-03-10 10:49:26 366

原创 BZOJ1934: [Shoi2007]Vote 善意的投票(最小割)

题意:传送门题解:使用网络流是能看出来的,最重要的是建图,建立源点S与刚开始所有同意睡觉的相连,如果这条边割了的话表示与自己本来意愿相反,建立汇点与所有反对睡觉的相连,如果割了的话,表示与自己本来意愿相反,然后朋友关系分别双向边连起来,如果割了的话,表示朋友之间意见相反,最后与S相连的就是同意睡觉的,与T相连的就是反对睡觉的。附上代码:#include&lt;bits/stdc++....

2019-03-07 10:41:09 135

原创 BZOJ1067: [SCOI2007]降雨量(线段树)

题意:传送门题解:这个题超级繁琐,参考传送门,传送门,我觉得本题的重点在于如何在线段树上加信息,使得中间漏掉的年份得以知道,有两种方法,通过维护区间和,提前建树时将不相邻年份设为0,还有一种方法是加标记。附上代码:#include&lt;bits/stdc++.h&gt;using namespace std;const int maxn=5e4+50;inline int r...

2019-03-07 09:43:06 156

原创 BZOJ1503: [NOI2004]郁闷的出纳员(splay)

题意:传送门题解:可以看到一共有四种操作,第一种插入,第二种统一加,第三种统一减,这个副作用是有人出去,第四种是询问工资第K大,可以想到用splay操作,可以将加的操作在外面用个add统一加下,然后见到插入时,如果小于最小工资,直接跳过,否则插入k-add的这么一个员工,对于减,先将外面的add-k,然后找到最小工资minn-add的后一个数,转到根节点下,那么左子树就可以统一处理掉,询问工资...

2019-03-06 19:55:03 188

原创 BZOJ1085: [SCOI2005]骑士精神(IDA*搜索)

题意:传送门题解:要了解IDA*,首先需要了解迭代加深,定义:每次限定一个maxdepmaxdep最大深度,使搜索树的深度不超过maxdepmaxdep。使用范围:需要在有一定限制条件下使用优点:可能会在一个没有解,或者很深的地方无限递归而题目种没有要求输出任何的一组解,所以限制一个深度,让它遍历更多的分治,去更广泛地求解。其次需要了解估价函数定义:f(n)=g(n)+h(...

2019-03-06 09:42:31 191

原创 BZOJ2761: [JLOI2011]不重复数字(set/hash分离链接法/treap)

题意:传送门题解:直接使用set,其实也就是个平衡树。附上代码:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(){ char ch=getchar(); int f=1,x=0; while(!(ch&gt;='0'&amp;&amp;ch&lt;='9')){if(ch...

2019-03-05 22:16:32 123

原创 BZOJ1076: [SCOI2008]奖励关(状压DP+期望 记忆化搜索/倒推)

题意:传送门题解:用dp[i][j]代表从第i个宝物开始,当前状态(已经取过的宝物)为j的情况下,用最优策略应对,到最后可以取得的分数的期望值。因为当前这一轮出现任何宝物的几率相等,所以期望值等于 所有情况下期望得分的和 除以 情况数。而出现第k种宝物的情况下,期望得分为max(dp[i+1][j],dp[i+1][j|1&lt;&lt;k] + P[k])。所以,转移方程为dp[i][j...

2019-03-05 19:02:57 231

原创 Vitya and Strange Lesson CodeForces - 842D (01字典树)

传送门题意:首先给出一组数,然后连续给出一系列数,问这组数都与这系列操作异或后的mex值是多少?题解:一眼看上去觉得是01字典树,最后还发现虽然问题是连续操作,但是可以将此时的问题和上面的问题异或起来,但是我还是使用的是传送门中查询异或后比这个数小的数有多少个,最后自然也就T了,然后参考了别人的题解,因为x^y=z,z固定的话,这个x是固定的,不可能出现几个x与y异或都是z,所以就可以反插...

2019-03-04 15:20:49 215

原创 方程的解数 POJ - 1186 (折半搜索+hash开放寻址法)

题意:传送门题解:因为直接从头暴搜是150^6,直接爆T,所以采取折半搜索,先搜前n/2个,然后用hash记录,之后再搜后n/2个,然后将答案的负数是否在哈希表中出现过,并加以统计答案,最后复杂度就降为150^3附上代码:#include&lt;iostream&gt;#include&lt;cstdio&gt;#define hash HHHusing namespace s...

2019-03-02 10:50:41 185

原创 分组背包专题

HDU - 1712题意:有n门课需要复习,总共有m天,然后给个n*m的矩阵表示复习j天在第i门功课,能得到的收益是多少,最后问最多能得到多少收益?题解:直接将每门课的复习时间以及复习收益当作一组,然后总共有n组,之后直接跑分组背包即可附上代码:#include&lt;bits/stdc++.h&gt;using namespace std;const int maxn=1e...

2019-03-01 20:16:01 152

空空如也

空空如也

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

TA关注的人

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