洛谷P1459 三值的排序 Sorting a Three-Valued Sequence
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)
输出格式:
共一行,一个数字。表示排成升序所需的最少交换次数。
输入输出样例
9
2
2
1
3
3
3
2
3
1
4
说明
USACO 2.1
翻译来自NOCOW
分析:可以先把目标状态求出来,如果1在2里面,而2在1里面,可以想到通过一次交换就可以,也就是如果两个数分别在对应的数的位置,那么通过一次变换就可以,通过枚举记录下来,然后剩下的怎么办呢?可以知道每3个数通过2次变换就能到达任意位置,那么把所有要交换的数加起来,用公式求即可.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n, a[],num1,num2,num3,num[][],ans; int main()
{
scanf("%d", &n);
for (int i = ; i <= n; i++)
{
scanf("%d", &a[i]);
if (a[i] == )
num1++;
if (a[i] == )
num2++;
if (a[i] == )
num3++;
}
for (int i = ; i <= n; i++)
{
if (i <= num1 && a[i] != )
num[][a[i]]++;
if (i > num1 && i <= num2 + num1 && a[i] != )
num[][a[i]]++;
if (i > num2 + num1 && i <= n && a[i] != )
num[][a[i]]++;
}
/*
for (int i = 1; i <= 3; i++)
for (int j = 1; j <= 3; j++)
{
printf("%d %d %d\n",i,j ,num[i][j]);
}
*/ for (int i = ; i <= ; i++)
for (int j = ; j <= ; j++)
if (i != j)
{
int t = min(num[i][j], num[j][i]);
num[i][j] -= t;
num[j][i] -= t;
ans += t;
}
int temp = ;
for (int i = ; i <= ; i++)
for (int j = ; j <= ; j++)
if (i != j)
temp += num[i][j];
ans += (temp * / );
printf("%d\n", ans); return ;
}
洛谷P1459 三值的排序 Sorting a Three-Valued Sequence的更多相关文章
- 洛谷 P1459 三值的排序 Sorting a Three-Valued Sequence
		P1459 三值的排序 Sorting a Three-Valued Sequence 题目描述 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者 ... 
- P1459 三值的排序 Sorting a Three-Valued
		题目描述 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和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 ... 
- 洛谷 Sorting a Three-Valued Sequence 三值的排序
		Description 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌序的时候. 在这个任务中可能的值只有三种1,2和3.我们用交换的 ... 
- Sorting a Three-Valued Sequence(三值的排序)
		Description 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌序的时候. 在这个任务中可能的值只有三种1,2和3.我们用交换的 ... 
- 洛谷 P1056 排座椅 桶排序
		桶排序大法好! 每次一看到这种范围小的题,本萌新就想用桶排. 因为题目中的m,n都小于1000,我们就可以定义两个1000的数组,表示每一行或每一列可以隔开几对讲话的童鞋. 然后再定义两个1000的数 ... 
- 【USACO 2.1.3】三值的排序
		[题目描述] 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排 ... 
- 洛谷 1155 (NOIp2008)双栈排序——仔细分析不合法的条件
		题目:https://www.luogu.org/problemnew/show/P1155 这道题教会我们要多思考. 好好分析过后发现同一个栈里不能有升序.就用它写了一个30分. #include& ... 
- 洛谷P2597 [ZJOI2012] 灾难 [拓扑排序,LCA]
		题目传送门 灾难 题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. ... 
随机推荐
- 使用NSOperation使用,创建线程中传递多个参数
			参考:http://blog.csdn.net/dqjyong/article/details/7677557 参考:http://stackoverflow.com/questions/232761 ... 
- python3读取文件
			#coding:utf-8 rfile = open('test.txt','r') str=[] for x in rfile: str = x.split(',') for x in str: p ... 
- c++101rule
			组织策略0,不拘于小结缩进, 行的长度,命名,注释,空格,制表,1-4,高警告级别干净利落地进行编译,使用构建系统,使用版本控制,代码审查风格5,一个实体应该只有一个紧凑的职责. (依赖性管理,继承, ... 
- [hibernate]基本值类型映射之日期类型
			hibernate基本值类型映射中日期类型支持date,time,timestamp这三个选项,其中 date:对应数据库中的date类型,表示只显示日期 time:对应数据库中的time类型,表示只 ... 
- ERP_Oracle Erp发展趋势基于SOA电子商务方案
			2014-01-12 Created By BaoXinjian 
- POJ 4046  Sightseeing  枚举+最短路  好题
			有n个节点的m条无向边的图,节点编号为1~n 然后有点权和边权,给出q个询问,每一个询问给出2点u,v 输出u,v的最短距离 这里的最短距离规定为: u到v的路径的所有边权+u到v路径上最大的一个点权 ... 
- CLR via C#笔记
			第一部分 CLR基础 CLR和JIT “运行时”如何解析类型引用 第二部分 设计类型 使用C#的is和as操作符来转型 运行时的相互联系 基元类型.引用类型和值类型 值类型的装箱和拆箱 哈希码 dyn ... 
- JAVA 聊天窗口
			//聊天窗口 import java.awt.*; import javax.swing.*; public class Jiemian9 extends JFrame{ JTextArea wby; ... 
- 跨域请求  &  jsonp
			0 什么是跨域请求 在一个域名下请求另外一个域名下的资源,就是跨域请求.example 1:比如:我当前的域名是http://che.pingan.com.我现在要去请求http://www.cnbl ... 
- [ActionScript 3.0] LocalConnection示例
			下例包含两个 ActionScript 类,这两个类应当编译到两个单独的 SWF 文件中: 在 LocalConnectionSenderExample SWF 文件中,将创建 LocalConnec ... 
