自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (最大权闭合子图)poweroj2909: 黑暗料理

poweroj2909: 黑暗料理思路:我们要选择做一道菜,就要选择其原材料。这可以转换为最大权闭合子图的问题。什么是闭合子图?闭合子图在有向无环图中,对于其中任意点,从它出发能够达到的所有点都在用一个子图之中。为什么这么转换?因为我们要选择一道菜,它的食材也必须选择,如果我们把菜连向它需要的所有的食材,那么就可以得到,选一道菜的同时,它所需的食材的点也必须在这个子图之中。求法就是,对于通过源点SSS向所有点权为正的点建边,权值为点权;权值为负的点向汇点TTT建边,权值为点权的绝对值;按照题目需要

2020-10-30 19:00:40 197

原创 (最小割)洛谷P2598[ZJOI2009]狼和羊的故事

洛谷P2598[ZJOI2009]狼和羊的故事思路:很有意思的一题,没有想到怎么建图。源点向羊连一条容量为infinfinf的边。狼向汇点连一条容量为infinfinf的边。每个点向四周的格子连一条容量为111的边。考虑infinfinf的边不可割,所以能割的就是两个格子之间的边,相当于在两个格子之间修了篱笆。至于0的归属问题,因为空地会和两边都有连边,肯定会被割去一条,然后归属到羊或者狼的点集。代码:#include<bits/stdc++.h>#define pii p

2020-10-30 14:05:46 137

原创 (二分图)洛谷P2526[SHOI2001]小狗散步

洛谷P2526[SHOI2001]小狗散步思路:题意可以转换为,选择一段路径去相遇点或者喜欢的景点。这个点就被分成了两类,自然想到了二分图,将相遇点和可以到达的景点连边,求出二分图的最大匹配,再加上nnn就是答案一。求经过的点,只要在残余网络上判断一个由相遇点到景点的边权是否为000。代码:#include<bits/stdc++.h>#define pii pair<int,int>#define int long long#define cl(x,y) memset

2020-10-30 12:45:34 178

原创 (最小点覆盖)洛谷P2172[国家集训队]部落战争

洛谷P2172[国家集训队]部落战争思路:可以将问题抽象为每个点(.)都经过且只经过一次。就是最小路径覆盖,最小路径覆盖数=点数−最大匹配数。那么将每个点拆成两个点,然后跑二分图匹配就行了。代码:#include<bits/stdc++.h>#define pii pair<int,int>#define ll long long#define cl(x,y) memset(x,y,sizeof(x))#define ct cerr<<"Time elap

2020-10-30 12:10:38 147

原创 (最小割)洛谷P2057[SHOI2007]善意的投票 / [JLOI2010]冠军调查

洛谷P2057[SHOI2007]善意的投票 / [JLOI2010]冠军调查思路:选择为睡觉或者不睡觉,可以作为一种互斥的关系,显然可以将这两类人分成两个点集,一种和源点SSS连,一种和汇点TTT连。接下来就是,对于两个好友(i,j)(i,j)(i,j)之间,要连一条双向边。因为好友两人的关系是相对的,需要iii符合jjj的意愿并且jjj符合iii的意愿。试想,如果(i,j)(i,j)(i,j)之间只是单向边,那么只表示iii要符合jjj的意愿,jjj却不一定要符合iii的意愿。以上边权值全部为111

2020-10-30 00:42:17 120

原创 (最小割求最小割集)poweroj2883病毒侵染

poweroj2883病毒侵染思路:寻找割掉kkk条边,使∏i=1kwi\prod\limits_{i=1}^{k}w_ii=1∏k​wi​最小,我们可以取对数,即求∑i=1klog⁡wi\sum\limits_{i=1}^{k}\log{w_i}i=1∑k​logwi​最小,这样就转换成了最小割。但是我们计算答案要寻找割掉的边然后将权值累乘。可以想到,最小割是指求出权值和最小的边集,使得源点和汇点S,TS,TS,T不连通。再考虑到,如果一条边它是割掉的边,那么它的流量一定为000(反之不成立)。那么

2020-10-30 00:21:25 292

原创 (网络流)洛谷P1344[USACO4.4]追查坏牛奶Pollutant Control

洛谷P1344[USACO4.4]追查坏牛奶Pollutant Control思路:题目显然是最小割,但是要求最小割割的边数。可以将边权值设为w∗(m+1)+1w*(m+1)+1w∗(m+1)+1,然后跑最大流得到答案ansansans,最小割就是ans/(m+1)ans/(m+1)ans/(m+1),割的边数就是ans%(m+1)ans\%(m+1)ans%(m+1)。代码:#include<bits/stdc++.h>#define pii pair<int,int>

2020-10-29 23:01:21 214 1

原创 (二分图)CF387D. George and Interesting Graph

CF387D. George and Interesting Graph题意:给你一个有向图(不含重边),你可以加边删边,求最小操作次数后得到一个“有趣图”。“有趣图”定义为:存在一个中心结点vvv,和其他每个结点都有双向边,且和自身有自环。除了中心结点之外,其他结点的入度和出度都为222。思路:一道很有意思的题目。分析一下要求的图,我们可以发现等同于如下要求:中心点有2(n−1)+12(n-1)+12(n−1)+1条边,由于无重边,所以只能加边。每个点除去和中心点的双向边,需要入

