自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LOJ 6045. 「雅礼集训 2017 Day8」价(最大闭合子图)

解法:一眼看去,真的太像最大权闭合子图了。但是分析一下发现,这道题的药材是没有费用的,最重要的是,题目要求所用药和药材的数量要一样。这可真的是难倒我了。看了一发别人的解法才发现太妙了。对于网络流二十四题中的《太空飞行计划》,这是一道最大权闭合子图的经典题,这道题中启用一个方案获利x元,但是要花y元买设备。我们可以这样看,方案启动越多越好,先把钱拿了,这时候去买设备,如果买设备的费用大于所给的启

2017-10-26 19:56:07 800

原创 UVA 10480 Sabotage (输出最小割所用边)

题意:给出一个图,要分割开1和2,每条边都有一个花费而且是无向的,问用上了哪些边,输出。在今年多校赛的时候写过一道输出最小割所用边的数量,但是今天遇到这个输出用了哪些边我就懵逼了。前几天还写过一道二分图的题目,判断一条边是否是必须存在的边,即是否删除这条边二分图的最大匹配数就变了。所以想在这题也用枚举的方法,但是一直wa。。。自己举了举反例发现不对。看了一下题解,原来这么简单。。。跑完一次最大

2017-10-25 19:28:49 316

原创 HDU 3829 Cat VS Dog (反建法求最大独立集)

反建法求最大独立集一直都是二分图的一大套路。这题目分析的时候,有种选了C1就不能选D1这种感觉,于是把cat和dog放在两边,看是否可以构成二分图求解。但是仔细想想这题目,求的是最多的开心人数,用cat和dog建图并不能说明什么。于是我们想其他方法。我们要的是人数,那么干脆用小孩来建二分图。怎么构造好呢?其实到这里突然很直观的发现,小孩之间的关系?其实就是如果小孩1喜欢C1不喜欢D1,小孩2喜

2017-10-25 09:59:20 404

原创 POJ 3648 Wedding(2-SAT输出一组解)

题意:有新郎新娘举办婚礼,吃饭的时候大家坐在一长方形桌,桌子有两列,新娘坐一列上看对面一列,她定义以下事情会让她不开心:夫妻都在对面一列或有仇人在对面一列。问是否能安排出合理方案使得新娘开心。如果有,输出YES并且输出新娘这一列坐着的人,否则输出bad luck。解法:夫妻不能在同一列,所以夫妻要不在新娘这排要不不在新娘这排,用2-SAT可以很好满足这个条件。然后读入仇人的信息,标记好,用2-

2017-10-16 11:28:31 396

原创 HDU 3622 Bomb Game(二分 + 2-SAT)

点击打开链接题意:给出n对点,每对点只能选取一个。每个点都会以自己为中心进行爆炸且半径相同,问最大爆炸半径是多少。解法:两个之中选一个,可以考虑2-SAT求解。由于半径是要求的,所以二分半径,然后每次都建图用2-SAT判断看是否可行。此处2-SAT保留的是不能共存的边。代码如下:#include#include#include#include#include#incl

2017-10-15 09:09:26 295

原创 CodeFroces 873B. Balanced Substring(思维题)

点击打开链接题意:给出一个字符串,求其中满足0和1的个数相等的最长字符串的长度。解法:当时只能想到枚举区间然后直接用前缀和判定的方法,但是枚举区间复杂度明显不对。然后想到了二分,发现很多数据都挺对的,然后wa24。想了想发现,有可能4不满足但是6满足,故不存在单调性。。。最后看了一发题解。每位有一个值:前i个数字0的个数 - 前i个数字1的个数。如果有两个地方的值是相同的,那么显然

2017-10-14 21:12:17 331

原创 Vijos 1843 货车运输(最大生成树 + 树上倍增模板)

解法:首先想到肯定是尽量用边权大的边,所以直接用最大生成树建图即可。建完图之后,由于询问数很大,所以要想一个高效的求两点之间边权最小的边的办法。一开始想到树链剖分,感觉很麻烦,代码量巨大。想用LCA的ST表来维护,但是发现维护困难,因为是边而不是点。最后才知道要用树上倍增做。预处理出深度小的点到深度大的i点最小的边权是多少。先求出x和y的lca,然后直接求出x到lca, y到lca的最小边权。取最

2017-10-14 18:41:11 252

原创 CodeFroces NWERC 2015 E.Elementary Math(二分图)

题意:给出n对数字,可以在n对数字中间用+,-,*三种运算,要保证最后得到的答案不能有相同的。解法:考虑到n只有2500,数据量比较小,最多只会有7500种结果,所以可以构造二分图。左边是n个点代表n对数字,右边?个点,代表结果。左边n个数字都向着右边他所能得到的答案连一条边。如果有两对数字运算结果相同,那么他们同时连到这个点上面。看看最后最大匹配是否等于n就知道可不可行了。复杂度

