【UESTC 1523 我想上厕所】

我想上厕所

Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)

Submit Status

正如地球上有三种性别的人(男、女、秀吉),需要三种厕所。EX星也是,这里有n个性别,每个性别对应一个厕所,性别i对应厕所i。

现在所有的n种厕所按1、2、3……n的顺序围成一个圈(每种一个),每个厕所都有一个人(保证n个性别的人都正好有一个),每个厕所只能一个人用,有些人上对了厕所,有些人上错了厕所。

你的任务是让每个人都上对厕所,你只可以交换相邻厕所(i号厕所和i+1号、1号和n号)位置的人,问题是你最少需要进行多少次这样的操作。

保证最多只有3个人上错厕所。

Input

第一行一个整数n(1≤n≤233) n(1≤n≤233),表示厕所个数。接下来一行有n个整数表示第i号厕所的人的性别。

Output

每组数据输出一行表示最少操作数。

Sample input and output

Sample Input

Sample Output

1
1 0
4
4 2 3 1 1
5
2 4 3 1 5 4

Source

第八届ACM趣味程序设计竞赛第二场(正式赛)

最多三个不一样的:

1)都一样 : 0
2)两个不一样 : 距离 × 2 - 1
3)三个不一样 : 找到中间那个错的位置,找到最中间的数对应的正确位置,因为三个位置错的,必定对应其中的一个,而交换后,剩余的两个在做交换即可~每次换后都需要把原来正确位置的数移动回去~所有每次的代价为 距离 × 2 - 1

AC代码:

#include<cstdio>
#include<algorithm>
using namespace std;
int a[4],s[4];
int main()
{
    int N,b,nl = 0;
    scanf("%d",&N);
    for(int i = 1; i <= N; i++){
        scanf("%d",&b);
        if(b != i) a[++nl] = i;
    }
    if(nl == 0) printf("0\n");
    else if(nl == 3){
        int sum12 = min(a[2] - a[1],N - a[2] + a[1]);
        int sum13 = min(a[3] - a[1],N - a[3] + a[1]);
        int sum23 = min(a[3] - a[2],N - a[3] + a[2]);
        s[1] = sum12 * 2 - 1 + sum13 * 2 - 1;
        s[2] = sum12 * 2 - 1 + sum23 * 2 - 1;
        s[3] = sum13 * 2 - 1 + sum23 * 2 - 1;
        sort(s + 1,s + 1 + 3);
        printf("%d\n",s[1]);
    }
    else{
        int ans = min(a[2] - a[1],N - a[2] + a[1]);
        printf("%d\n",ans * 2 - 1);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值