[二分图匹配] [NOI2009] BZOJ 1562——序列变换
来源:互联网 发布:缤特力升级软件 编辑:程序博客网 时间:2024/06/05 18:17
题目梗概
对于N个整数0~N-1,对于每个数i,求字典序最小序列Ti,满足Ti都是0~N-1不重复的数,且
解题思路
题目对最后的答案有一个限制条件,显然满足这种条件的情况只有两种:
那么对于每个
现在考虑使解的字典序最小。
只要倒着寻找增广路,寻找时先走编号较小的边就可以了。
仔细思考匈牙利算法的操作方式不难发现正确性显然。
Ps:BZOJ评测有点坑啊,多余换行符和空格会PE。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=20005;int n,nxt[maxn],son[maxn],lnk[maxn],a[maxn],tot,f[maxn],vis[maxn],tim,ans[maxn];void add(int x,int y){ nxt[++tot]=lnk[x];lnk[x]=tot;son[tot]=y;}bool find(int x){ for (int j=lnk[x];j!=-1;j=nxt[j]) if (vis[son[j]]!=tim){ vis[son[j]]=tim; if (!f[son[j]]||find(f[son[j]])){ f[son[j]]=x; return 1; } } return 0;}int main(){ freopen("exam.in","r",stdin); freopen("exam.out","w",stdout); memset(lnk,255,sizeof(lnk)); scanf("%d",&n); for (int i=0;i<n;i++){ int D;scanf("%d",&D); int y1=(i+D+n)%n,y2=(i-D+n)%n; if (y1<y2) swap(y2,y1); add(i,y1+n);add(i,y2+n); } for (int i=n-1;i>=0;i--){ tim++; if (!find(i)) return printf("No Answer\n"),0; } for (int i=n;i<2*n;i++) ans[f[i]]=i-n; for (int i=0;i<n;i++){ printf("%d",ans[i]); if (i!=n-1) printf(" "); } return 0;}
阅读全文
0 0
- [二分图匹配] [NOI2009] BZOJ 1562——序列变换
- BZOJ 1562 [NOI2009]变换序列 (二分图匹配)
- [BZOJ]1562: [NOI2009]变换序列 二分图匹配
- BZOJ 1562: [NOI2009]变换序列 【二分图匹配】【匈牙利】
- bzoj 1562: [NOI2009]变换序列 二分图最大匹配
- NOI2009 变换序列【transform】二分图匹配
- 【二分图匹配】【NOI2009】变换序列
- [BZOJ1562]NOI2009变换序列|二分图匹配
- 【bzoj1562】 NOI2009 变换序列 二分图匹配
- bzoj 1562: [NOI2009]变换序列
- bzoj 1562: [NOI2009]变换序列
- [NOI2009]变换序列(二分图完美匹配)
- bzoj1562 NOI2009变换序列 二分图匹配(匈牙利)
- 【二分图最大匹配】BZOJ1562 [NOI2009]变换序列
- bzoj1562 [NOI2009]变换序列(二分图完美匹配+贪心)
- BZOJ 1562([NOI2009]变换序列-匈牙利算法)
- bzoj 1562: [NOI2009]变换序列 匈牙利算法
- [BZOJ 1562][NOI 2009]变换序列(二分图匹配)
- sklearn学习——SVM例程总结(PCA+Pipline+cv+GridSearch)
- bzoj2741[FOTILE模拟赛L]
- Comparable接口实现自定义对象的排序功能
- (转)你事业的上限究竟在哪里?《哈佛商业评论》史上最佳文章
- hdu2027 统计元音(C语言)
- [二分图匹配] [NOI2009] BZOJ 1562——序列变换
- HDU 6040& 2017年多校训练第一场 1008题
- 一年经验Java程序员面试经
- tcp 通信 服务器端
- 那一战
- SHA1
- HDU 1556 Color the ball(线段树|树状数组)
- Maximum Product
- Ubuntu16.04下安装最新版本的CMake