当前位置: 首页 > 编程日记 > 正文

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

任意门:http://www.lydsy.com/JudgeOnline/problem.php?id=1562

题目:

对于0,1,…,N-1的N个整数,给定一个距离序列D0,D1,…,DN-1,定义一个变换序列T0,T1,…,TN-1使得每个i,Ti的环上距离等于Di。一个合法的变换序列应是0,1,…,N-1的一个排列,任务是要求出字典序最小的那个变换序列。

题解:

二分建图是显而易见的,可是怎么处理字典序最小?

大神博客:https://www.byvoid.com/blog/noi-2009-transform/

实际倒着做一遍就可以了,正确性显然(只不过我不是这样写的);

先做最大匹配,然后看所匹配的是否为最小标号,不是则强行改值,然后再做最大匹配看是否有完备匹配,无则将值改回。

代码:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 bool vis[30000];
 6 int f[80000],pre[80000],v[80000],now[80000];
 7 int a[20010],b[20010];
 8 int n,ans,tot,cc;
 9 void insert(int a, int b)
10 {
11  tot++; pre[tot]=now[a]; now[a]=tot; v[tot]=b;
12 }
13 bool dfs(int x)
14 {
15  if (x<cc) return false;
16  for (int i=now[x]; i; i=pre[i])
17  {
18   if (!vis[v[i]])
19   {
20    vis[v[i]]=true;
21    if (f[v[i]]==-1 || dfs(f[v[i]]))
22    {
23     f[v[i]]=x;
24     f[x]=v[i];
25     return true;
26    }
27   }
28  }
29  return false;
30 }
31 int main()
32 {
33  int d;
34  scanf("%d",&n);
35  tot=0;
36  for (int i=1; i<=n; i++)
37  {
38   scanf("%d",&d);
39   a[i]=(i+d) % n;
40   if (a[i]==0) a[i]=n;
41   b[i]=(i-d);
42   if (b[i]<1)
43   b[i]+=n;
44   if (a[i]>b[i])
45   {
46    int c;
47    c=a[i]; a[i]=b[i]; b[i]=c;
48   }
49   a[i]+=n; b[i]+=n;
50   insert(i,a[i]);
51   insert(i,b[i]); 
52  } 
53  memset(f,-1,sizeof(f));
54  ans=0;
55  for (int i=1; i<=n; i++)
56  {
57   memset(vis,false,sizeof(vis));
58   if (dfs(i)) ans++; 
59  }
60  if (ans<n) { printf("No Answer\n"); return 0 ;}
61  for (int i=1; i<=n; i++)
62  {
63   if (f[i]!=a[i])
64   {
65    cc=i;
66    memset(vis,false,sizeof(vis));
67    int t=f[a[i]];
68    f[a[i]]=i;
69    f[b[i]]=-1;
70    vis[a[i]]=true;
71    if (dfs(t))
72    {
73     f[i]=a[i];
74    }
75    else
76    {
77     f[b[i]]=i;
78     f[a[i]]=t;
79     
80    }
81   }
82  }
83  for (int i=1; i<n; i++)
84  {
85   printf("%d ",f[i]-n-1);
86  }
87  printf("%d\n",f[n]-n-1);
88  return 0;
89 }
90 
91  
View Code

转载于:https://www.cnblogs.com/HQHQ/p/5273332.html

相关文章:

把view或者div绘制 canvas ,导出图片功能实现完整源码附效果图(兼容H5和小程序)

先看下效果图&#xff1a;&#xff08;上面灰色块内的用div和CSS写出来的&#xff0c;然后绘制到canvas&#xff09; 实现此功能需要使用到一个微信小程序的插件&#xff0c;插件官方文档地址&#xff1a; wxml-to-canvas | 微信开放文档 本博客代码环境&#xff0c;uniapp&a…

C 语言中的 switch 语句 case 后面是否需要加大括号

事件原由为编辑器的自动缩进&#xff0c;当 case 换行后不自动缩进。 于是在在想可以可否在 case 后面再大括号&#xff0c;让其自动缩进。 查了资料&#xff0c;发现 case 是可以加大括号的&#xff0c;相当于代码块。 而且还有另外一个用途&#xff0c;可以代码块头部定义变量…

问题 c: 插入排序_插入排序:它是什么,以及它如何工作