2020-10-28 00:58:13 217

原创 (二分图+最大流)洛谷P5030长脖子鹿放置

洛谷P5030长脖子鹿放置思路:通过一个点和(±1,±3),(±3,±1)(\pm1,\pm3),(\pm3,\pm1)(±1,±3),(±3,±1)可以互相攻击,等于将这些点连边,求最大独立集。可以得到这是一个二分图。显然不能按照之前的行和列的和的奇偶性连边,但是我们可以发现按照行/列的奇偶想同的点肯定不会相互攻击,所以可以按照行/列奇偶性进行连边。注意他禁止放置的点可能重复。代码:#include<bits/stdc++.h>#define pii pair<int,int&

2020-10-27 16:35:45 106

原创 (二分图+最大流)洛谷P2774方格取数问题

洛谷P2774方格取数问题思路:我们选取一格的时候,限制的是不能选取周围的四格。也就是说,我们可以考虑假设全选,然后删去不能选的格数的权值和的最小值,就可以得到能够选择所得到的最大值。我们可以将点染成黑白两种颜色,对于点(i,j)(i,j)(i,j),如果(i+j)%2=1(i+j)\%2=1(i+j)%2=1就为黑色,否则为白色。这样选择一个点的时候,就会对四周不同颜色的点造成影响。这种二选一就容易想到是二分图,是二分图带权最大独立集。二分图最大独立集=所有的点权-最小点覆盖数,又最小点覆盖=最大匹

2020-10-26 23:50:59 243

原创 (树形dp)洛谷P3931 SAC E#1 - 一道难题 Tree

洛谷P3931 SAC E#1 - 一道难题 Tree思路:树形dp。设dp[i]dp[i]dp[i]表示割掉根节点为iii的子树的叶节点的最小权值和。显然,我们要使根和一个根结点为iii的子树的叶节点不连通,则要么割掉iii和父亲结点的那条边,要么割掉iii和所有的儿子结点的权值和。即:dp[i]=min(e[fa−>i],dp[son1]+dp[son2]+⋯+dp[sonn])dp[i]=min(e[fa->i],dp[son_1]+dp[son_2]+\cdots+dp[son

2020-10-23 22:20:46 121

原创 (二分+最大流)洛谷P2857[USACO06FEB]Steady Cow Assignment G

洛谷P2857[USACO06FEB]Steady Cow Assignment G思路:很巧妙的一道题。很容易想到,将SSS向牛iii连一条流量为111的边,将牛棚jjj向TTT连一条流量为BjB_jBj​的边。但是iii和jjj之间怎么连边才能使所要求的对于牛棚喜爱度的差值最小?我们假设差值为xxx,随着xxx的增大,牛棚自然就越容易分配。或者说,如果一个xxx不能满足分配的要求的话,那么比这个xxx更小的数就更不可能满足,因为随着xxx的减少,iii与jjj之间的连边就会减少。我们就可以二分

2020-10-22 04:39:49 145

原创 (二分图)洛谷P2071座位安排

洛谷P2071座位安排思路:网络流难在建图上面。这题(应该也可以,我没尝试过)用二分图匹配去跑。可以拆点,将一排的座位拆成两个点,一个iii,一个i+ni+ni+n,然后匈牙利算法跑。也可以用网络流跑最大流,将SSS向每个人iii连一条流量为111的边,再将每个人向他想坐的位置连一条流量为111的边,至于每排座位可以坐两个人,可以将每排座位向TTT连一条流量为222的边。代码:#include<bits/stdc++.h>#define pii pair<int,int&gt

2020-10-21 23:44:08 171

原创 (最小割)洛谷P1361 小M的作物

洛谷P1361 小M的作物思路:这是一个两者取一的模型,将点集一分为二。最小割在数值上等同于最大流。割去权值和最小的边,使图分成两部分,割下来的边权值和为最小割。对于此题,先不考虑种在一起的情况。对于种在A,BA,BA,B两地分别能获得的ai,bia_i,b_iai​,bi​的收益,我们可以考虑从SSS向iii建一条边,权值为aia_iai​;从iii向TTT建一条边,权值为bib_ibi​。那么种在一起获得额外收益可以建虚点j1,j2j_1,j_2j1​,j2​,由SSS向j1j_1j1​连边,

2020-10-21 23:04:48 194

原创 (贪心)CF1428E. Carrots for Rabbits

CF1428E. Carrots for Rabbits题意:给你nnn个正整数,分成kkk个

2020-10-19 23:20:11 295

原创 欧拉回路/通路

定义:如果图G中所有边一次仅且一次行遍所有顶点的通路称作欧拉通路。如果图G中所有边一次仅且一次行遍所有顶点的回路称作欧拉回路。简而言之就是一笔画的游戏。判断:前提,图联通。欧拉通路:有向图:有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。无向图:只有两个顶点是奇数度,其余都是偶数度的。欧拉回路:有向图:所有的顶点出度=入度。无向图:所有顶点都是偶数度。判断方法:并查集判断是否连通,度数的判断。无向图欧拉回路(HDU1878):#include<bits

2020-10-13 20:23:19 214

空空如也

空空如也

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

TA关注的人

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