NKOJ 2017信息学夏令营第1场(图论专项练习)

A题:

网络流最大流模型。

用 [1, m] 表示各个国家,[m+1, m+n] 表示各个餐桌。

从 s 向 i 连边,容量为第 i 个国家的代表数;

从 m+i 向 t 连边,容量为第 i 张餐桌的容量;

从 i 向 j + m 连边,容量为 1 ,这样就限制了每个国家在一个餐桌上至多有一个代表。

找到最大流,表示满足条件的代表数量最大值,再与提前计算出的代表总数量比较,

两者如果相等说明存在合理方案,输出 1 ,否则输出 0.

B题:

二分图的最大匹配模型。

我在比赛的时候考虑了费用流,在“如何避免顾客合资买鞋”“如何有钱人买一大堆鞋”

等问题上纠结了很长的时间,还考虑过拆点等……这应该算是题目容易误导人的地

方吧。当然,费用流是不可取的。

将鞋和顾客分别作为二分图的一个点集,从每双鞋向可以购买它的顾客对应的点连边。

然后是一个贪心过程,将 n 双鞋按照价格降序排列,以排序后的点为起点,依次找增

广路,每次 i 号鞋成功找到增广路则 ans += price[i] ,最后输出 ans。

用二分图做这道题就满足了“一双鞋只对应一位顾客”这个条件。

C题:

二分图最大匹配模型。

注意到主对角线上的点满足任意两点行号列号均不同的性质。因此如果原图中有任意

两个点同行或同列,则不可能通过行列交换得到符合条件的图(行列交换后两点仍在

同行或同列)。问题简化为:判断是否有两点同行或同列。将黑色棋子行号作为二分

图的一个点集,列号作为另一个,每颗黑色棋子的行号对应点和列号对应点相连。同

一个行号对应点若有多条连边,表示该行有多个黑棋,列号对应点也是这样。执行二

分图最大匹配,若匹配数量等于 n ,表明没有两点同行或同列,输出 Yes ,否则 输

出 No.

D题:

最小割等于最大流。

建一个网络流模型。

从 s 向 i 连边,容量为第 i 个实验的赞助费;

从 i 向 m+j 连边,容量为 inf ,j 为 i 号实验对应的仪器编号;

从 j 向 t 连边,容量为 j 号仪器的费用。

1 <= i <= m; 1<= j <= n;

最小割的实际意义是选用仪器的费用和最小,找出最小割等于最大流 flow 。

提前计算赞助费用和 sum ,则 sum-flow 就是答案。

另外这道题给出实验对应仪器编号时是以换行符结尾的,不能直接读,我用了类似

输入优化的手写输入(getchar() 函数)来解决这个问题。

时间: 2024-08-02 21:25:11

NKOJ 2017信息学夏令营第1场(图论专项练习)的相关文章

2015山东信息学夏令营 Day4T3 生产

2015山东信息学夏令营 Day4T3 生产 [题目描述] 工厂为了生产一种复杂的产品,给各个生产部门制定了详细的生产计划.那么,就经常会有生产部门要把产品送到另一个生产部门作为原料.这是一个注重产品质量的工厂,所以每当有产品要从A部门运到B部门时,都要先从A部门送到质量检验处,检验合格后再从质量检验处运到B部门. 有些部门之间有传送带连接,厂长想知道每次将产品从一个部门运送到另一个部门最少需要多长时间. [输入格式] 第一行两个整数n.m,n表示部门数量,m表示传送带数量.出于方便,1号部门是

2017 百度杯丶二月场第一周WP

1.祸起北荒 题目: 亿万年前 天子之子华夜,被父神之神末渊上神告知六荒十海之北荒西二旗即将发生一场"百度杯"的诸神之战 他作为天族的太子必须参与到此次诸神之战定六荒十海 华夜临危受命,马上带着火凤凰飞行到北荒"西二旗" 却没想到这六荒之首北荒西二旗果然名不虚传,这是一个位于六层虚数空间上的时空大陆 他需要闯过每一层虚数空间,方能到达虚数空间 第一层虚数空间是需要与一个上古神器"i春秋"进行智能比拼,获取开启第一层虚数空间的flag 启动法诀:

