自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 LOJ 「网络流 24 题」太空飞行计划(最大权闭合子图)

https://loj.ac/problem/6001原来还有这种操作。这种最大权闭合子图问题的套路就是:权值为正的,从源点向该点连一条流量为权值大小的边。权值为负的,从该点向汇点连一条流量为权值大小的边。原本的有关系的两个点之间连接一条流量为无穷大的边。最后得到的最大收益 = 权值为正的点的权值之和 - 跑一遍网络流得到的最小割。为什么会是这个结果呢?1.如果

2017-07-31 20:52:19 373

原创 LOJ模板题 无源汇有上下界可行流

https://loj.ac/problem/115没有loj我都不知道有这种操作。如何求得一个无源汇的图是否可行呢,是一个网络流可以解决的问题。首先,我们知道每条边的起点u,终点v,下界low,上界up。最初始的图理应是由各条边的下界流量组成的。然后我们看一看每个点是否能做到流入量和流出量平衡。本来就平衡的话就不用管这个点了。如果不平衡,我们分情况讨论如果对于点p,流入量

2017-07-31 12:27:57 657

原创 CodeFroces 833A. The Meaningless Game(数学)

题意:两个人,一开始都是1分,然后每次会随机得到一个数字k,然后会有一个人获胜,获胜的人的分数会乘以k^2,另一人则乘以k。现在只知道两个人最后的成绩,问是否存在一种方案使得两个人分数合理。解法:很简单,假设a=k1*k2*k3*k1.....,b=k1*k2*k3*k2*k3....,其实就是说a*b就是k1*k2*k3的三次方。那么我们先找是否存在这样一个数字的三次方等于a*b,如果不存在

2017-07-31 10:18:56 261

原创 CodeFroces 834B. The Festive Evening(暴力)

题意:给出26个门口,标号为A到Z,你有n个客人,每个客人都会去某个门进入城堡,每个门在需要进这个门的第一个人开始开着,到最后一个要进这个门的人才会关闭。如果某一时刻开着的门的数量超过k,那么就会有坏人溜进去城堡。问是否有这样不安全的时刻,有输出yes,否则输出no。解法:只需要枚举一下26个字母的开始和结束的位置,存起来。然后再次枚举每一个时间点,看看是否会有超过k个门开着。算算复杂度为

2017-07-31 09:55:43 343

原创 HDU 5093 Battle ships(二分图)

很经典的二分图匹配问题。对于这个问题,我们只需要遍历两遍图,来建立一个二分图。原则为,如果这里有个#,说明这一行要拆成两行,这一列要拆成两列。代码如下:#includeusing namespace std;const int MAXN = 55;int uN, vN;int n, m; //u,v数目char graph[MAXN][MAXN];int row[MAXN

2017-07-31 09:15:39 244 1

原创 CodeFroces 827B. High Load(构造法)

http://codeforces.com/problemset/problem/827/B题意:给出n个点,然后有k个点是exit-node(也就是入度为1的点),题意本来是构造一个网络,也就是像最小生成树一样,这里的区别就是,给定了点和入度为1的点的个数(也就是最外围的点),让你输出可行的边的方案。最小生成树是给出边让你构造。这里规定任何两点之间如果连成边距离是相等的。解法:我们先

2017-07-29 20:26:10 269

原创 POJ 1017 Packets(贪心)

题意:每个包装都是6*6的,现在给出1*1 2*2 …… 6*6的商品有多少个,问最少用多少个包装可以装完这些商品。解法:贪心一下即可。首先4 5 6三个尺寸的商品根本没得选,必须占一个,所以我们先把4 5 6算一算,有空的位置向下取2 和 1。然后就是3,那么包装最多可以装4个3,那么把尺寸为3的算一算,可能会有多出装不满的,那么就会向下拿2,最后拿1.这里手写一下暴力。然后就是2,

2017-07-29 15:45:17 267

原创 POJ 2393 Yogurt factory(贪心)

题意,给出n和s,你有n个星期,每个星期生产的花费是不同的,为c_i,然后每个星期指标是不同的,要生产y_i件商品。当然,你可以上几个星期生产了一直保存这到这个星期来交货,但是每个星期的保存花费是s。问要完成这些指标的最小花费是多少。解法:反正我就瞎搞了一发,遍历一次,如果相邻的两个星期花费之差(后-前)大于s,那么肯定可以用前一个星期+s代替当前这个星期,然后更新这个星期即可。前面的有没有可

