UVa 10570 - Meeting with Aliens
链接:
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相关推荐
- UVA 10570 Meeting with Aliens
UVA_10570 一开始没有理解题目中所说的exchange positions,还以为只有相邻的才能换,后来发现不相邻的也可以换. 第一次AC的时候有点YY的味道,但后来想了一下,确实这么做是可以 ...
- uva 10570—— Meeting with Aliens
题意:n个外星人坐在一起,然后问通过交换多少次位置可以使正向或者反向是一个有序的序列. 思路:把n个外星人延长到2*n(因为有环),然后在1的位置上放1,2的位置放2,反向的话让序列倒过来重新操作一下 ...
- uva 10570——Meeting with Aliens
题意:输入1-n的排列,每次可以交换两个整数.用最少的次数把排列变成1-n的环状序列. 思路:枚举+贪心.依次枚举环上所有的点,正序一遍,倒序一遍,然后贪心求的所需的最小步数(贪心策略是1与1号交换, ...
- UVA 10570 Meeting with Aliens (枚举)
分析:枚举序列起点和升降顺序,我写的很暴力,没有什么优化的地方... #include <iostream> #include <cstdio> #include <cs ...
- ACM 暴力枚举 Meeting with Aliens
滴,集训第十天打卡. 终于认认真真的写了一天!!!可喜可贺啊~~~ 今天的训练算是有耐心都能写出来的,所以这里贴一题我首A的吧~~~ UVA 10570 Meeting with Aliens 题 ...
- UVA10570 Meeting with Aliens【数学计算】
The aliens are in an important meeting just before landing on the earth. All the aliens sit around a ...
- 习题 8-13 外星人聚会(Meeting with Aliens, UVa10570)
原题链接:https://vjudge.net/problem/UVA-10570 分类:枚举法 备注:剪枝 O(n^3)也能过,数据比较水,不过加个数组可以优化到O(n^2) #include< ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- 提取了下刘汝佳推荐的题号...
今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started 10055 - Hashmat the Brave Warrior ...
最新文章
- 数据结构与算法:19 排序
- 物种丰度排序堆积柱形图及处理间各物种差异分析
- PHP中类和文件的代码注释规范
- [Qt教程] 第21篇 数据库(一)Qt数据库应用简介
- SecureCRT报错ImportError: No module named itertools(解决方案无法复现)
- HUE 提交Schedule 时区问题
- jquery之bind(),live(),delegate()
- Linq-插入insert
- UVALive5461 UVA615 POJ1308 Is It A Tree?(解法二)【废除!!!】
- linux下,如何迁移mysql数据库存放目录。利用软连接简单快捷实现移动到home数据盘下...
- LINUX用户执行过的命令,保存在.bash_history
- 湖南联通云计算与IDC掀发展浪潮
- java texttospeech_TextToSpeech 文本自动朗读
- docker搭建php环境
- 笔记本计算机bios设置,联想笔记本BIOS设置详解
- 2019哪里可以进行高层次人才扶持政策申报?
- 无人驾驶带动激光雷达降价,考古学家“拖了千年的作业”有指望了
- 青帮大佬杜月笙的另一面及其后代现状
- mysql数据库名词术语_【千寻】MySQL数据库名词注释(持续更新)
- oracle 10g alter system reset,《深入浅出Oracle》勘误表
热门文章
- Gitlab 从 12.1 版本开始将不再支持 MySQL !!!
- 前后端开发的心得体会_社招后端三面总结以及学习经验感言(操详细)
- springboot+前端实现文件(图片)上传到指定目录
- java jobdetail_Spring创建JobDetail的两种方式
- linux下编译webkit,ubuntu下编译webkit
- js给php赋值,JavaScript_javascript给span标签赋值的方法,js给span标签赋值的方法?一般 - phpStudy...
- doe全称是什么意思_QA、QC、QE…都是什么意思
- python 彩票分析_294期钱哥福彩3D预测奖号:杀号分析
- eggjs增删改查MySQL_egg-sequelize 实现 增删改查
- php唯一索引,索引唯一性扫描(INDEX UNIQUE SCAN)