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的时候要注意一下先后顺序

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#define N (10000+100)
using namespace std;
struct node
{
int to,next;
} edge[N*];
int n,x,from[N],to[N],head[N],num_edge,used[N],now,a[]; void add(int u,int v)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
head[u]=num_edge;
} bool check(int x,int y,int ans)
{
if (y< || y>=n) return false;
if (min(abs(x-y),n-abs(x-y))==ans) return true;
return false;
} bool find(int x)
{
for (int i=head[x];i!=;i=edge[i].next)
if (used[edge[i].to]!=now)
{
used[edge[i].to]=now;
if (!to[edge[i].to] || find(to[edge[i].to]))
{
to[edge[i].to]=x;
from[x]=edge[i].to;
return true;
}
}
return false;
} int main()
{
memset(used,0x7f,sizeof(used));
scanf("%d",&n);
for (int i=;i<=n-;++i)
{
scanf("%d",&x);
a[]=i+x,a[]=i-x,a[]=i+(n-x),a[]=i-(n-x);
sort(a+,a++);
if (check(i,a[],x))
add(i,a[]);
if (check(i,a[],x))
add(i,a[]);
if (check(i,a[],x))
add(i,a[]);
if (check(i,a[],x))
add(i,a[]); } int ans=;
for (int i=n-;i>=;--i)
{
now=i;
if (find(i)) ans++;
else break;
}
if (ans!=n)
printf("No Answer");
else
{
for (int i=;i<=n-;++i)
printf("%d ",from[i]);
printf("%d",from[n-]);
}
}

最新文章

  1. WebStorm按Tab建快速生成代码模块
  2. IDEA 搭建自己的第一个 SpringMvc Hello Word
  3. sql2008r2-vs2013安装下载
  4. 转载:HBASE配置说明
  5. codevs 1002 搭桥
  6. Java 设计模式泛谈&amp;装饰者模式和单例模式
  7. bzoj1056: [HAOI2008]排名系统 &amp;&amp; 1862: [Zjoi2006]GameZ游戏排名系统
  8. 【技术贴】解决vss中提交pdf下载打开空白乱码
  9. C语言连接数据库
  10. MySQL 的调节和优化的提示
  11. Java中组合 设计技巧 实例
  12. oracle创建触发器及作用举例
  13. properties类是Hashtable的子类
  14. 《C#并发编程经典实例》学习笔记—2.5 等待任意一个任务完成 Task.WhenAny
  15. MySql流程控制结构
  16. 用二分法定义平方根函数(Bisection method Square Root Python)
  17. 1000. A+B Problem
  18. (转)python中调用R语言通过rpy2 进行交互安装配置详解
  19. 关于uframe源码的一些解读
  20. sharepoint webapp 部署注意点

热门文章

  1. Java基于ssm框架的restful应用开发
  2. MyEclipse中新建JSP页面编码设置(UTF-8)
  3. MyBatis和Hibernate的优缺点对比。
  4. Rafy中的IOC
  5. Microservices与DDD的关系
  6. ASP.NET Core依赖注入
  7. Linux : task work 机制
  8. div模拟textarea文本域轻松实现高度自适应——张鑫旭
  9. problem-solving-with-algorithms-and-data-structure-usingpython(使用python解决算法和数据结构) -- 基本数据结构 -- 队列
  10. 洛谷P4783 【模板】矩阵求逆(高斯消元)