问题 c: 插入排序Insertion sort is a simple sorting algorithm for a small number of elements.插入排序是一种针对少量元素的简单排序算法。 例&#xff1a; (Example:) In Insertion sort, you compare the key element with the previous elements. If the previous ele…

在Java连接hbase时出现的问题

问题1&#xff1a; java.net.ConnectException: Connection refused: no further information zookeeper.ClientCnxn: Session 0x0 for server null zookeeper未启动&#xff0c;或无法连接&#xff0c;从查看各节点zookeeper启动状态、端口占用、防火墙等方面查看原因。问题2&…

codeforces 8C. Looking for Order 状压dp

题目链接 给n个物品的坐标&#xff0c; 和一个包裹的位置&#xff0c; 包裹不能移动。 每次最多可以拿两个物品&#xff0c; 然后将它们放到包里&#xff0c; 求将所有物品放到包里所需走的最小路程。 直接状压dp就好了。 #include <iostream> #include <vector> #…

H5刷新当前页面

location.reload();

sql的外键约束和主键约束_SQL主键约束用示例解释

sql的外键约束和主键约束A primary key is a column or a set of columns that uniquely identifies each row in a table.主键是一列或一组列&#xff0c;它们唯一地标识表中的每一行。 It’s called a “constraint” because it causes the system to restrict the data al…

str.format() 格式化字符串函数

语法 它通过{}和:来代替%。 “映射”示例 通过位置 In [1]: {0},{1}.format(kzc,18) Out[1]: kzc,18 In [2]: {},{}.format(kzc,18) Out[2]: kzc,18 In [3]: {1},{0},{1}.format(kzc,18) Out[3]: 18,kzc,18字符串的format函数可以接受不限个参数&#xff0c;位置可以…

css学习任务二:切图写代码

今天的任务是根据UI给的图进行切图&#xff0c;然后写出相应的页面&#xff0c;UI如下&#xff1a; 收获&#xff1a;学习前端知识一年有余&#xff0c;却因为老是找不到实战项目而得不到实际的提高&#xff0c;直到今天的学习我才知道切图是怎么一回事&#xff0c;明白了你看到…

Vue mixins(混入) 附代码示例详解

mixins 我们称它为 “混入” &#xff1b; 官方的解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时&#xff0c;所有混入对象的选项将被“混合”进入该组件本身的…

软件开发面试_如何为成功的软件开发工作面试做准备

软件开发面试Job interviews are stressful for many people. Besides the pressure of getting hired, you have to answer various questions before and during the interview – like what to wear, how to get prepared, how much money to ask for, and much more.求职面…

bzoj1070————2016——3——14

传送门&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id1070&#xff1b; 题目概括&#xff1a; Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心。维修中心共有M位技术人员&#xff0c;不同的技术人员对不同的车进行维修所用的时间是不同的。现…

CSS兼容性汇总

http://www.jb51.net/css/469020.html CSS属性Hack 把属性hack分为 前缀属性hack和 后缀属性hack CSS属性Hack&#xff08;前缀&#xff09;针对的浏览器_color:red;IE6及其以下的版本*color:red ;或者 color:red;IE7及其以下的版本CSS属性Hack&#xff08;后缀&#xff09;针对…

Vue 过渡组件,可实现组件或者页面的动画过渡或者css过渡

使用过渡效果&#xff0c;可以优化用户体验&#xff0c;Vue给我们封装了一个很好用的组件&#xff0c;专门用来处理过渡效果&#xff0c;下面我们来看看怎么使用它&#xff1b; Vue 提供了 transition 的封装组件&#xff0c;在下列情形中&#xff0c;可以给任何元素和组件添加…

解释型和编译型编程语言_解释型和编译型编程语言:有什么区别?

解释型和编译型编程语言Every program is a set of instructions, whether it’s to add two numbers or send a request over the internet. Compilers and interpreters take human-readable code and convert it to computer-readable machine code. 每个程序都是一组指令&a…

Beta 冲刺 (1/7)

队名&#xff1a;天机组 组员1友林 228&#xff08;组长&#xff09; 今日完成&#xff1a;查找了相关资料及api文档。明天计划&#xff1a;继续相关资料及源码。剩余任务&#xff1a;优化网络通讯机制主要困难&#xff1a;查找的代码调试较为困难。收获及疑问&#xff1a;暂无…

Vue全局路由侦听beforeEach路由守卫附代码使用示例

