P1459 三值的排序 Sorting a Three-Valued Sequence

    • 166通过
    • 369提交
  • 题目提供者该用户不存在
  • 标签USACO
  • 难度普及-

提交  讨论  题解

最新讨论

  • 那么

题目描述

排序是一种很频繁的计算任务。现在考虑最多只有三值的排序问题。一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候。在这个任务中可能的值只有三种1,2和3。我们用交换的方法把他排成升序的。

写一个程序计算出,给定的一个1,2,3组成的数字序列,排成升序所需的最少交换次数

输入输出格式

输入格式:

第一行:

奖牌个数N (1 <= N <= 1000)

第 2行到第N+1行:

每行一个数字,表示奖牌。共N行。(1..3)

输出格式:

共一行,一个数字。表示排成升序所需的最少交换次数。

输入输出样例

输入样例#1:

  1. 9
  2. 2
  3. 2
  4. 1
  5. 3
  6. 3
  7. 3
  8. 2
  9. 3
  10. 1
输出样例#1:

  1. 4

说明

USACO 2.1

翻译来自NOCOW

分析:可以先把目标状态求出来,如果1在2里面,而2在1里面,可以想到通过一次交换就可以,也就是如果两个数分别在对应的数的位置,那么通过一次变换就可以,通过枚举记录下来,然后剩下的怎么办呢?可以知道每3个数通过2次变换就能到达任意位置,那么把所有要交换的数加起来,用公式求即可.

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int n, a[],num1,num2,num3,num[][],ans;
  9.  
  10. int main()
  11. {
  12. scanf("%d", &n);
  13. for (int i = ; i <= n; i++)
  14. {
  15. scanf("%d", &a[i]);
  16. if (a[i] == )
  17. num1++;
  18. if (a[i] == )
  19. num2++;
  20. if (a[i] == )
  21. num3++;
  22. }
  23. for (int i = ; i <= n; i++)
  24. {
  25. if (i <= num1 && a[i] != )
  26. num[][a[i]]++;
  27. if (i > num1 && i <= num2 + num1 && a[i] != )
  28. num[][a[i]]++;
  29. if (i > num2 + num1 && i <= n && a[i] != )
  30. num[][a[i]]++;
  31. }
  32. /*
  33. for (int i = 1; i <= 3; i++)
  34. for (int j = 1; j <= 3; j++)
  35. {
  36. printf("%d %d %d\n",i,j ,num[i][j]);
  37. }
  38. */
  39.  
  40. for (int i = ; i <= ; i++)
  41. for (int j = ; j <= ; j++)
  42. if (i != j)
  43. {
  44. int t = min(num[i][j], num[j][i]);
  45. num[i][j] -= t;
  46. num[j][i] -= t;
  47. ans += t;
  48. }
  49. int temp = ;
  50. for (int i = ; i <= ; i++)
  51. for (int j = ; j <= ; j++)
  52. if (i != j)
  53. temp += num[i][j];
  54. ans += (temp * / );
  55. printf("%d\n", ans);
  56.  
  57. return ;
  58. }

洛谷P1459 三值的排序 Sorting a Three-Valued Sequence的更多相关文章

  1. 洛谷 P1459 三值的排序 Sorting a Three-Valued Sequence

    P1459 三值的排序 Sorting a Three-Valued Sequence 题目描述 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者 ...

  2. P1459 三值的排序 Sorting a Three-Valued

    题目描述 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排成升 ...

  3. 三值的排序 Sorting a Three-Valued Sequence(洛谷 P1459USACO2.1,IOI96Day2)

    Sorting a Three-Valued Sequence IOI'96 - Day 2 Sorting is one of the most frequently performed compu ...

  4. 洛谷 Sorting a Three-Valued Sequence 三值的排序

    Description 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌序的时候. 在这个任务中可能的值只有三种1,2和3.我们用交换的 ...

  5. Sorting a Three-Valued Sequence(三值的排序)

    Description 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌序的时候. 在这个任务中可能的值只有三种1,2和3.我们用交换的 ...

  6. 洛谷 P1056 排座椅 桶排序

    桶排序大法好! 每次一看到这种范围小的题,本萌新就想用桶排. 因为题目中的m,n都小于1000,我们就可以定义两个1000的数组,表示每一行或每一列可以隔开几对讲话的童鞋. 然后再定义两个1000的数 ...

  7. 【USACO 2.1.3】三值的排序

    [题目描述] 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排 ...

  8. 洛谷 1155 (NOIp2008)双栈排序——仔细分析不合法的条件

    题目:https://www.luogu.org/problemnew/show/P1155 这道题教会我们要多思考. 好好分析过后发现同一个栈里不能有升序.就用它写了一个30分. #include& ...

  9. 洛谷P2597 [ZJOI2012] 灾难 [拓扑排序,LCA]

    题目传送门 灾难 题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. ...

随机推荐

  1. 我的wordpress插件总结

    酷壳(CoolShell.cn)WordPress的插件 注意: 下面的这些插件的链接是其插件主页的链接,你可以在WordPress后台管理中添加插件时直接搜索安装就可以了. 插件不是越多越好.WP的 ...

  2. Swing多线程

    Swing的单线程开发机制 多线程开发,显然要比单线程开发有趣.高效.美妙得多.特别是在Java这种天生支持多线程的语言中,更是如此.可是,Java最重要的组成部分Swing确是单线程的! 并非只有S ...

  3. MVC 安装

    mvc 4 支持window xp,window 7,window 8, mvc 4 支持vs2010,vs2012 vs2012中包含mvc4; vs2010中需要安装mvc4 安装包:

  4. .Net下实现可扩展的编程方法简述

    IoC控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则用来解决系统耦合问题. 控制反转还有一个名字叫做依赖注入(DI:Dependency Inje ...

  5. 转-封装网络请求库,统一处理通用异常 (基于volley网络请求库)

    http://blog.csdn.net/kroclin/article/details/40540761 一.前言 volley的发布让网络请求也变得十分便利,但是我们通常懒得很想用一两句代码实现一 ...

  6. C++学习13 类class和结构体struct的区别

    C++保留了C语言的 struct,并且加以扩充.在C语言中,struct 只能包含数据成员,不能包含成员函数.而在C++中,struct 类似于 class,既可以包含数据成员,又可以包含成员函数. ...

  7. [Java] 读写字节数据,过滤流DataOutputStream和DataInputStream

    package test.stream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io ...

  8. 一些BOOTSTRAP的问题

    老师好,有几个点不是很明白,劳烦老师帮忙解惑 <1>不是特别清楚nav和navbar的区别,视频中用的是nav标签,而class则标明navbar,是不是这里的nav其实没有什么作用,而c ...

  9. 有没有一行文件字过多后可以省略号显示,我说的不是用其他样式,BT本身有没有?谢谢

    .text-overflow {display: inline-block;max-width: 200px;overflow: hidden;text-overflow: ellipsis;whit ...

  10. esriSRGeoCSType Constants

    ArcGIS Developer Help  (Geometry)     esriSRGeoCSType Constants See Also esriSRGeoCS2Type Constants ...