2017-10-14 09:59:37 346

原创 POJ 3207 Ikki's Story IV - Panda's Trick (2-SAT)

传送门题意:有一个圆,圆周上有n个顺序的点,然后有m组边,这些边的两个点必须连起来,圆有两个面,你可以在正面连接他们,也可以在反面连接他们。问是否可以使得这m条线不相交。解法:因为这些点是按照顺序排序的,在同一个面的情况下,有两对线分别是1 5,2 6,那么就会发现他们肯定是相交的,其实就是一个规律,a[i] 2-SAT连的是必须共存的点。代码如下:#include#in

2017-10-11 21:45:52 348

原创 Uvalive 7037 The Problem Needs 3D Arrays (最大密集子图)

题意:给出一些数字,找出逆序对。令 逆序对的个数/数字个数 最大。解法:我们先将逆序对用线标出来,然后就会发现这就是 边的数量 / 点的数量。这就是图的密度的定义。找最大密度则是用最大密集子图。求最大密集子图的方法见《最小割模型在信息学竞赛中的应用》。代码如下:#include#include#include#includeconst int maxn = 110;const

2017-10-07 11:00:31 408

原创 Ural 1277 Cops and Thieves(最小点割集/最小割)

题意:一个团伙去偷一个美术馆,警察决定在路上堵截。警察人数为k,不能在贼窝和美术馆驻扎,只能在图上其他点驻扎,而且驻扎有一个最小人数要求,问警察能否完成任务。解法:又是最小点割集题目,每个点拆点即可,边权为给出的r[i],然后跑一遍最大流求最小割,比较一下是否小于等于k即可。坑点,如果美术馆和贼窝是同一伙人。。。代码如下:#include#include#include#in

2017-10-06 16:35:30 516

原创 POJ 1815 Friendship (最小点割集/最小割)

题意:给出每个朋友之间的联系表,如果a联系b,b联系c,那么a是可以联系c的。问最少要去掉多少个朋友才能使得s无法和t联系上。如果有一样的方案输出字典序最小的。解法:很像最小割有木有?但是这次不是边而是点,那么我们拆点不就好了。跑一次最大流发现一开始流量为f,那么我们从1到n枚举点,试着把第i个点删去看看流量是否有变化。如果有变化,说明第i个点在最小点割集里面。记录一下这个点,并且以后不再进入

2017-10-06 15:37:41 287

原创 南阳理工OJ 石子归并(经典区间DP)

点击打开链接解法:一开始我愚蠢地认为一个一个并就可以了,但是样例都过不去。发现要区间区间地合并才对。那么转移方程就是dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + cnt[j] - cnt[i - 1]);dp[i][j]表示i到j合并起来的最小花费。cnt[i]是前i个的石子数目。代码如下:#include#include

2017-10-06 11:59:30 225

原创 CodeFroces Round 438C. Qualification Rounds(思维题)

题意:给出n个题目,k个队伍是否刷过这题的情况表。现在要举办一场比赛,要求用的题目,不能有队伍已经刷过一半以上。问是否存在解。解法:当时瞎写发现,好像只要选两个就可以了,然后就开始猜结论来写。由于k只有4,所以说最多只有1代码如下:#include#include#include#include#include#include#include#include#inclu

2017-10-06 11:05:06 379

原创 CodeFroces Round 438 B.Race Against Time(模拟)

题意:给出时间,那么钟上的三个指针就确定位置,现在要从t1到t2,中途不可以穿越指针,问是否可行。解法:当时想的是既然是小时之间的,那么我只需要把小时之间的给标记了即可。但是这样写会有反例。所以应该把这个钟扩大12*60倍。然后对应的标记上每个指针的位置,然后正反for一遍即可。代码如下:#include#include#include#include#include#inc

2017-10-06 10:59:42 246

原创 POJ 3280 Cheapest Palindrome(区间DP)

题意:给出一个字符串,你要把他凑成回文串,问最小花费。解法:一开始以为只能在两边加减字母,然后一直wa。后来拿了别人的程序发现可以在中间加字母的。dp一下,dp[i][j]表示把i - j的字符串凑成回文串的最小花费。转移方程:如果i和j的字符相同,那么直接就是他们包围的字符串的最小花费。dp[i][j] = dp[i - 1][j - 1].  如果不相同,那么就取两边变化的最小

2017-10-05 11:26:28 239

原创 CodeFroces gym 100781 A.Adjoin the Networks(贪心)

