【BZOJ1562】【jzyzOJ1730】【COGS409】NOI2009变换序列 二分图匹配
【问题描述】
.bmp)


#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
int n;
int dis[];
int lin[];
int ans[];
bool f[];
vector<int>a[]; int flag(int q,int p)
{
return min(abs(q-p),n-abs(q-p));
} bool dfs(int x)
{
int l=a[x].size();
for(int i=;i<l;++i)
{
if(!f[a[x][i]])
{
f[a[x][i]]=;
if(lin[a[x][i]]==-||dfs(lin[a[x][i]]))
{
lin[a[x][i]]=x;
return true;
}
}
}
return false;
} int main()
{
//freopen("a.txt","r",stdin);
//freopen("b.txt","w",stdout);
//freopen("transform.in","r",stdin);
//freopen("transform.out","w",stdout);
memset(a,,sizeof(a));
cin>>n;
for(int i=;i<n;++i)
scanf("%d",&dis[i]);
for(int i=;i<n;++i)
{
int x=i+dis[i];
int y=i+n-dis[i];
x%=n;y%=n;
if(flag(x,i)!=dis[i]) x=-;
if(flag(y,i)!=dis[i]) y=-;
if(x>y) swap(x,y);
if(x!=-) a[i].push_back(x);
if(y!=-) a[i].push_back(y);
} memset(lin,-,sizeof(lin));
for(int i=n-;i>=;--i)
{
memset(f,,sizeof(f));
if(!dfs(i))
{
cout<<"No Answer"<<endl;
return ;
}
} //cout<<123456<<endl;
for(int i=;i<n;++i)
ans[lin[i]]=i;
for(int i=;i<n-;++i)
printf("%d ",ans[i]);
cout<<ans[n-]<<endl;
return ;
}
【BZOJ1562】【jzyzOJ1730】【COGS409】NOI2009变换序列 二分图匹配的更多相关文章
- Luogu P1963 [NOI2009]变换序列(二分图匹配)
P1963 [NOI2009]变换序列 题意 题目描述 对于\(N\)个整数\(0,1, \cdots ,N-1\),一个变换序列\(T\)可以将\(i\)变成\(T_i\),其中\(T_i \in ...
- 【bzoj1562】【[NOI2009]变换序列】匈牙利算法的性质利用
(上不了p站我要死了,侵权度娘背锅) Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30 ...
- 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≤ ...
- BZOJ 1562 变换序列(二分图匹配)
显然每个位置只有两个情况,所以用二分图最大匹配来求解. 如果二分图有完全匹配,则有解. 关键是如何求最小的字典序解. 实际上用匈牙利算法从后面开始找增广路,并优先匹配字典序小的即可. # includ ...
- BZOJ 1562 变换序列 二分图匹配+字典序
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1562 题目大意: 思路: 逆序匹配,加边匹配的时候保持字典序小的先加入. 具体证明:h ...
- Bzoj 1562: [NOI2009]变换序列 匈牙利算法,二分图匹配
题目: http://cojs.tk/cogs/problem/problem.php?pid=409 409. [NOI2009]变换序列 ★★☆ 输入文件:transform.in 输出文 ...
- BZOJ 1562 [NOI2009] 变换序列
[NOI2009] 变换序列 [题解] 就是有一个序列,每个位置可以填两个数,不可重复,问最小字典序. 显然,可以建一个二分图,判合法就是找完美匹配. 那怎么弄最小字典序呢?有好多种解法,我这里给出了 ...
- [Luogu 1963] NOI2009 变换序列
[Luogu 1963] NOI2009 变换序列 先%Dalao's Blog 什么?二分图匹配?这个确定可以建图? 「没有建不成图的图论题,只有你想不出的建模方法.」 建图相当玄学,不过理解大约也 ...
- noi2009变换序列
noi2009变换序列 一.题目 1843 变换序列 2009年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 ...
随机推荐
- 【小程序入门集锦】19,微信小程序个人帐号申请
个人账号与企业帐号相比,缺少支付等功能,与个人订阅号类似. 小程序开放个人开发者申请注册,个人用户可访问微信公众平台,扫码验证个人身份后即可完成小程序帐号申请并进行代码开发. 下面我们就来说说 ...
- Python基础闯关失败总结
对列表进行创建切片增删改查 对列表进行创建 L1 = [] # 定义L1 为一个空列表 List() #创建List 空列表 对列表进行查询 L2 = ['a','b','c','d','a','e ...
- android基础知识杂记
Activity中获取视图组件对象:public View findViewById(@IdRes int id) 该方法以组件的资源ID为参数,返回一个视图对象View,需要强转成具体的视图类对象. ...
- leetcode 【 Sort List 】 python 实现
题目: Sort a linked list in O(n log n) time using constant space complexity. 代码:oj 测试通过 Runtime: 372 m ...
- activemq 简单聊天
有兴趣加群qq:200634530
- BZOJ 2752:[HAOI2012]高速公路(road)(线段树)
[HAOI2012]高速公路(road) Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y ...
- HDU 2036 求任意多边形面积向量叉乘
三角形的面积可以使用向量的叉积来求: 对于 三角形的面积 等于: [(x2 - x1)*(y3 - y1)- ( y2 - y1 ) * ( x3 - x1 ) ] / 2.0 但是面积是有方向的, ...
- java _tomcat_mysql 部署
项目做完了,要发布了,而Java的特长之一就是移植性好,面对着微软的XP的停止服务,Windows系统的“独裁”,越来越多的商家选择了开源的免费的linux系统作为服务器.因为linux系统也有图形界 ...
- BZOJ 3224 普通平衡树(Treap模板题)
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 14301 Solved: 6208 [Submit][ ...
- 蔬菜(vegetable)
蔬菜(vegetable) 题目描述 题目背景:您使用脚本刷出了上题游戏 998244353 关的最高分 (最优解),心满意足的准备点继续学习,忽然一条弹窗弹了出来:你想明白活着的意义吗?你想真正的. ...