//
// main.cpp
// uva 10570 - Meeting with Aliens
//
// Created by XD on 15/8/17.
// Copyright (c) 2015年 XD. All rights reserved.
//
/*
这题我也是醉了,看错题了,一位只能相邻的可以交换,害的我好久没想出来。
现在时任意两个都可以交换,那么就好做了。
只要暴力枚举1的位置和形成环的方向,就可以完成了。
*/
#include <iostream>
#include <string>
#include <queue>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<vector>
#include <string.h>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <cstdio>
using namespace std ;
const int maxn = 500 + 10 ;
int pos[maxn] ;
int t_pos[maxn] ;
int t_aliens[maxn] ;
int aliens[maxn] ;
int n ;
int min(int x , int y)
{
return x > y ? y:x ;
}
void Myswap(int x,int destination)
{
int temp = t_aliens[destination] ;
t_aliens[destination] = x ;
t_aliens[t_pos[x]] = temp ;
t_pos[temp] = t_pos[x] ;
t_pos[x] = destination ;
}
int getNextPos(int start , int i ,int way)
{
if (way == 0) {
return (start + i - 1)%n ;
}
else{
int t = (start - i +1)% n ;
if (t < 0) {
return t + n ;
}
else{
return t ;
}
}
}
int solved(int start)
{
int ans =1010 ;
for (int way = 0; way < 2; way++) {
memcpy(t_pos, pos, sizeof(int) * n + 5) ;
memcpy(t_aliens, aliens, sizeof(int )* n + 5) ;
int tans = 0 ;
for (int i = 1; i <= n ; i++) {
int destination = getNextPos(start ,i,way) ;
if (t_pos[i] == destination) {
continue ;
}
else{
Myswap(i, destination) ;
tans++ ;
}
}
ans =min(ans ,tans) ;
}
return ans ;
}
int main() {
while (scanf("%d" ,&n) , n) {
for (int i = 0; i < n; i++) {
scanf("%d" ,&aliens[i]) ;
pos[aliens[i]] = i ;
}
//枚举起点
int ans = 1010 ;
for (int i = 0; i < n ; i++) {
ans = min(solved(i) , ans) ;
if (ans == 0 ) {
break ;
}
}
printf("%d\n" ,ans) ;
}
return 0;
}
相关推荐
Tiff、jpg图片怎么样添加地理坐标信息
Tiff、jpg图片怎么样添加地理坐标信息 一般,外业调查只有地图资料,如专题图、或者地形图,如何把这些地图资料的扫描地图带上坐标信息,从而内业实现信息化处理?以上问题,可以解决,但根据不同情况有不同的处理方法。 第一种,上面有经纬度外框,图片是矩形,但是没有地理信息。 通过图框的两个角的坐标确定范围,分别是左上(140°E,30°N);右下(150°W,30°N) 解决方
uva 10570 - Meeting with Aliens
题目链接:uva 10570 - Meeting with Aliens 题目大意:有n个外星人,然后给出他们的序号,问说最少交换几次使得n个外星人形成有序的序列。 解题思路:参考别人的思路,每次交换位置1和1的,然后位置2和2.....这样交换的次数最少。 #include #include #define min(a,b) (a)<(b)?(a):(b)
Windows安装ros2(Jazzy版本+win10/win11)-1.配置windows终端
更高版本的terminal可能设置里更加丰富, 有默认以管理员身份启动的选项等,可自行配置。打开微软应用商店, 在其中搜索并下载 Terminal 即可(注意别挂梯子)下载并安装, 安装的位置自行替换,建议别放到系统盘中。点击任务栏中的搜索, 输入store。
UVA - 10570 Meeting with Aliens (置换的循环节)
给出一个长度不超过500的环状排列,每次操作可以交换任意两个数,求把这个排列变成有序的环状排列所需的最小操作次数。 首先把环状排列的起点固定使其成为链状排列a,枚举排好序时的状态b(一种有2n种可能),则b可以看成是原状态a的一个置换,把a变为b所需的最小交换次数即为a的长度n减去置换循环节的数量。 1 #include<bits/stdc++.h> 2 3 usi...
安卓直链APK安装拦截全解析:从Play Protect到厂商管控的应对指南
在移动应用分发领域,APK(Android Package)安装是开发者与用户交互的关键环节。其核心原理涉及安卓系统的安全沙箱机制与权限管理体系,旨在保护用户设备免受恶意软件侵害。这一机制的技术价值在于平衡了应用生态的开放性与安全性,但也在应用推广、企业内部分发等场景中带来了挑战。尤其在通过官网、广告等直链渠道分发APK时,常会遇到安装转化率骤降的问题。这背后主要受到Google Play Protect云端扫描、安卓系统安装权限模型演进(如Android 8.0+的安装源授权)以及设备制造商附加安全层(如
CST STUDIO SUITE 2023安装
破解工具的Crack文件夹内有一个名为「CST Studio Suite 2022」的文件夹,这也是于CST的安装目录同名的文件夹,直接把它拷贝到CST Studio Suite 2022的同级路径下即可,比如你的CST安装路径为:D:\Program Files\CST Studio Suite 2022,则将Crack目录内的「CST Studio Suite 2022」文件夹复制到 D:\Program Files\ 这个级别的路径下即可。软件百度网盘链接放在文章末尾啦!先不着急启动CST或者激活。
uva10570---外星人聚会(meeting with aliens)
这道题刚开始做的时间没有思路,后来看了别人的思路后,写了自己的代码。 举例介绍:有向环 比如一组数据{5,4,3,2,1}; 如果按照正向排序,各个位置的下标为1,2,3,4,5,那么有向环为{5,1}{4,2}{3}一个3个。 思路:其实本道题就是找有向环,假如说有向环的数量为m,则需要交换的次数就为Array.size - m.同时本道题应该分为顺时针编号和逆时针编号,分别假定各个位置为
数据仓库数据质量监控和处理方法最佳实践
指的是检查数据是否存在反常或者错误的情况,例如数值反常地过大或者过小,或者超过记录的波动值,对应的规则包括数值波动检查,最大值、最小值检查,跨表准确性等。指的是检查数据是否存在缺失的情况,这里的缺失可以是整个数据集的记录缺失,也可以是某个字段记录的缺失,对应的规则包括空值检查,表总行数检查。指的是检查数据是否符合规范,是否按照规定的格式存储,对应的规则包括正则表达式检查,字段长度检查,枚举集合检查,数值范围等。指的是检查哪些数据是重复数据或者数据的哪些属性是重复的,对应的规则例如主键唯一性检查。
UVa - 10570 - Meeting with Aliens
对于n个数字,调整成从大到小或者从小到大,操作数都不超过n,每一次操作至少有一个数字放到正确的位置。 枚举起点还有序列正反,求出最小的交换次数。 求交换次数的时候用贪心思想,先把1交换到1,再把2交换到2。。。
ROS & ROS2 机器人深度相机激光雷达多传感器标定工具箱
不过,多传感器标定工具箱允许通过编辑 yaml 文件来调整标定目标的参数: <repository>/mutlisensor_calibration/cfg/TargetWithCirclesAndAruco.yaml%YAML:1.0rows: 4cols: 1dt: irows: 4cols: 2dt: frows: 1cols: 12dt: fCAD 模型网格/云通过 GICP 将模型数据与分割点云对齐,用于优化检测到的目标姿态。
POCV/SOCV 、LVF的差别
1.POCV与OCV、AOCV 为了模拟片上PVT的差异带来的影响,最早提出了OCV(On Chip Variation)给每个cell都设置一个固定的derate值,来覆盖最悲观的情况,但是随着工艺发展,设计规模增大,OCV过度的悲观开始限制性能,于是又有了AOCV(Advanced On Chip Variation),用基于depth和distance的derate来取代单一的全局的derate值,但时序收敛的过程中逻辑级数depth的变化让时序分析的时间变得非常长,由此POCV诞生了。 POCV
UVA 10570 Meeting with Aliens
题意:没想到怎么移动才能达到最小,参考了:点击打开链接 #include #include #include using namespace std; int a[5555],b[555],n; bool mark[555]; int calcu(int cur){ int ans = 0; for (int i = 1; i <= n; i++) ma
Python数据可视化 Pyecharts 制作 Map 地图
大家好,我是Mr数据杨。想象一下,作为一名军师,如诸葛亮或郭嘉,'Map’就如同那战争的沙盘,兵马行动的轨迹,都需要准确的地图作为基础。‘基本设置’,就如同摆设这张战争沙盘,规定棋子的起始位置。‘数据配置选项’和’地图数据项’,就好比是军师们手中的情报,了解各路诸侯的兵力、粮草、地形等重要信息,以便于他们更好地布局。‘Demo’则代表着练兵之地,军师们可以在此基于已有数据,试验各种战术。
UVA10570 Meeting with Aliens【数学计算】
The aliens are in an important meeting just before landing on the earth. All the aliens sit around a round table during the meeting. Aliens are numbered sequentially from 1 to N. It’s a precondition of the meeting that i’th alien will sit between (i − 1)’t
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
UVA 10570 Meeting with Aliens 【枚举+结论题】
题目链接 题意 给一串环形序列(首尾相连),可以进行交换任意两个数的操作。问最少进行多少步这样的操作能够使得整个序列的顺序正常(即从序列中的1开始,顺时针或逆时针相邻递增) 分析 首先这个题有一个简单的结论,如果要通过两两交换使得一种排列变为另一种排列,最少的方式是从最左边开始扫描一遍,若当前这个数跟目标排列不一样,就把它从后面交换过来。 那么这个题就很...
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
UVa 10570 Meeting with Aliens(思路)
题目链接:http://vjudge.net/problem/UVA-10570 大意:给你一个由1-n组成的环状序列,每次可以交换任意两个数,用最少的交换次数将其变为1-n的环状排列。 思路:可以直接枚举1所在的位置,对于每个位置,排列有顺时针排列和逆时针排列,分别计算一下即可。详见代码 #include #include #include #include #in
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
uva 10570—— Meeting with Aliens
题意:n个外星人坐在一起,然后问通过交换多少次位置可以使正向或者反向是一个有序的序列。 思路:把n个外星人延长到2*n(因为有环),然后在1的位置上放1,2的位置放2,反向的话让序列倒过来重新操作一下即可。 code: #include #include #include #include #include #include #include #include
Meeting with Aliens UVA - 10570
循环队列相关问题的一种处理方法是将数组的长度开为原来的两倍,并且将数组复制,假设数组之前的长度是N,同时假设下标是从1开始的,那么后面的处理也只需要从1一直N,向后面处理N个数字也就可以了。同时注意到这个题目中,既可以选择某一个数字顺时针走,同时也可以逆时针走,所以我们在处理的时候也就需要处理两轮,首先是顺着处理一轮然后是逆着处理一轮。每次选择某一个点为起始点,求解出从这个点开始按照当前的方向,交
UVA 10570 Meeting with Aliens
大意:N个外星人围成一桌坐下,有序的排列指N在N-1与N+1中间,现在给出一个序列,问至少交换几次可以得到有序的序列。 思路:不管结果如何,我们可以假设最终的序列是以某个外星人为起点的有序序列,既然如此,我们可以构造另一个序列,把原来的外星人长度增加一倍,这样一来,原序列一定是这个构造序列的子序列。然后通过枚举,可以把最小交换次数求出来。继而解决下一个问题:如何求最小的交换次数?我们可以把1与1
UVA10570 外星人聚会 Meeting with Aliens(排列交换 + 结论)
UVA10570 外星人聚会 Meeting with Aliens 题意: 输入1~n的一个序列 (3≤n≤500)(3\leq n\leq500)(3≤n≤500) ,每次可以交换两个整数。用最少的交换次数把排列变成1~n的一个环形排列。 思路: 枚举以每个点为1号点。每次数有多少个环cnt。ans=n-cnt #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=2e5+5; co
UVa 10570 外星人聚会(Meeting with Aliens)
题意: 输入一个“1 - n的排列,每次可以脚环两个整数。用最少的交换次数把列变成1 - n的一个环状序列。 看这个数据量就知道啦,算法可以很暴力。于是我就很暴力 分析: 暴力暴力暴力,左一下右一下。 #include<bits/stdc++.h> #define LL long long #define INF 0X7fffffff #define ms(s) memset(s, 0...
UVA 10570 Meeting with Aliens (枚举)
分析:枚举序列起点和升降顺序,我写的很暴力,没有什么优化的地方。。。 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <map> #include <vect...
UVA 10570 meeting with aliens
#include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <stack> #include <queue> #inclu...
uva10570 Meeting with Aliens
先证明把每次i放到i位置最后次数最少:感觉,可以,用归纳法? //在序列后再加一个相同的序列,就可以模拟用各个数字开头的情况了每个位置不对的只需要换一次54123 ,5固定->41235变成12345 任何一个数固定不变,都相当于从这种情况对应的1所在的位置开始排一遍12345.(例如54123 ,5固定->41235变成12345)所以只需要每个位置开始都判断变成123...
UVA - 10570 Meeting with Aliens 暴力
题目大意:有n个外星人要开园桌会议,外星人的编号由1到n,要求编号为i的外星人的相邻位置必须坐着编号为i-1和编号为i+1的外星人。 现在给出n个外星人坐在圆桌上的顺序,要求你经过最少次交换(交换是两个外星人交换所坐位置),使得所有外星人坐法都符合上诉规则。解题思路:枚举每个外星人坐的位置,假设该位置坐的必须是编号为1的外星人,然后编号从左递增或者递减,最后检查该安排需要交换几次外星人 如果该外
UVA10570 Meeting with Aliens(枚举/优化)
题目链接 1.题目大意:输入一个1-n的排列,每次可以交换任意位置的两个数,求最少将排列变成1-n的一个环状序列的交换次数 2.这个题目找不到什么规律的,也就是没有可行的算法解决,那么只能采用暴力解法,枚举每个数字开头的环状序列。简单模拟一下,不难发现每个数对应的环状序列都有两种,而且排列都可以分成两个部分,对于数字k开头的环状序列有以下两种: {k,k+1,…,n} + {1,2,…,k-...
2万+



被折叠的 条评论
为什么被折叠?



