题面

题目传送门

解法

显然可以构建一个二分图模型

但是要求出字典序最小的解,那么网络流就无能为力了

考虑用匈牙利算法来跑

匈牙利算法就是用大的来代替小的,那我们把连接的点从小到大排序,然后从左边大的开始跑就可以了

代码

#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]变换序列 二分图相关推荐

  1. 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 ...

  2. 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 ...

  3. P1963 [NOI2009]变换序列

    题目描述 不想水字,详见某谷:P1963 [NOI2009]变换序列 solution 其实    的计算就类似于环上的距离. 对于每一个  都可能有两种位置选择:, . 所以把它们分别连边,二分图上 ...

  4. bzoj1562 [NOI2009]变换序列

    bzoj1562 [NOI2009]变换序列 NOI也有SB题系列. 一个\(i\)只有两种可能的\(T_i\) 要求所有\(T_i\)不重复,且字典序坠小. 仔细想一想匈牙利匹配的过程就可以知道:要 ...

  5. bzoj1562[NOI2009]变换序列——2016——3——12

    任意门:http://www.lydsy.com/JudgeOnline/problem.php?id=1562 题目: 对于0,1,-,N-1的N个整数,给定一个距离序列D0,D1,-,DN-1,定 ...

  6. bzoj1562[NOI2009] 变换序列

    题目链接:bzoj1562 题目大意: 给出一个序列(0~n-1),这个序列经过某个变换会成为另外一个序列,但是其中的元素不会改变,给出初始序列与变换后的序列每一位上的"距离",求 ...

  7. [NOI2009] 变换序列 (匈牙利最大匹配)

    description - solution 我竟然一眼题!! 变换后的TTT数组是[0,n)[0,n)[0,n)的排列,变换规则也有,距离DDD也知道 很明显可以求出iii的可能变换对象 这不就是个 ...

  8. 【二分图匹配】BZOJ1562-[NOI2009] 变换序列

    [题目大意] 对于0,1,-,N-1的N个整数,给定一个距离序列D0,D1,-,DN-1,定义一个变换序列T0,T1,-,TN-1使得每个i,Ti的环上距离等于Di.一个合法的变换序列应是0,1,-, ...

  9. BZOJ 1565 [NOI2009]植物大战僵尸

    title: 'BZOJ 1565 [NOI2009]植物大战僵尸' categories: BZOJ date: 2016-3-20 9:30:00 tags: [最小割] Description ...

最新文章

  1. via浏览器下载路径_Via - 能够安装脚本插件的安卓浏览器
  2. python多维数据存储_在Python中存储和重新加载大型多维数据集
  3. 10张逻辑思维图,迅速提升你的工作能力
  4. 大咖微课 | 直面Angular2系列课第二期开讲
  5. Hegic Q1报告:TVL接近6000万美元,日交易量达2200万美元创新高
  6. 运维部门工作总结_部门动态 | 主动出击 超前谋划 全面做好园区网络运维工作...
  7. 使用Windows Embedded Source Tools for Bluetooth Technology简化蓝牙开发
  8. atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结
  9. Verilog描述——一位全加器,四选一选择器,计数器
  10. 安卓游戏 我叫mt 3.5.4.0 3540,data.dat 文件解包记录
  11. 君正 X1000 音频驱动架构
  12. 博客园主题美化(仅兼容 Markdown)
  13. 苹果屏幕尺寸_iPhone 12屏幕维修价格出炉,买得起伤不起?
  14. 关于电视盒子/XBOX/手机使用kodi访问局域网下的windows电脑文件/电影
  15. 恶意url_预测URL的恶意
  16. Java实现购物车功能
  17. 1, Test Harness
  18. Log of Grade Two
  19. ElasticSearch在数据量很大的情况下如何提高查询效率
  20. Python练习——输出10个不重复的英文字母

热门文章

  1. TypeScript 官方决定全面采用 ESLint
  2. Ionic 框架宣布 2019 年将正式支持 Vue 和 React
  3. 一般服务器显示闪存多少合适,现在服务器一般内存多大合适
  4. java中forward和redirect_好程序员Java教程分享:Forward和Redirect的区别
  5. python执行shellcode_python exec shellcode
  6. python 英语培训_英语学习与Python编程语言学习相辅相成(三十一)
  7. alternatives java_linux使用update-alternatives切换java版本
  8. 把list清空和赋值null对内存释放的区别
  9. c语言 勒让德多项式,2406: C语言习题 求n阶勒让德多项式(示例代码)
  10. openssh 虚拟机linux_Alpine Linux虚拟机安装过程