使用路由守卫beforeEach&#xff0c;可以实现路由侦听&#xff1b; 全局侦听路由跳转的实现代码&#xff1a; app.vue onLaunch: function(e) {this.$router.beforeEach((to, from, next) > {console.log($router,to,from);next();}); } to 是跳转路由之后的page对象&am…

Debug模式下加载文件,运行程序异常的慢

今天在进行单元测试的时候&#xff0c;debug模式下加载速度很慢&#xff0c;但是run模式下速度很快。 原因&#xff1a;在debug模式下&#xff0c;断点位置不当&#xff0c;解决办法 移除编译器中的所有断点。转载于:https://www.cnblogs.com/nww57/p/5277113.html

如何在Python中对字符串进行子字符串化

Python offers many ways to substring a string. It is often called ‘slicing’.Python提供了许多对字符串进行子字符串化的方法。 它通常被称为“切片”。 It follows this template:它遵循以下模板&#xff1a; string[start: end: step]Where,哪里&#xff0c; start:…

HttpPost导包遇到的问题

直接在当前项目 build.gradle文件修改如下 android { useLibrary org.apache.http.legacy compileSdkVersion 24 buildToolsVersion "24.0.0" defaultConfig { applicationId "com.ican.subjects" minSdkVe…

真相也许是这样

这两天同学们陆续上传了自己编写的小程序&#xff0c;等老师审查给成绩的时候才发现一部分同学是负分。原因就是他们有抄袭之嫌。恰巧我当时就在一位得了负分的同学旁边&#xff0c;他一脸郁闷的对我说”没道理啊&#xff0c;这是我自己编的啊“。这个我知道&#xff0c;的确是…

微信小程序全局监听路由变化

小程序有一个API可以侦听全局路由跳转&#xff0c;官方文档里面没有但是可以使用。 wx.onAppRoute((res) > { console.log(路由监听,{res}) })

c语言面向对象编程中的类_C ++中的面向对象编程

c语言面向对象编程中的类Object oriented programming, OOP for short, aims to implement real world entities like inheritance, hiding and polymorphism in programming. 面向对象的编程&#xff0c;简称OOP&#xff0c;旨在在编程中实现诸如继承&#xff0c;隐藏和多态性…

Maven build标签

前言&#xff1a; <build >设置&#xff0c;主要用于编译设置 1.分类 在Maven的pom.xml文件中&#xff0c;存在如下两种<build>&#xff1a; &#xff08;1&#xff09;全局配置&#xff08;project build&#xff09; 针对整个项目的所有情况都有效 &#xff08;2…

Ant Design Vue 表格内编辑(附完整源码及效果图)

效果图&#xff1a; 实现关键代码就是表单的 columns 属性对象下标的 scopedSlots&#xff1a; scopedSlots: {customRender: } 实现完整代码&#xff1a; <template><div><div class"table-wrapper"><!--每个列的宽度必须比列名总长度大才能…

shell基本用法

#!/bin/bash #使用哪个shell执行echo "hello world" username"tom" echo $username#chmod x ./test.sh 设置可以执行文件#for循环输出 for skill in Ada Coffe Action Java; doecho "I am good at ${skill}Script" done #for file in ls /etc; d…

brad wu_一百万归功于Brad Traversy

brad wuBrad Traversy is one of the most appreciated web development teachers on YouTube and he is getting close to 1 Million subscribers. We decided to help him reach this goal by the end of 2019.布拉德特拉弗西 ( Brad Traversy)是YouTube上最受赞赏的网络开发…

CSS常见布局解决方案

最近要准备移动端项目&#xff0c;大半年没好好写过CSS了&#xff0c;今天恶补了一下CSS的一些布局&#xff0c;下面做一些分享。 水平居中布局 1.margin 定宽 <div class"parent"><div class"child">Demo</div> </div><style…

java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误

omcat 启动时报以下错误: java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully 错误 这个错误 碰到好几次了&#xff0c;我的tomcat使用非常频繁&#xff0c;而且部署项目比较多&#xff0c;经常会出一些自己看不懂的问题&#xff0c; 今天解决了这…

SQL替换字段中部分字符

示例&#xff1a; tb_item表中image字段中一数据为&#xff1a;jd/4ef8861cf6854de9889f3db9b24dc371.jpg update tb_item set image replace(image,jd,taobao); 替换后: taobao/4ef8861cf6854de9889f3db9b24dc371.jpg