题意:给出一张图,存在多棵树,你要把这些树连起来,形成一棵树,令这棵树的直径最小。解法:很容易想到贪心一下就行了,找出直径最长的树的根作为连起来后的树的根,其他树的根连到这个根即可。然后求一下树的直径。难点在于怎么规定一个树的根,使得这棵树的深度最小。下面写的是类似于LCA两个端点向上走的方法,有dalao告诉我可以树形dp+dfs找。这都是可以的。但是注意:树的重心并不一定是这个最优的根。

2017-10-04 12:20:15 279

原创 UVA 11584 Partitioning by Palindromes(DP)

题意:给出一个由小写字母组成的字符串,求它最少由多少个回文串组成。解法:dp[i]代表前i个字符组成的字符串最少能由多少个回文串组成。并且枚举j-i(j代码如下:#include#include#include#include#include#include#include#include#include#include#include#includeusing

2017-10-04 10:02:54 159

原创 HDU 4280 Island Transport(最大流)

题意:给定一些小岛的坐标,要求从最东边到最西边。问最大流量是多少。解法:裸的最大流。本题确实卡了一下dinic,我用普通的读入挂跑了9s,用fread跑了7400ms。但是看了看别人isap啥都没加跑了5s。有的人用dinic超时是因为板子问题。有的板子里面bfs是从s开始到t,然后dfs也是s到t,这样是不够高效的。因为如果一个图从s开始有很多无用的边根本就到达不了t那种,就会使得d

2017-10-02 20:49:22 270

原创 POJ 2699 The Maximum Number of Strong Kings(枚举/二分+最大流)

岛娘网络流建模汇总里面的一道题。题意:每个玩家都会和另外所有玩家pk,给出每个玩家的分数(赢得pk则+1分),确保所有分数加起来是完全图的边数。定义strong king为:赢得了所有比自己分数高的玩家(最高分的玩家本身就是strong king)。问最多能有多少个strong king。解法:这种比赛的题目很常见的想法就是,把每个比赛当成一个点,然后这个点去连接另外两个玩家。那么建图就很

2017-10-02 18:49:11 272

原创 UVA 11400 Lighting System Design (DP)

题意:给出一些灯泡,每个灯泡有四个参数,电压,所需电源价格,当前灯泡价格,需要购买的数量。还有一些条件,为了省钱,低电压的灯泡可以替换成高电压的灯泡,每种灯泡都只能对应唯一的电源,不同的灯泡之间是不能互相使用电源的。解法:题目还是相对简单的,首先我们用前缀和得到前n种灯泡的数量,且显然,如果一种灯泡要转为更高电压的灯泡,肯定是全部一起转的。我们不断枚举区间,代表这个区间的灯泡都用第i种灯泡。然

2017-10-02 16:33:19 171

原创 SPOJ Smart Network Administrator(二分+网络流)

岛娘网络流合集上的题目。题意:给出一些街道,一开始只有编号1的家庭有网络,其他家庭要想有网络都要从1号家庭拉网线(且只能从1号家庭拉)。现在要求k个家庭(已给出)有网络,而且还有一个规定就是每个街道的网线颜色必须不一样。问最少要多少种颜色的网线。解法:我们直接构图可以想到,直接用一个起点s到k个家庭连接一个流量为1的边,然后编号为1的家庭作为汇点t。给出的每条道路,如果每条道路流量为INF

2017-10-02 14:04:47 224

原创 POJ 1741 Tree (树分治模板题)

点击打开链接题意:给出一棵树,求出两点之间距离小于等于k的点对数目。解法:树的考查十分常见,原因就在于树有一般图不具备的约束条件。如果这是一个一般图,我们想的是,做一次LCA,然后暴力两个点,看是否符合,复杂度达到O(n²),对于题目有1e4个点而且还是多组输入显然是无法接受的。这时候我们就要想到树分治的思想。求两个点的距离是否小于等于k,可以分为两种情况。我们假定一个

2017-10-01 16:48:14 312

原创 POJ 3107 Godfather (树的重心模板题)

点击打开链接题意:给出一棵树,求出所有树的重心,并且按编号从小到大输出。直接套模板即可。代码如下:#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn

2017-10-01 10:24:41 507

原创 POJ 1655 Balancing Act (树的重心)

点击打开链接题意:给出一棵树,求树的重心的编号,并且输出最大子树的节点数目。如果有最大节点数目相同的情况,选取重心编号较小的输出。树的重心:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。比如样例,删除节点1,那么就会生成三棵子树,每个子树的节点数目都是2,这就是最平衡的情况了。如果多增加一条6 - 8的边,那么依然是

2017-10-01 10:13:11 157

空空如也

空空如也

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

TA关注的人

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