Description

Input

Output

Sample Input

5
1 1 2 2 1

Sample Output

1 2 4 0 3

HINT

30%的数据中N≤50;
60%的数据中N≤500;
100%的数据中N≤10000。

匈牙利裸题
因为要注意字典序
所以加边还有find的时候要注意一下先后顺序

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<algorithm>
 6 #define N (10000+100)
 7 using namespace std;
 8 struct node
 9 {
10     int to,next;
11 } edge[N*4];
12 int n,x,from[N],to[N],head[N],num_edge,used[N],now,a[10];
13
14 void add(int u,int v)
15 {
16     edge[++num_edge].to=v;
17     edge[num_edge].next=head[u];
18     head[u]=num_edge;
19 }
20
21 bool check(int x,int y,int ans)
22 {
23     if (y<0 || y>=n) return false;
24     if (min(abs(x-y),n-abs(x-y))==ans) return true;
25     return false;
26 }
27
28 bool find(int x)
29 {
30     for (int i=head[x];i!=0;i=edge[i].next)
31         if (used[edge[i].to]!=now)
32         {
33             used[edge[i].to]=now;
34             if (!to[edge[i].to] || find(to[edge[i].to]))
35             {
36                 to[edge[i].to]=x;
37                 from[x]=edge[i].to;
38                 return true;
39             }
40         }
41     return false;
42 }
43
44 int main()
45 {
46     memset(used,0x7f,sizeof(used));
47     scanf("%d",&n);
48     for (int i=0;i<=n-1;++i)
49     {
50         scanf("%d",&x);
51         a[1]=i+x,a[2]=i-x,a[3]=i+(n-x),a[4]=i-(n-x);
52         sort(a+1,a+4+1);
53         if (check(i,a[4],x))
54             add(i,a[4]);
55         if (check(i,a[3],x))
56             add(i,a[3]);
57         if (check(i,a[2],x))
58             add(i,a[2]);
59         if (check(i,a[1],x))
60             add(i,a[1]);
61
62     }
63
64     int ans=0;
65     for (int i=n-1;i>=0;--i)
66     {
67         now=i;
68         if (find(i)) ans++;
69         else break;
70     }
71     if (ans!=n)
72         printf("No Answer");
73     else
74     {
75         for (int i=0;i<=n-2;++i)
76             printf("%d ",from[i]);
77         printf("%d",from[n-1]);
78     }
79 }

转载于:https://www.cnblogs.com/refun/p/8680855.html

1562. [NOI2009]变换序列【二分图】相关推荐

  1. bzoj 1562 [NOI2009]变换序列 二分图

    题面 题目传送门 解法 显然可以构建一个二分图模型 但是要求出字典序最小的解,那么网络流就无能为力了 考虑用匈牙利算法来跑 匈牙利算法就是用大的来代替小的,那我们把连接的点从小到大排序,然后从左边大的 ...

  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 1562 变换序列

    二分图匹配 要求字典序最小 匈牙利算法 自N-1至0尝试匹配 先尝试小数,这个通过加边顺序控制 这样高优先权位置只有在不可行时才取大数 #include <iostream>using n ...

最新文章

  1. ubuntu安装mysql远程_Ubuntu18.04下远程安装MySQL
  2. python发送短信接口_python发送短信和发送邮件
  3. dhcp怎么开启 linux,怎么开启DHCP服务器啊
  4. html淡化效果,jQuery实现基本淡入淡出效果的方法详解
  5. CCF 201503-2 数字排序
  6. 没有绝对的技术,只有不停的创新
  7. 令人期待的php7.4,PHP7.4新特性
  8. win目录挂载到linux目录遇到的小问题
  9. 类别不平衡学习的常用策略
  10. Microsoft Office Visio 2007
  11. 三节点潮流计算matlab,电力系统分析大作业matlab三机九节点潮流计算报告.doc
  12. USGS下载遥感影像——以Landsat影像下载为例
  13. 叒一次算法作业hhhhhhhh
  14. 软件分类和软件测试工作流程
  15. 470Ω排阻阻值测量
  16. (二)苏世民:我的经验和教训:追梦(12)
  17. 如何同步公众号内容到头条自媒体?
  18. 海尔消费金融2019年业绩:营收13.89亿元,净利润2.05亿元
  19. outlook打开总是要输入密码,怎么办?
  20. 微信小程序 post请求发送x-www-form-urlencoded类型数据

热门文章

  1. 柳进军 | 城市大脑的逻辑模型
  2. Gartner发布2021年重要战略科技趋势
  3. 3D芯片大脑:在芯片上培养脑细胞,还能用来测试新药
  4. 彭博社 : 中国稀土——美欧的苦恼
  5. 一文读懂什么是数字孪生?
  6. 2019年全球数字化转型现状研究报告
  7. 人类正在进入超级智能时代,论一种新超级智能的崛起
  8. 腾讯和头条,构建类脑神经元网络的两条路线之争
  9. 作弊阴影罩棋盘,人工智能咋避嫌?
  10. PHP、Python 竟上榜最慢的现代编程语言