题目描述

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

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

输入输出格式

输入格式:

第一行:

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

第 2行到第N+1行:

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

输出格式:

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

输入输出样例

输入样例#1:

9
2
2
1
3
3
3
2
3
1

输出样例#1:

4---------------------------------------------------------一开始以为和P1327数列排序差不多,结果人家是每个元素不同用贪心即可,Cij表示i中有几个j,先考虑两两交换,再考虑三个数换两次
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1005;
int n,a[N],c[4][4],cnt[4],ans=0;
int main(){scanf("%d",&n);for(int i=1;i<=n;i++) {scanf("%d",&a[i]);cnt[a[i]]++;}for(int i=1;i<=cnt[1];i++) c[1][a[i]]++;for(int i=cnt[1]+1;i-cnt[1]<=cnt[2];i++) c[2][a[i]]++;for(int i=cnt[1]+cnt[2]+1;i-cnt[1]-cnt[2]<=cnt[3];i++) c[3][a[i]]++;int swp=min(c[1][2],c[2][1]);c[1][2]-=swp;c[2][1]-=swp;ans+=swp;swp=min(c[1][3],c[3][1]);c[1][3]-=swp;c[3][1]-=swp;ans+=swp;swp=min(c[2][3],c[3][2]);c[2][3]-=swp;c[3][2]-=swp;ans+=swp;ans+=(c[1][2]+c[1][3]+c[2][1]+c[2][3]+c[3][1]+c[3][2])/3*2;cout<<ans;
}

 

转载于:https://www.cnblogs.com/candy99/p/5793044.html

USACO Sorting a Three-Valued Sequence相关推荐

  1. usaco Sorting a Three-Valued Sequence 三值的排序

    一开始想贪心,但是一想这是搜索章节应该用bfs?(为什么这么想看我上一个usaco的题目),,,,,,,,,,结果我贪心做出来了.然后我百度一下了别人做的好像么没人用bfs我不知道可不可以做出来. 思 ...

  2. USACO / Sorting a Three-Valued Sequence (简单题,方法正确性待证)

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

  3. python设置堆大小_Python中的堆问题

    Heap in python 堆(英语:Heap)是计算机科学中一类特殊的数据结构的统称.堆通常是一个可以被看做一棵树的数组对象.在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时 ...

  4. USACO Section 2.1 Sorting a Three-Valued Sequence 解题报告

    题目 题目描述 给N个整数,每个整数只能是1,2,或3.现在需要对这个整数序列进行从小到大排序,问最少需要进行几次交换.N(1 <= N <= 1000) 样例输入 9 2 2 1 3 3 ...

  5. Sequence Sorting CodeForces - 1223D(思维)

    You are given a sequence a1,a2,-,ana1,a2,-,an, consisting of integers. You can apply the following o ...

  6. Sorting a Three-Valued Sequence 三值的排序

    Sorting a Three-Valued Sequence 三值的排序 Time Limit: 1 Sec  Memory Limit: 64 MB Description 排序是一种很频繁的计算 ...

  7. [P1459 [USACO2.1]三值的排序 Sorting a Three-Valued Sequence]

    P1459 [USACO2.1]三值的排序 Sorting a Three-Valued Sequence 解题思路:贪心.对b数组排序,先找如果交换一次就可以让两组都相等的交换一下,再找交换一次,可 ...

  8. 三值的排序 Sorting a Three-Valued Sequence(洛谷 P1459)

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

  9. 三值的排序 Sorting a Three-Valued Sequence

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

  10. USACO-Section2.1 Sorting a Three-Valued Sequence(排序)

    2017-8-7 题目描述 给定的一个1,2,3组成的数字序列,排成升序所需的最少交换次数 解答 将结果与所给情况进行比较,相等不用处理,对应相反直接交换即可,否则进行处理 代码 /* ID: 187 ...

最新文章

  1. hihoCoder 第136周 优化延迟(二分答案+手写堆)
  2. MaxScale Binlog Server
  3. django ajax文件上传,django 之 ajax 篇 上传文件
  4. 纯 as3 项目中引用 fl 包下的类
  5. oracle 列级外键,Oracle 中的外键与锁
  6. Avalonia跨平台入门第六篇之Grid动态分割
  7. c语言sort函数_C语言经典面试题目及答案详解(二)
  8. Mongodb命令操作增删改查
  9. Sql Server 指定列的乘积
  10. 解决keep-live使用之后的问题
  11. 黑暗传说作弊工具的IOS安卓
  12. 软件测试员工自述,软件测试人员的述职报告.docx
  13. 新浪 java sdk_新浪微博Java SDK开发
  14. java输入一个年份,利用Java实现从键盘输入一个年份,程序输出改年出生的人的生肖...
  15. 【Codeforces】1635E Cars 题解
  16. 长尾理论读书笔记:第一章 长尾市场
  17. 例题5-10 UVa207-PGA Tour Prize Money(WA)
  18. 怎么在Arcgis中提取多个坐标点的dem值(高程)
  19. 尼科彻斯定理(简单易懂)
  20. Android测试驱动开发实践

热门文章

  1. android 8.1没声音,RingtonePreference无法在Android 8.1上添加新的铃声
  2. Mysql分区表的使用
  3. seconds_behind_master入门
  4. Hive date_format函数入门
  5. Windows核心编程_PE文件格式解析
  6. Windows核心编程_窗口透明组件不透明
  7. 从0开始python后端开发_前端(html)向后端(python)传递数据_GET_POST
  8. vue(2)学习历程----从iview框架入手
  9. shell 数组详解
  10. mac 下设置 sublime text2 的命令行快捷方式 subl