UVA-10570 Meeting with Aliens (枚举+贪心)
题目大意:将一个1~n的环形排列变成升序的,最少需要几次操作?每次操作可以交换任意两个数字。
题目分析:枚举出1的位置。贪心策略:每次操作都保证至少一个数字交换到正确位置上。
# include<iostream>
# include<cstdio>
# include<cstring>
# include<algorithm>
using namespace std; int a[2000],head,tail,n,b[505]; bool ok(int id,int d)
{
for(int i=0;i<n;++i){
int p=(id+d*b[i]-d+n)%n;
if(p!=i)
return false;
}
return true;
} int getAns(int id,int d)
{
for(int i=0;i<n;++i) b[i]=a[i];
int res=0;
while(!ok(id,d))
{
for(int i=0;i<n;++i){
int p=(id+d*b[i]-d+n)%n;
if(i!=p){
++res;
swap(b[i],b[p]);
}
}
}
return res;
} void solve()
{
head=0,tail=n;
while(a[head]!=1)
a[tail++]=a[head++];
for(int i=0;i<n;++i)
a[i]=a[head++]; int ans=100000000;
for(int i=0;i<n;++i)
ans=min(ans,min(getAns(i,1),getAns(i,-1)));
printf("%d\n",ans);
} void read()
{
for(int i=0;i<n;++i)
scanf("%d",a+i);
} int main()
{ ///freopen("UVA-10570 Meeting with Aliens.txt","r",stdin);
while(scanf("%d",&n)&&n)
{
read();
solve();
}
return 0;
}
UVA-10570 Meeting with Aliens (枚举+贪心)的更多相关文章
- UVA - 10570 Meeting with Aliens(外星人聚会)(暴力枚举)
题意:输入1~n的一个排列(3<=n<=500),每次可以交换两个整数.用最少的交换次数把排列变成1~n的一个环状序列. 分析:正序反序皆可.枚举每一个起点,求最少交换次数,取最小值. 求 ...
- UVA 10570 Meeting with Aliens
题意: N个外星人围成一桌坐下,有序的排列指N在N-1与N+1中间,现在给出一个序列,问至少交换几次可以得到有序的序列. 分析: 复制一遍输入序列,放在原序列之后.相当于环.通过枚举,可以把最小交换次 ...
- UVA - 10570 Meeting with Aliens (置换的循环节)
给出一个长度不超过500的环状排列,每次操作可以交换任意两个数,求把这个排列变成有序的环状排列所需的最小操作次数. 首先把环状排列的起点固定使其成为链状排列a,枚举排好序时的状态b(一种有2n种可能) ...
- UVA 10570 Meeting with Aliens 外星人聚会
题意:给你一个排列,每次可以交换两个整数(不一定要相邻),求最少交换次数把排列变成一个1~n的环形排列.(正反都算) 其实就是找环了,对于一个链状序列,最小交换次数等于不在对应位置的数字个数减去环的个 ...
- UVa 10570 Meeting with Aliens (暴力)
题意:给定一个排列,每次可交换两个数,用最少的次数把它变成一个1~n的环状排列. 析:暴力题.很容易想到,把所有的情况都算一下,然后再选出次数最少的那一个,也就是说,我们把所有的可能的形成环状排列全算 ...
- Uva 11729 Commando War (简单贪心)
Uva 11729 Commando War (简单贪心) There is a war and it doesn't look very promising for your country. N ...
- D. Diverse Garland Codeforces Round #535 (Div. 3) 暴力枚举+贪心
D. Diverse Garland time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- UVA 1508 - Equipment 状态压缩 枚举子集 dfs
UVA 1508 - Equipment 状态压缩 枚举子集 dfs ACM 题目地址:option=com_onlinejudge&Itemid=8&category=457& ...
- UVA.12716 GCD XOR (暴力枚举 数论GCD)
UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 ...
随机推荐
- SQL---->mySQl安装for mac
我安装是参考如下两篇博客,但是有些不同,这里写好参考来源: http://blog.csdn.net/li_huifeng/article/details/9449685 http://www.jia ...
- 怎么将Android的API demo导入到Eclipse工作区中
File ->New Android Project 选择Create project from existing sample (不同Android版本有对应的ApiDemo示例).
- formset批量处理form表单数据
Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据 class StudentStudyRecordModel( ...
- Python小功能汇总
1.没有文件夹就新建 适用以下3种情况. (1)文件夹适用 (2)相对路径适用 (3)绝对路径适用 # 判断输出文件夹是否存在.不存在就创建 # 1.output_dir为绝对路径 if os.pat ...
- 纯css3加载动画
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta name= ...
- mysql 数据操作 多表查询 子查询 带比较运算符的子查询
带比较运算符的子查询 #比较运算符:=.!=.>.>=.<.<=.<> #查询大于所有人平均年龄的员工名与年龄 思路 先拿到所有人的平均年龄然后 再用另外一条sql ...
- 001-Spring的设计理念和整体架构
一.概述 1.1.Spring的各个子项目 网站:https://spring.io/ 基于Spring的项目:https://spring.io/projects 文档列表:https://spri ...
- 23.如何查看一个keystore的具体签名信息
keytool -list -v -keystore zhangzu.keystore
- C#+GDAL读取影像(1)
环境:VS2010,C#,GDAL1.7 读取影像: using System; using System.Collections.Generic; using System.ComponentMod ...
- android唯一设备标识、设备号、设备ID的获取方法
##如何获取Android设备唯一ID? ###问题 每一个android设备都有唯一ID吗?如果有?怎么用java最简单取得呢? ###回答1(最佳) 如何取得android唯一码? 好处: 1.不 ...