bzoj 1562: [NOI2009]变换序列 匈牙利算法
来源:互联网 发布:网络文化节 编辑:程序博客网 时间:2024/06/11 14:29
题意
N≤10000
分析
一个比较显然的二分图匹配模型。一开始想的dinic,但如果要构造字典序最小的话,需要O(n^2)的复杂度。于是就被逼着去又学了一波匈牙利算法。
要字典序最小的话,可以在连边的时候,把边按照终点排序,这样的话每次都是优先找最小的那条边增广。然后我们只要从后往前找增广路,就可以保证字典序最小了。正确性的话自己yy一下即可。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int N=10005;int n,last[N],pre[N],ans[N],cnt;bool vis[N];struct edge{int to,next;}e[N*2];int read(){ int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}void addedge(int u,int v){ e[++cnt].to=v;e[cnt].next=last[u];last[u]=cnt;}bool find(int x){ for (int i=last[x];i;i=e[i].next) if (!vis[e[i].to]) { vis[e[i].to]=1; if (!pre[e[i].to]||find(pre[e[i].to])) { pre[e[i].to]=x; return 1; } } return 0;}int main(){ n=read(); for (int i=0;i<n;i++) { int d=read(),x=(i-d+n)%n,y=(i+d)%n; if (x<y) swap(x,y); addedge(i+1,x+1);addedge(i+1,y+1); } for (int i=n;i>=1;i--) { for (int j=1;j<=n;j++) vis[j]=0; if (!find(i)) { puts("No Answer"); return 0; } } for (int i=1;i<=n;i++) ans[pre[i]]=i; for (int i=1;i<n;i++) printf("%d ",ans[i]-1); printf("%d",ans[n]-1); return 0;}
阅读全文
0 0
- BZOJ 1562([NOI2009]变换序列-匈牙利算法)
- bzoj 1562: [NOI2009]变换序列 匈牙利算法
- BZOJ 1562: [NOI2009]变换序列 【二分图匹配】【匈牙利】
- 【bzoj1562】【noi2009】【变换序列】【匈牙利算法】
- bzoj 1562: [NOI2009]变换序列
- bzoj 1562: [NOI2009]变换序列
- 【bzoj1562】【[NOI2009]变换序列】匈牙利算法的性质利用
- BZOJ1562: [NOI2009]变换序列(匈牙利算法,字典序相关)
- BZOJ 1562 [NOI2009]变换序列 (二分图匹配)
- [二分图匹配] [NOI2009] BZOJ 1562——序列变换
- [BZOJ]1562: [NOI2009]变换序列 二分图匹配
- bzoj 1562: [NOI2009]变换序列 二分图最大匹配
- bzoj1562 NOI2009变换序列 二分图匹配(匈牙利)
- BZOJ 1562 浅谈匈牙利算法性质挖掘以【变换序列】即最小字典序构成
- [NOI2009]变换序列
- [BZOJ1562][NOI2009]变换序列
- bzoj1562 [NOI2009]变换序列
- bzoj1562[NOI2009] 变换序列
- 什么是协调会议软件?
- Git笔记
- hadoop基本命令
- 敏捷过程和极限编程(XP)
- 虚拟机中安装Ubuntu16.04以及VMwareTools
- bzoj 1562: [NOI2009]变换序列 匈牙利算法
- bzoj 2282: [Sdoi2011]消防
- JEESZ分布式框架安装和使用
- Intent的Bundle传值
- ucos2裁剪
- 微信小程序页面传值详解
- 初识Java线程池
- 本网站response.sendRedirect跳转到别人网站的时候,会被本网站的Filter拦截
- html5标签