USACO Sorting a Three-Valued Sequence
题目描述
排序是一种很频繁的计算任务。现在考虑最多只有三值的排序问题。一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候。在这个任务中可能的值只有三种1,2和3。我们用交换的方法把他排成升序的。
写一个程序计算出,给定的一个1,2,3组成的数字序列,排成升序所需的最少交换次数
输入输出格式
输入格式:
第一行:
奖牌个数N (1 <= N <= 1000)
第 2行到第N+1行:
每行一个数字,表示奖牌。共N行。(1..3)
输出格式:
共一行,一个数字。表示排成升序所需的最少交换次数。
输入输出样例
9 2 2 1 3 3 3 2 3 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相关推荐
- usaco Sorting a Three-Valued Sequence 三值的排序
一开始想贪心,但是一想这是搜索章节应该用bfs?(为什么这么想看我上一个usaco的题目),,,,,,,,,,结果我贪心做出来了.然后我百度一下了别人做的好像么没人用bfs我不知道可不可以做出来. 思 ...
- USACO / Sorting a Three-Valued Sequence (简单题,方法正确性待证)
三值的排序 IOI'96 - Day 2 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌序的时候. 在这个任务中可能的值只有三种1,2 ...
- python设置堆大小_Python中的堆问题
Heap in python 堆(英语:Heap)是计算机科学中一类特殊的数据结构的统称.堆通常是一个可以被看做一棵树的数组对象.在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时 ...
- USACO Section 2.1 Sorting a Three-Valued Sequence 解题报告
题目 题目描述 给N个整数,每个整数只能是1,2,或3.现在需要对这个整数序列进行从小到大排序,问最少需要进行几次交换.N(1 <= N <= 1000) 样例输入 9 2 2 1 3 3 ...
- Sequence Sorting CodeForces - 1223D(思维)
You are given a sequence a1,a2,-,ana1,a2,-,an, consisting of integers. You can apply the following o ...
- Sorting a Three-Valued Sequence 三值的排序
Sorting a Three-Valued Sequence 三值的排序 Time Limit: 1 Sec Memory Limit: 64 MB Description 排序是一种很频繁的计算 ...
- [P1459 [USACO2.1]三值的排序 Sorting a Three-Valued Sequence]
P1459 [USACO2.1]三值的排序 Sorting a Three-Valued Sequence 解题思路:贪心.对b数组排序,先找如果交换一次就可以让两组都相等的交换一下,再找交换一次,可 ...
- 三值的排序 Sorting a Three-Valued Sequence(洛谷 P1459)
三值的排序 Sorting a Three-Valued Sequence 题目描述 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排 ...
- 三值的排序 Sorting a Three-Valued Sequence
题目描述 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排成升 ...
- USACO-Section2.1 Sorting a Three-Valued Sequence(排序)
2017-8-7 题目描述 给定的一个1,2,3组成的数字序列,排成升序所需的最少交换次数 解答 将结果与所给情况进行比较,相等不用处理,对应相反直接交换即可,否则进行处理 代码 /* ID: 187 ...
最新文章
- hihoCoder 第136周 优化延迟(二分答案+手写堆)
- MaxScale Binlog Server
- django ajax文件上传,django 之 ajax 篇 上传文件
- 纯 as3 项目中引用 fl 包下的类
- oracle 列级外键,Oracle 中的外键与锁
- Avalonia跨平台入门第六篇之Grid动态分割
- c语言sort函数_C语言经典面试题目及答案详解(二)
- Mongodb命令操作增删改查
- Sql Server 指定列的乘积
- 解决keep-live使用之后的问题
- 黑暗传说作弊工具的IOS安卓
- 软件测试员工自述,软件测试人员的述职报告.docx
- 新浪 java sdk_新浪微博Java SDK开发
- java输入一个年份,利用Java实现从键盘输入一个年份,程序输出改年出生的人的生肖...
- 【Codeforces】1635E Cars 题解
- 长尾理论读书笔记:第一章 长尾市场
- 例题5-10 UVa207-PGA Tour Prize Money(WA)
- 怎么在Arcgis中提取多个坐标点的dem值(高程)
- 尼科彻斯定理(简单易懂)
- Android测试驱动开发实践
热门文章
- android 8.1没声音,RingtonePreference无法在Android 8.1上添加新的铃声
- Mysql分区表的使用
- seconds_behind_master入门
- Hive date_format函数入门
- Windows核心编程_PE文件格式解析
- Windows核心编程_窗口透明组件不透明
- 从0开始python后端开发_前端(html)向后端(python)传递数据_GET_POST
- vue(2)学习历程----从iview框架入手
- shell 数组详解
- mac 下设置 sublime text2 的命令行快捷方式 subl