2017清北学堂集训笔记——图论

我们进入一个新的模块——图论! emmmmm这个专题更出来可能有点慢别介意,原因是要划的图和要给代码加的注释比较多,更重要的就是...这几个晚上我在追剧!!我们的少年时代超级超级超级好看,剧情很燃啊!!咳咳,好吧下面回归正题. 一.图的存储: 1.邻接矩阵: 假设有n个节点,建立一个n×n的矩阵,第i号节点能到达第j号节点就将[i][j]标记为1(有权值标记为权值), 样例如下图: 1 /*无向图,无权值*/ 2 int a[MAXN][MAXN];//邻接矩阵 3 int x,y;//两座城市

北大信息学夏令营 游记

这是我第二次来北大,上一次是去人大参加APIO,顺便逛了下北大.感觉北京的 雾霾也没有像传说中面对面看不清脸那么夸张.印象中北大应该是环境优美充满文艺气息的圣地,但是这次没有去未名湖那边,然后才发现原来北大好破旧,感觉像个建筑工地,到处在盖楼,现代新式建筑和旧房子交错,还有杂七杂八的小吃店.有同学提出了疑问,辅导员说我们应该感到高兴,盖楼是因为要扩招,扩招就有更多的机会来北大啦.夏令营期间,我们的活动场地主要是在寝室 餐厅 和教室,仅仅是北大小小的一角,但是我已经分不清方向了...迷路了好几次,

hdu 6088 Rikka with Rock-paper-scissors (2017 多校第五场 1004) 【组合数学 + 数论 + 模意义下的FFT】

题目链接 首先利用组合数学知识,枚举两人的总胜场数容易得到 这还不是卷积的形式,直接搞的话复杂度大概是O(n^2)的,肯定会TLE.但似乎和卷积有点像?想半天没想出来..多谢Q巨提醒,才知道可以用下面这个公式进行转化 最后,化得的公式为 另外注意,上式右边是一个卷积的形式,但是,所得和的第一项是不需要加上的(不过图中公式没有体现).结合实际意义大概就是,i==0&&j==0时,gcd(i,j)不存在约数d,虽然0可以被任意正整数整除 & 第一项不为0 #include<bit

2017多校第8场 HDU 6143 Killer Names 容斥,组合计数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6143 题意:m种颜色需要为两段长度为n的格子染色,且这两段之间不能出现相同的颜色,问总共有多少种情况. 解法:枚举要为这两段分配的颜色数目分别为 i,j ,则在第一段总共有 C(m,i) 种选取方案,在第二段总共有 C(m?i,j) 种选取方案.而在每段内部,我们设 F(n,x) 为长度为 n 的格子使用 x 种颜色(等于 x )染色的方案数.则根据容斥原理 F(n,x)=x^n?C(x,1)*(x

2017 多校赛 第二场

1003.Maximum Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 0    Accepted Submission(s): 0 Problem Description Steph is extremely obsessed with “sequence problems” that are usually see

2017省夏令营Day7 【快速幂,筛法,矩阵快速幂,线段树】

题解:首先,我们可以得到一个规律:经过2次变换后,a和b的值都分别乘2了,所以只要用快速幂就能过啦,但是,要特判n为0的情况. 代码如下: 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #define Mod 1000000007 5 using namespace std; 6 long long a,b,n,ans1,ans2; 7 long long power(long long x)

2017省夏令营Day6 【dp】

题解:区间dp,f[i][j]表示区间[i,j]的狼全部消灭的最小代价,设k为i.j间任意一点(i<=k<=j),且第k只狼被最后消灭,显然,区间总代价即可被我们划分成[i,k-1]和[k+1,j]两部分,我们可以假设他们已知,于是求得两区间代价和再加上消灭第k只狼的代价就能求得区间[i,j]的总代价. 状态转移方程:f[i][j]=f[i][k-1]+f[k+1][i]+a[k]+b[i-1]+b[j+1]. PS:注意初始化时i要从0开始枚举,且若j<i时f值为0. 代码如下: 1