链接:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1511

题意:

输入1~n的一个排列(3≤n≤500),每次可以交换两个整数。用最少的交换次数把排列变成1~n的一个环状排列。

分析:

莫名奇妙地AC了。。。方法是枚举起点,然后把数字逐个地安排到正确的位置。但为什么把1作为起点会错呢?

代码:

 1 #include <cstdio>
 2 #include <deque>
 3 #include <algorithm>
 4 using namespace std;
 5
 6 int solve(int n, deque<int> Q){
 7     int res = 0, p[500+5]; //p[i]为数字i在Q中的位置
 8     for(int i = 0; i < n; i++) p[Q[i]] = i;
 9     for(int i = 0; i < n; i++){
10         if(Q[i] == i + 1) continue;
11         p[Q[i]] = p[i+1];
12         swap(Q[i], Q[p[i+1]]);
13         res++;
14     }
15     return res;
16 }
17
18 int main(){
19     int n;
20     while(scanf("%d", &n) && n){
21         deque<int> Q;
22         for(int v, i = 0; i < n; i++){
23             scanf("%d", &v);
24             Q.push_back(v);
25         }
26         int ans = 1234567890;
27         for(int i = 0; i < n; i++){
28             Q.push_back(Q.front());
29             Q.pop_front();
30             ans = min(ans, solve(n, Q));
31         }
32         reverse(Q.begin(), Q.end());
33         for(int i = 0; i < n; i++){
34             Q.push_back(Q.front());
35             Q.pop_front();
36             ans = min(ans, solve(n, Q));
37         }
38         printf("%d\n", ans);
39     }
40     return 0;
41 }

转载于:https://www.cnblogs.com/hkxy125/p/8531253.html

UVa 10570 - Meeting with Aliens相关推荐

  1. UVA 10570 Meeting with Aliens

    UVA_10570 一开始没有理解题目中所说的exchange positions,还以为只有相邻的才能换,后来发现不相邻的也可以换. 第一次AC的时候有点YY的味道,但后来想了一下,确实这么做是可以 ...

  2. uva 10570—— Meeting with Aliens

    题意:n个外星人坐在一起,然后问通过交换多少次位置可以使正向或者反向是一个有序的序列. 思路:把n个外星人延长到2*n(因为有环),然后在1的位置上放1,2的位置放2,反向的话让序列倒过来重新操作一下 ...

  3. uva 10570——Meeting with Aliens

    题意:输入1-n的排列,每次可以交换两个整数.用最少的次数把排列变成1-n的环状序列. 思路:枚举+贪心.依次枚举环上所有的点,正序一遍,倒序一遍,然后贪心求的所需的最小步数(贪心策略是1与1号交换, ...

  4. UVA 10570 Meeting with Aliens (枚举)

    分析:枚举序列起点和升降顺序,我写的很暴力,没有什么优化的地方... #include <iostream> #include <cstdio> #include <cs ...

  5. ACM 暴力枚举 Meeting with Aliens

    滴,集训第十天打卡. 终于认认真真的写了一天!!!可喜可贺啊~~~ 今天的训练算是有耐心都能写出来的,所以这里贴一题我首A的吧~~~ UVA 10570  Meeting with Aliens  题 ...

  6. UVA10570 Meeting with Aliens【数学计算】

    The aliens are in an important meeting just before landing on the earth. All the aliens sit around a ...

  7. 习题 8-13 外星人聚会(Meeting with Aliens, UVa10570)

    原题链接:https://vjudge.net/problem/UVA-10570 分类:枚举法 备注:剪枝 O(n^3)也能过,数据比较水,不过加个数组可以优化到O(n^2) #include< ...

  8. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  9. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

最新文章

  1. 数据结构与算法:19 排序
  2. 物种丰度排序堆积柱形图及处理间各物种差异分析
  3. PHP中类和文件的代码注释规范
  4. [Qt教程] 第21篇 数据库(一)Qt数据库应用简介
  5. SecureCRT报错ImportError: No module named itertools(解决方案无法复现)
  6. HUE 提交Schedule 时区问题
  7. jquery之bind(),live(),delegate()
  8. Linq-插入insert
  9. UVALive5461 UVA615 POJ1308 Is It A Tree?(解法二)【废除!!!】
  10. linux下,如何迁移mysql数据库存放目录。利用软连接简单快捷实现移动到home数据盘下...
  11. LINUX用户执行过的命令,保存在.bash_history
  12. 湖南联通云计算与IDC掀发展浪潮
  13. java texttospeech_TextToSpeech 文本自动朗读
  14. docker搭建php环境
  15. 笔记本计算机bios设置,联想笔记本BIOS设置详解
  16. 2019哪里可以进行高层次人才扶持政策申报?
  17. 无人驾驶带动激光雷达降价,考古学家“拖了千年的作业”有指望了
  18. 青帮大佬杜月笙的另一面及其后代现状
  19. mysql数据库名词术语_【千寻】MySQL数据库名词注释(持续更新)
  20. oracle 10g alter system reset,《深入浅出Oracle》勘误表

热门文章

  1. Gitlab 从 12.1 版本开始将不再支持 MySQL !!!
  2. 前后端开发的心得体会_社招后端三面总结以及学习经验感言(操详细)
  3. springboot+前端实现文件(图片)上传到指定目录
  4. java jobdetail_Spring创建JobDetail的两种方式
  5. linux下编译webkit,ubuntu下编译webkit
  6. js给php赋值,JavaScript_javascript给span标签赋值的方法,js给span标签赋值的方法?一般 - phpStudy...
  7. doe全称是什么意思_QA、QC、QE…都是什么意思
  8. python 彩票分析_294期钱哥福彩3D预测奖号:杀号分析
  9. eggjs增删改查MySQL_egg-sequelize 实现 增删改查
  10. php唯一索引,索引唯一性扫描(INDEX UNIQUE SCAN)