bzoj1562 [NOI2009]变换序列(二分图完美匹配+贪心)
来源:互联网 发布:gta5低配优化补丁 编辑:程序博客网 时间:2024/04/29 20:08
可以发现,每个数最多可以变成两个数,我们以此为边建二分图。然后跑完美匹配即可。题目还要求输出字典序最小的答案,这个怎么做呢?考虑我们匈牙利算法的过程,如果强制要求每个点先连向小的,再连向大的,则我们会尝试着先给当前数匹配小的,而之前匹配过的数要为他腾位置,因此我们只要倒着匹配就好啦!让最后匹配的尽量小。
严谨的证明见dalao byvoid:https://www.byvoid.com/zhs/blog/noi-2009-transform
%%%
#include <bits/stdc++.h>using namespace std;#define N 10010#define ll long long#define inf 0x3f3f3f3finline 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;}int n,bf[N],gf[N];bool f[N];vector<int>e[N];bool find(int x){ for(int i=0;i<e[x].size();++i){ int y=e[x][i];if(f[y]) continue;f[y]=1; if(!bf[y]||find(bf[y])){ bf[y]=x;gf[x]=y;return 1; } }return 0;}int main(){// freopen("a.in","r",stdin); n=read(); for(int i=1;i<=n;++i){ int x=read(),x1,x2; if(i-x>=1) x1=i-x;else x1=i-x+n; if(x*2==n){e[i].push_back(x1);continue;} if(i+x<=n) x2=i+x;else x2=i+x-n; if(x1>x2) swap(x1,x2);e[i].push_back(x1);e[i].push_back(x2); } for(int i=n;i>=1;--i){ memset(f,0,sizeof(f));if(!find(i)){puts("No Answer");return 0;} } for(int i=1;i<n;++i) printf("%d ",gf[i]-1);printf("%d\n",gf[n]-1); return 0;}
阅读全文
0 0
- bzoj1562 [NOI2009]变换序列(二分图完美匹配+贪心)
- [BZOJ1562]NOI2009变换序列|二分图匹配
- 【bzoj1562】 NOI2009 变换序列 二分图匹配
- [bzoj1562][NOI2009]变换序列(贪心+dfs/二分图最大匹配)
- bzoj1562 NOI2009变换序列 二分图匹配(匈牙利)
- 【二分图最大匹配】BZOJ1562 [NOI2009]变换序列
- [NOI2009]变换序列(二分图完美匹配)
- [BZOJ1562][NOI2009]变换序列
- bzoj1562 [NOI2009]变换序列
- bzoj1562[NOI2009] 变换序列
- BZOJ1562: [NOI2009]变换序列
- 【NOI2009】bzoj1562 变换序列
- NOI2009 变换序列【transform】二分图匹配
- 【二分图匹配】【NOI2009】变换序列
- 【bzoj1562】 NOI2009—变换序列
- 【NOI2009】Bzoj1562 & Codevs1843 变换序列
- BZOJ 1562 [NOI2009]变换序列 (二分图匹配)
- BZOJ1562: [NOI2009]变换序列(匈牙利算法,字典序相关)
- eclipse设置自动提示 及单步调试
- 《丧钟为谁而鸣》读后感
- 软件需求工程 课堂笔记6
- stm32中使用#pragma pack(n)
- unity之切换显示
- bzoj1562 [NOI2009]变换序列(二分图完美匹配+贪心)
- leetcode 328. Odd Even Linked List
- 如何评估FPGA所需资源
- UR5机械臂--ROS系统通信建立与实时控制
- Servlet(路径、特性)
- POJ 2079 求最大三角形面积
- C语言和C++的区别(函数重载)
- 《HBase权威指南》读书笔记 第八章:架构:读取数据、region生命周期、ZK数据结构
- 俄罗斯方块