bzoj1562 [NOI2009]变换序列
bzoj1562 [NOI2009]变换序列
NOI也有SB题系列。
一个\(i\)只有两种可能的\(T_i\)
要求所有\(T_i\)不重复,且字典序坠小。
仔细想一想匈牙利匹配的过程就可以知道:要从后往前寻找匹配&优先匹配小的\(T\)。
匈牙利秒之。
// It is made by XZZ
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define il inline
#define rg register
#define vd void
typedef long long ll;
il int gi(){rg int x=0;bool flg=0;rg char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')flg=1;ch=getchar();}while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return flg?-x:x;
}
const int maxn=10001;
int A[maxn],B[maxn];
int match[maxn];bool vis[maxn];
il bool dfs(int x){if(!vis[A[x]]){vis[A[x]]=1;if(match[A[x]]==-1||dfs(match[A[x]])){match[A[x]]=x;return 1;}}if(!vis[B[x]]){vis[B[x]]=1;if(match[B[x]]==-1||dfs(match[B[x]])){match[B[x]]=x;return 1;}}return 0;
}
int T[maxn];
int main(){int n=gi(),d;rep(i,0,n-1){d=gi(),A[i]=(i+d)%n,B[i]=(i-d+n)%n;if(A[i]>B[i])swap(A[i],B[i]);}memset(match,-1,sizeof match);drep(i,n-1,0){memset(vis,0,sizeof vis);if(!dfs(i)){puts("No Answer");return 0;}}rep(i,0,n-1)T[match[i]]=i;rep(i,0,n-1)printf("%d ",T[i]);puts("");return 0;
}
转载于:https://www.cnblogs.com/xzz_233/p/7608499.html
bzoj1562 [NOI2009]变换序列相关推荐
- bzoj1562[NOI2009] 变换序列
题目链接:bzoj1562 题目大意: 给出一个序列(0~n-1),这个序列经过某个变换会成为另外一个序列,但是其中的元素不会改变,给出初始序列与变换后的序列每一位上的"距离",求 ...
- bzoj1562[NOI2009]变换序列——2016——3——12
任意门:http://www.lydsy.com/JudgeOnline/problem.php?id=1562 题目: 对于0,1,-,N-1的N个整数,给定一个距离序列D0,D1,-,DN-1,定 ...
- BZOJ1562: [NOI2009]变换序列(二分图 匈牙利)
Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50: 60%的数据中N ...
- P1963 [NOI2009]变换序列
题目描述 不想水字,详见某谷:P1963 [NOI2009]变换序列 solution 其实 的计算就类似于环上的距离. 对于每一个 都可能有两种位置选择:, . 所以把它们分别连边,二分图上 ...
- [NOI2009] 变换序列 (匈牙利最大匹配)
description - solution 我竟然一眼题!! 变换后的TTT数组是[0,n)[0,n)[0,n)的排列,变换规则也有,距离DDD也知道 很明显可以求出iii的可能变换对象 这不就是个 ...
- 1562. [NOI2009]变换序列【二分图】
Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50: 60%的数据中N ...
- bzoj 1562 [NOI2009]变换序列 二分图
题面 题目传送门 解法 显然可以构建一个二分图模型 但是要求出字典序最小的解,那么网络流就无能为力了 考虑用匈牙利算法来跑 匈牙利算法就是用大的来代替小的,那我们把连接的点从小到大排序,然后从左边大的 ...
- 【二分图匹配】BZOJ1562-[NOI2009] 变换序列
[题目大意] 对于0,1,-,N-1的N个整数,给定一个距离序列D0,D1,-,DN-1,定义一个变换序列T0,T1,-,TN-1使得每个i,Ti的环上距离等于Di.一个合法的变换序列应是0,1,-, ...
- BZOJ 1562 变换序列
二分图匹配 要求字典序最小 匈牙利算法 自N-1至0尝试匹配 先尝试小数,这个通过加边顺序控制 这样高优先权位置只有在不可行时才取大数 #include <iostream>using n ...
最新文章
- 十种方法保持云中数据安全
- 如何导入给定名称的模块为字符串?
- haproxy调度web案例
- top与bottom、left与right的优先级
- VS中使用C#开发一个登录窗体应用程序
- ASP+MSSQL注入工具 web版 beta 3 final release
- BZOJ 5249: [2018多省省队联测]IIIDX(贪心 + 线段树)
- cannot find -lunwind-x86_64
- qt中设置父窗口中某一控件样式后,子窗口中某一控件也随父控件样式
- F5刷新表单页不能清空缓存
- python实现logistic回归对样本量有要求么_logistic回归样本量多少合适?
- C语言集合的排序方法,排序集合 c语言.doc
- 【算法笔记】输出字符串的所有子序列
- origin 2018安装教程与安装包
- Tuxera2022Mac系统读写NTFS磁盘工具装机必备
- video call BT audio音频流程
- 双色OLED屏图片点阵转换工具(OledTools)
- PTA L1-030 一帮一(详解)
- php gd图片验证,php笔记之GD库图片创建/简单验证码
- RAD0.1 RB.1/.2
热门文章
- python -v乱码提示,#import....等信息的问题解决方式。
- thinkphp实现当前页面点击下载文件实例
- lnmp 清除mysql日志,军哥LNMP 如何关闭 Mysql 日志,并且删除 mysql-bin.0000*日志文件...
- 【ES6(2015)】新的声明方式 let、const
- MySQL入门之事件
- 下一步linux命令bzip,linux基础命令---bzip2
- java线程等待按钮点击_java如何用多线程使线程在sleep时等待按钮按下?
- 计算机应用技术自创ppt,教师必备:超好用的课件制作工具
- python列表_Python列表抽象
- uibot css selector定位,UiBot如何使用CSS Selector