bzoj 1562 [NOI2009]变换序列 二分图
题面
题目传送门
解法
显然可以构建一个二分图模型
但是要求出字典序最小的解,那么网络流就无能为力了
考虑用匈牙利算法来跑
匈牙利算法就是用大的来代替小的,那我们把连接的点从小到大排序,然后从左边大的开始跑就可以了
代码
#include <bits/stdc++.h>
#define N 10010
using namespace std;
template <typename node> void chkmax(node &x, node y) {x = max(x, y);}
template <typename node> void chkmin(node &x, node y) {x = min(x, y);}
template <typename node> void read(node &x) {x = 0; int f = 1; char c = getchar();while (!isdigit(c)) {if (c == '-') f = -1; c = getchar();}while (isdigit(c)) x = x * 10 + c - '0', c = getchar(); x *= f;
}
vector <int> e[N];
int n, ans[N], vis[N], p[N];
void add(int x, int y) {e[x].push_back(y);}
bool dfs(int x) {for (int i = 0; i < e[x].size(); i++) {int k = e[x][i];if (!vis[k]) {vis[k] = 1;if (!ans[k] || dfs(ans[k])) {ans[k] = x, p[x] = k;return true;}}}return false;
}
int main() {read(n);for (int i = 0; i < n; i++) {int d; read(d);int x = (i - d + n) % n, y = (i + d) % n;add(i, x), add(i, y);}for (int i = 0; i < n; i++) sort(e[i].begin(), e[i].end());for (int i = n - 1; i >= 0; i--) {memset(vis, 0, sizeof(vis));if (!dfs(i)) {cout << "No Answer\n";return 0;}}for (int i = 0; i < n; i++) cout << p[i] << ' ';cout << "\n";return 0;
}
转载于:https://www.cnblogs.com/copperoxide/p/9476758.html
bzoj 1562 [NOI2009]变换序列 二分图相关推荐
- 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 ...
- 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 其实 的计算就类似于环上的距离. 对于每一个 都可能有两种位置选择:, . 所以把它们分别连边,二分图上 ...
- bzoj1562 [NOI2009]变换序列
bzoj1562 [NOI2009]变换序列 NOI也有SB题系列. 一个\(i\)只有两种可能的\(T_i\) 要求所有\(T_i\)不重复,且字典序坠小. 仔细想一想匈牙利匹配的过程就可以知道:要 ...
- 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] 变换序列
题目链接:bzoj1562 题目大意: 给出一个序列(0~n-1),这个序列经过某个变换会成为另外一个序列,但是其中的元素不会改变,给出初始序列与变换后的序列每一位上的"距离",求 ...
- [NOI2009] 变换序列 (匈牙利最大匹配)
description - solution 我竟然一眼题!! 变换后的TTT数组是[0,n)[0,n)[0,n)的排列,变换规则也有,距离DDD也知道 很明显可以求出iii的可能变换对象 这不就是个 ...
- 【二分图匹配】BZOJ1562-[NOI2009] 变换序列
[题目大意] 对于0,1,-,N-1的N个整数,给定一个距离序列D0,D1,-,DN-1,定义一个变换序列T0,T1,-,TN-1使得每个i,Ti的环上距离等于Di.一个合法的变换序列应是0,1,-, ...
- BZOJ 1565 [NOI2009]植物大战僵尸
title: 'BZOJ 1565 [NOI2009]植物大战僵尸' categories: BZOJ date: 2016-3-20 9:30:00 tags: [最小割] Description ...
最新文章
- via浏览器下载路径_Via - 能够安装脚本插件的安卓浏览器
- python多维数据存储_在Python中存储和重新加载大型多维数据集
- 10张逻辑思维图,迅速提升你的工作能力
- 大咖微课 | 直面Angular2系列课第二期开讲
- Hegic Q1报告:TVL接近6000万美元,日交易量达2200万美元创新高
- 运维部门工作总结_部门动态 | 主动出击 超前谋划 全面做好园区网络运维工作...
- 使用Windows Embedded Source Tools for Bluetooth Technology简化蓝牙开发
- atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结
- Verilog描述——一位全加器,四选一选择器,计数器
- 安卓游戏 我叫mt 3.5.4.0 3540,data.dat 文件解包记录
- 君正 X1000 音频驱动架构
- 博客园主题美化(仅兼容 Markdown)
- 苹果屏幕尺寸_iPhone 12屏幕维修价格出炉,买得起伤不起?
- 关于电视盒子/XBOX/手机使用kodi访问局域网下的windows电脑文件/电影
- 恶意url_预测URL的恶意
- Java实现购物车功能
- 1, Test Harness
- Log of Grade Two
- ElasticSearch在数据量很大的情况下如何提高查询效率
- Python练习——输出10个不重复的英文字母
热门文章
- TypeScript 官方决定全面采用 ESLint
- Ionic 框架宣布 2019 年将正式支持 Vue 和 React
- 一般服务器显示闪存多少合适,现在服务器一般内存多大合适
- java中forward和redirect_好程序员Java教程分享:Forward和Redirect的区别
- python执行shellcode_python exec shellcode
- python 英语培训_英语学习与Python编程语言学习相辅相成(三十一)
- alternatives java_linux使用update-alternatives切换java版本
- 把list清空和赋值null对内存释放的区别
- c语言 勒让德多项式,2406: C语言习题 求n阶勒让德多项式(示例代码)
- openssh 虚拟机linux_Alpine Linux虚拟机安装过程