2017-07-29 11:14:27 211

原创 POJ 3050 Hopscotch(暴力)

题意:给出一个5*5的矩阵,然后你可以任意选一个点开始跑,当然只有上下左右四个方向,跑过的点是可以重复跑的。跑出一个长度为6的数字,问有多少个不同的数字、解法:一个5*5的矩阵也就是我们最多有25个入口,然后每层有四个状态数,最多六层,那么总的复杂度是O(25 * 6^4)。这很明显,直接跑就好了。代码如下:#include#include#include#includeusi

2017-07-29 09:45:34 288

原创 POJ 3187 Backward Digit Sums(暴力)

题意:给定一个n和m,然后你会有一个序列,里面有n个元素,且这n个元素是1到n的。按照题中树塔的形状,给出了最后的值m,问初始序列是怎样的。如果有多个答案输出字典序最小的。且没有说如果没有答案输出啥,那就默认这个肯定有解。解法:首先我算了算最上层每个值对m的贡献,发现这是一个杨辉三角。所以先预处理一下得到一个杨辉三角,然后直接枚举上面n个数字,n最大为10,最大运算量也就10!=3e6,所以这

2017-07-29 09:41:02 181

原创 2017年多校赛第二场 1003.Maximum Sequence(贪心)

题解里面写的挺高大上的,但是当时过了那么多人,肯定是往着水题想,所以决定试一发贪心。当时队友用线段树来算,我现在补题用优先队列写,算是等效的吧。但是我wa了三四发,队友当时一发过的- -wa点如下1,队列忘记清空2,一开始用pair,然后想到pair在优先队列里面第二个元素也会从大到小排列,我第二个元素存放的是当前这个值是属于第几个a_i的,那么在每次取出队首的元素的时候你还需要判断这

2017-07-28 15:38:39 267

原创 2017年多校赛第二场 1011的一些想法

见到这题,还很迷糊,以前一直认为正多边形就是每条边都相等。。。所以好像不好写的样子。并且写出了我还说这怎么搞。。。后来看到怎么这么多人过。。。队友上去直接冲正方形就过了。。。后来发现这种构造方法有问题,因为他每个角度不是相等的。感觉读书读傻了,菱形也不是每个角度相等的但是四条边都相等,从来没有把它归为正四边形一类啊(特殊的正方形除外)。百度了一波正多边形的定义才明白,正多边形是指每条边

2017-07-28 14:34:15 237

原创 POJ 2718 Smallest Difference(暴力枚举)

