[网络流24题-2]cogs396魔术球问题
来源:互联网 发布:上海迅销网络招聘真假 编辑:程序博客网 时间:2024/05/24 06:48
至于那个贪心的证明我是没整出来的。。。看了黑书,可能是我没有认真看吧。
最小路径点覆盖:用最少的边去覆盖尽可能多的点(全部)。
黑书上介绍了一个求最小路径点覆盖的方法,很值得借鉴,那就是每个点
为什么呢?因为假定原图每条边只对应一个点,那么
具体到这个题,就是把两个和为完全平方数的两球连一条边,枚举,数据比较小,能过。而且我并不觉得设一个上界和下界去二分能提升多大的速度,所以直接用
唯一注意的是,上一次枚举完的边还可以用的 要加的边只是所有点到多的点还要加的边。然后这样的话跑cogs的数据足够。。。。
然后还是要用匈牙利算法求最大匹配;judge函数用来判断是否和为平方数。
代码
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <vector>#include <queue>#include <cmath>//ACusing namespace std;const int maxn=10000;vector<int > g[maxn];void addedge(int from,int to){ g[from].push_back(to); g[to].push_back(from);}int match[maxn];bool book[maxn];int n;bool judge(int n){ double nn=sqrt(n); if((int)n/nn==nn) { return true; } return false;}bool dfs(int v){ for(unsigned i=0;i<g[v].size();i++) { int u=g[v][i]; if(!book[u]) { book[u]=true; if(match[u]==0 || dfs(match[u])) { match[u]=v; match[v]=u; return true; } } } return false;}bool cal(int res){ for(int i=1;i<=res-1;i++) { if(judge(i+res)) { addedge(i,res+2000); } } int ans=0; for(int i=1;i<=res;i++) { if(match[i]==0) { memset(book,0,sizeof(book)); if(dfs(i)) { ans++; } } } return (res-ans)<=n;}int main(){ //freopen("balla.in","r",stdin); //freopen("balla.out","w",stdout); scanf("%d",&n); int ans=1; while(ans++) { memset(book,0,sizeof(book)); memset(match,0,sizeof(match)); if(!cal(ans)) { break; } } printf("%d\n",ans-1); return 0;}
0 0
- [网络流24题-2]cogs396魔术球问题
- cogs396 [网络流24题]魔术球问题简化版
- [网络流24题][COGS396]魔术球问题简化版(最小割)
- 【网络流24题】魔术球问题
- 【网络流24题】魔术球问题
- 【网络流24题】魔术球问题
- [网络流24题]魔术球问题
- 魔术球问题(网络24题,三)
- 线性规划与网络流24题 04魔术球问题
- 网络流与线性规划24题04魔术球问题
- [网络流24题 #4]魔术球问题
- [网络流24题]魔术球问题(简化版)
- kyeremal-网络流24题T4-魔术球问题
- 魔术球问题[网络流24题之4]
- 网络流24题之魔术球问题
- 网络流24题4 魔术球问题
- 网络流24题 魔术球问题(弱化?)(二分图解)
- 线性规划与网络流24题之 魔术球问题
- 基础架构-存储基础原理(1)
- 七种CSS方式让一个容器水平垂直居中
- iis图片防盗链 seo优化
- 传智播客韩忠康Mysql视频教程
- 学习淘淘商城第十二课(发布dubbo服务)
- [网络流24题-2]cogs396魔术球问题
- ADV-62算法提高 夺宝奇兵
- static静态变量的理解
- 大神求救——Volley错误
- 文件管理
- SQL Server2012+2008+2005+2000 数据库入门从基础到高级开发视频...
- 能量球
- Golang Http Middleware 判断 增加cookie
- 错误Error building SqlSession. ### The error may exist in mybatis/mapping/NoteBookUserMapper.xml