codeforces 808F Card Game(二分+最大点权独立集)
题目链接
题解:
首先考虑到两奇数或两偶数之和必不为质数,所以可以将卡牌分为两类,不过注意一个特例是两个1,他们的和为质数,所以每次只能取一个,根据贪心,必然取最大的。
显而易见,此时根据质数关系建边,便可得到二分图,每个点都有点权,有相连边的两点不能选,也就是需要求一个最大点权独立集。
最大点权独立集=总和-最小点覆盖
建完超级源汇点以后
最小点覆盖=最小割=最大流
无脑dinic即可
由于有等级的限制,所以可以考虑二分这个等级,每次建图跑
代码如下:
#include<bits/stdc++.h&
原创
2020-08-10 11:57:21 ·
136 阅读 ·
0 评论