题意:一行中有不超过十个数而且不会重复而且是递增给出的。然后你把他们分成两份组合起来成一个数字,让这两个数字相差最小。输出最小的差值。不能有前导零(除非这个数本来就是0)解法:很明显,如果是奇数的话,我们直接就可以贪心得到答案了。偶数的话,还要分出为2的情况,这样的话就会出现可能有0的情况。答案直接就是后一个减去前一个。然后枚举相邻的两个数a,b(a一开始傻逼了,我打算先判断一下这

2017-07-26 19:42:09 215

原创 2017年多校赛第一场 1001 Add More Zero(逻辑思维)

很明显,要找出10的k次方小于(2的m次方 - 1)且k尽量大,就是对log10(2^m-1)向下取整。并且2的次幂是不存在刚好等于10^k的情况的,比如1000-1会退回999少了一位,但实际上这种情况对于2的次幂不会存在。所以就变成了求log10(2^m),也就是m*log10(2)。我写这题的时候并不会写,我是直接想找规律,以为他进制都是看最高位,最高位恰好又是1 2 4 8 1 3 6

2017-07-26 11:47:26 381

原创 2017年多校赛第一场 1011 KazaQ's Socks(找规律)

做法:只需要枚举一下天数为2,3,4,5,一下子就能看到规律了。要注意要用long long。代码如下:#includeusing namespace std;int main() { long long n, m, k, ans; int Case = 1; while(cin >> n >> m) { if(m <= n) { ans = m; } els

2017-07-26 10:30:08 282

原创 2017年多校赛第一场 1006 Function(枚举)

这道题所有情况满足的情况下会构成一个环,我们很容易想到枚举环中的一个点,环中的其他点就都可以得出了。这道题是问一共有多少种所有情况都满足的情况。所以我们先预处理a里面的循环节,统计一下长度为i的循环节有几个。然后预处理b里面的循环节,同样统计长度为i的循环节有几个。最后枚举一下,假设a数组中有循环节长度为i,那么在b中枚举循环节为i的因子的。比如j为i的因子,那么此时就会多出j * num

2017-07-26 10:20:37 453

原创 CodeFroces 823B. Petya and Exam(构造题)

题目大意:先给出一个合法的字符串,里面的字符可以代替接下来的“?”。然后给出一个字符串,字符串里面有字母,有“?”,有至多一个“*”。?可用上面的代替,*可以由任意非上面的字符组成的字符串,可以是空字符串。给出n组查询,问是否合法。查询的总长度不超过1e5.解法:由于查询的总长度不超过1e5,所以直接一个一个对比即可。我们先对合法的字符进行预处理,做好标记。在接下来的?中,直接判断

2017-07-25 09:50:53 242

原创 POJ 3190 Stall Reservations(贪心)

http://poj.org/problem?id=3190做法:很明显就是贪心啦,将他们的区间从小到大排序,从小的开始枚举,然后尽量往里面塞东西。最后得到答案。代码如下:#include#include#includeusing namespace std;struct node { int s, e, id;}a[50005];bool cmp(node x, n

2017-07-24 20:53:17 149

原创 POJ 2376 Cleaning Shifts(贪心)

http://poj.org/problem?id=2376题意:有n头牛,t件衣服,每头牛可以洗某个区间的衣服,要保证所有衣服均被洗过一次,问最少需要几头牛。无解输出-1.解法:很容易想到贪心,直接将每头牛的起始位置和终止位置记录下来,排序,从前往后走。需要注意的细节,每次贪心完后取得一个最远的坐标Max,下次找在Max里面的应该是寻找那些满足起始位置小于等于Max+1的牛。比如1

2017-07-24 16:17:32 173

原创 CodeFroces 478C. Table Decorations(贪心)

http://codeforces.com/problemset/problem/478/C题目大意就是给出R,G,B三种颜色的balloon数目,现在每三个一组,要求同一组中三个颜色不能全相同。问能凑出的最多组合。解法:很明确一点,我们把他们排序。如果较少的两个加起来还没有第三个的一半多,那么我们会把前两个每次拿一个出来和第三个出两个来匹配,那么答案就是a[0]+a[1]反之,我们就

2017-07-24 14:24:22 338

原创 CodeFroces 195C. Try and Catch(阅读理解+猜题意+构造)

http://codeforces.com/problemset/problem/195/C哇做这题真是一口老血喷出来,看了半天不知道啥意思,最后猜了猜题意,然后代码中各种bug,我也不确定理解的题意是不是对的,xjb调试,最后竟然过了。。。一道简单傻逼题但是出的看不懂。。。题目大意:你有try和catch操作,每个catch操作保证前面有一次try和他相匹配。现在有一种异常的情况,是由t

2017-07-24 11:15:05 322

原创 POJ 3616 Milking Time(DP)

http://poj.org/problem?id=3616题意:给出一些牛开始产奶和结束产奶的时间还有他们能产出的价值,每时每刻只能有一头牛产奶而且相邻的产奶的两头牛必须经过R小时,问能获得的最大产奶价值是多少。解法:DP,我是直接暴力去找每头牛前面满足结束时间last.end 代码如下:#include#include#includeusing namespace std

2017-07-24 10:56:32 155

原创 POJ 2385 Apple Catching(DP)

http://poj.org/problem?id=2385题意:有两个苹果树,在t分钟内,每分钟内在两棵树中任意一棵会掉落一个苹果,你一开始在树1下,你每分钟可以在树1和树2之间来回,但是来回次数不能超过w次。问能捡到的最多的苹果数目是多少。解法:一道基础的dp题。类似于01背包。我写的时候百思不得其解,一直wa,后来才发现,a[i] == 1 && dp[i - 1][1] + 1这种

2017-07-22 20:28:57 183

原创 BZOJ 2730 [HNOI2012]矿场搭建 (割点)

一开始写这题,心想的就是贪心去写,但是bzoj上一直wa,心想能拿到一点分吧,就去洛谷找这题,交一发,发现0分。。。wa的一声就哭了然后看别人题解去了,原来是求割点的题,没写过(摔然后百度了一波模板题写了一法写的好辛苦。。。然后终于回到这题了。我的思路是:求出割点,你会发现割点根本不可以建救援点。所以把割点全部去掉,然后跑一边整个图看看有多少个联通块就好了。然后只有30分(但是这里

2017-07-21 16:28:32 237

原创 HDU 5943 Kingdom of Obsession(二分图)

http://acm.hdu.edu.cn/showproblem.php?pid=5943题意:你有n个数字,他们分别从s+1到s+n,将他们打乱,问是否可以整除1到n。解法:很明显,如果s+1到s+n有两个素数则无解。但是如果慢慢去求这个区间是否有两个素数也很费时间。百度一下发现,五亿以内最大的素数间隔好像是280多,那么两个素数就是600多吧。。。也就是n大于600就会有两个素数,如

2017-07-21 15:02:42 180

原创 HDU 5934 Bomb(强连通分量缩点)

http://acm.hdu.edu.cn/showproblem.php?pid=5934题意:给出一些炸弹,引爆每个炸弹有各自的花费ci,他们的坐标是爆炸半径都给出,如果该炸弹爆炸炸到某个炸弹的圆心,则另一个炸弹也会被引爆。问引爆所有炸弹的最小花费是多少。解法:很容易发现,这个爆炸是有向的,就像样例里面有的炸弹可以互相引爆,但是有的炸弹是单向引爆别的炸弹的。这里很容易想到强联通缩点,把

2017-07-21 14:52:39 264

原创 HDU 5938 Four Operations(枚举)

http://acm.hdu.edu.cn/showproblem.php?pid=5938题意,给出一串数字,在这串数字中按顺序插入+ - * /,问能得到最大的数字是多少。比如样例,1+2-3*4/5=1.解法:很明显大小为20的字符串,肯定要开long long。如果直接枚举四个位置复杂度就是20^4,会TLE。所以我把它拆开出来,我枚举+和-的位置,记录下若该位置为-时候能得到最大

2017-07-21 14:45:33 223

原创 HDU 5933 ArcSoft's Office Rearrangement(构造题)

http://acm.hdu.edu.cn/showproblem.php?pid=5933题意,给出n块价值为a的working blocks,现在要你把他们弄成k块相等的。你有两种操作,把相邻的两块合并,或者把一块拆分成任意价值的两块,问最小操作数是多少。直接构造即可。代码如下:#includeusing namespace std;typedef long long ll

2017-07-21 14:38:54 171

原创 POJ 2117 Electricity(割点应用的模板题)

http://poj.org/problem?id=2117题目大意,就是问删除某个点,然后求出最多的联通块数目由于第一次写割点所以根本不会,看着别人代码理解了好久。最后发现,3 0这种情况应该输出2的,必须要删点。就因为这个WA了好多发。代码如下:#include#include#include#includeusing namespace std;const int

2017-07-20 09:22:52 242

原创 HDU 2586 How far away ?(LCA模板题)

恰好最近做了强联通,用tarjan比较多,所以就上tarjan的模版来做这题。看到别人用tarjan求LCA,用到low和dfn两个数组,我们要明白,low是用来记录某个点的根,dfn是记录某个点能获取到最高的根是多少。用tarjan求LCA的时候只需要low即可代码如下:#includeusing namespace std; const int maxn = 40005;

2017-07-19 09:52:59 229

原创 UVA 208 Firetruck(DFS)

这竟然是一道Final题。题目大意,给出n条边,然后让你把1到一个指定的终点ep的所有可行路径输出出来,每个点最多只能经过一次。解法:DFS即可,但是紫书上面说这题裸搜是过不去的,会tle,要先判断一下1到ep是否连通,那我就用个并查集看看就好了。一开始还以为按照VJ上面这道题的PDF的输出那样输出,然后PE了,看了看好像题目只说了要输出路径而已,那么就正常输出好了。代码如下:#i

2017-07-19 08:38:08 247

原创 HDU 3873 Invade the Mars (dijkstra变形)

http://acm.hdu.edu.cn/showproblem.php?pid=3873这道题题意很简单,就是有的城市保护着某些城市,如果要入侵一个被保护的城市,要先入侵保护他的所有城市。问1到n的最短距离。解法,用优先队列dijkstra跑。要注意的是建图的地方。对于保护城市的建图,我们采用先读入li[i],然后读入li[i]保护其的城市u,把i放入G[u]中。跑dijkst

2017-07-15 21:45:54 415

原创 Code[vs] 1506传话(tarjan缩点)

http://codevs.cn/problem/1506/这道题就是问每个点是否存在于一个环里面,所以用tarjan跑一遍,然后检查他所在的强联通分量里面是否存在多于一个的变量数目。若变量数目大于1,输出T,否则输出F代码如下:#includeusing namespace std;int n, m;vector G[1005], com[1005];int dfn[10

2017-07-15 10:37:20 293

原创 CodeFroces 830A. Office Keys(二分)

http://codeforces.com/problemset/problem/830/A题目大意,给出n个人的位置给出k把钥匙位置,n个人要到某地拿到钥匙再去p上班。一把钥匙只能由一人拥有。问n个人上班的最少时间是多少。解法:先将a和b排序,直接二分答案,然后用n*k的复杂度,把n个人和k把钥匙枚举,并且不断贪心,一个人取到下一个人就不能取。总的复杂度是O(64*n*k)。为什么可

2017-07-15 09:25:06 418

原创 BZOJ 1179: [Apio2009]Atm(tarjan缩点+spfa)

http://www.lydsy.com/JudgeOnline/problem.php?id=1179首先分析数据大小,n,m由于他是个有向图,而且有可能存在环,那么很容易想到缩点。而且题目中也说明一个环是很具有意义的,可以走完这里面的atm拿到money并且出来到达其他环。所以我们的目标就是把环与环之间连起来然后跑最短路,找出一个能得到最多money的路径。代码如下:#incl

2017-07-15 08:38:14 288

原创 CodeFroces 831C. Jury Marks(STL的应用)

http://codeforces.com/problemset/problem/831/C题目大意:有k个评委,n条pol记得的分数。评委从前往后依次评分。pol记得一些评委评完分的分数,这些分数不一定是按照时间给出的。问参赛者初试分数有多少种可能。解法:我们想一种检验方式,要保证pol记得的分数全都满足。一开始我很笨的用了k²n的算法,一直tle。正解为,随便选一个分数,然后将他枚举k

2017-07-14 16:22:56 221

原创 CodeFroces 831B. Keyboard Layouts(构造题)

http://codeforces.com/problemset/problem/831/B题目大意:给出两个键盘,他们布局相同,只是他们对应位置的字母不一定相同。然后给出一段字符串,由第一个键盘打出,现在要求在和第一个键盘相同的键位上用第二个键盘打出一段字符串。解法:怎么搞都行。代码如下:#includeusing namespace std;int main() { ch

2017-07-14 16:16:23 346

原创 CodeFroces 831A. Unimodal Array(构造题)

http://codeforces.com/problemset/problem/831/A题目大意:给出一个序列,问他是否由前面上升,中间相同,后面下降的结构组成。解法:直接按照题目要求写一遍上升,保持不变,下降,看指针是否最后是否为n代码如下:#includeusing namespace std;int main() { int n, a[105]; cin >> n

2017-07-14 16:12:56 287

原创 BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊(分块)

http://www.lydsy.com/JudgeOnline/problem.php?id=2002学习分块的时候找到的一道比较模板的题目。一开始我都想不懂如何分块。后来看到别人的,是说,每个块里面的元素都记录下它需要几步才能离开这个块,并且到达的下一个坐标是多少。这样的话,对于第一个问题,给定一个坐标问多少步弹飞,最坏的运算量是走完全部分块,也就是sqrt(n)。对于第二个问

2017-07-14 16:06:26 222

原创 POJ 2135 Farm Tour(最小费用最大流模板题)

http://poj.org/problem?id=2135题意很简单,就是给出m条无向边,你要从1到n,然后从n回到1,要求走过的路不能再走,问这样走的最少时间是多少。一开始我很愚蠢的用正反网络流来跑,这样是错误的。因为这样就没有退流了。正解:设置一个超级源点0和一个超级汇点n+1,0到1的流量为2,花费为0,n+1到n的流量为2,花费为0.然后我们要求从0到n+1求最小费用,套板子

2017-07-13 20:09:58 386

空空如也

空空如也

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

TA关注的人

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