传送门:嘿原题在这

用一个num[][]数组记录应该在i位置的j有多少个,然后每次发现i在j中,j在i中的情况这种两个数的位置调换的情况,只需交换一次(min(num[i][j],num[j][i])),剩下的都是三个数位置调换的,这种情况需要交换3次

//USACO2.1 三值的排序
//by dadatu
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;int n,m,t,ans;
int a[1010],b[1010],num[1010][1010];//num记录的是在i中的j的个数int main()
{scanf("%d",&n);for (int i=0;i<n;i++) scanf("%d",&a[i]),b[i]=a[i];sort(b,b+n);for (int i=0;i<n;i++)if (b[i]!=a[i]) t++,num[b[i]][a[i]]++;//t记录的是逆序对的个数ans+=min(num[1][2],num[2][1]);t-=min(num[1][2],num[2][1])*2;ans+=min(num[2][3],num[3][2]);t-=min(num[2][3],num[3][2])*2;ans+=min(num[1][3],num[3][1]);t-=min(num[1][3],num[3][1])*2;printf("%d\n",ans+(t/3)*2);//最后剩下的是三个数的位置都不对的,这种情况需要交换两次return 0;
}

[USACO2.1] 三值的排序 乱搞相关推荐

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

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

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

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

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

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

  4. luogu p1459 三值的排序

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

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

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

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

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

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

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

  8. mysql 先排序再去重_有人说先学会三轴,再去搞四轴、五轴加工中心,这几种有何区别?...

    有人说先学会三轴,再去搞四轴.五轴加工中心,这几种机床有何区别呢? 三轴加工中心的的作用及优点: 立式加工中心(三轴)最有效的加工面仅为工件的顶面,卧式加工中心借助回转工作台,也只能完成工件的四面加工 ...

  9. JSK-27 三值排序【贪心】

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

最新文章

  1. java 中required_通过实例学习Spring @Required注释原理
  2. Css3系列-新属性新布局
  3. c语言在程序中显示现在星期几,C语言程序设计: 输入年月日 然后输出是星期几...
  4. maven 导入数据库
  5. Go语言之父带你重新认识字符串、字节、rune和字符
  6. slz-servlet的引入
  7. 用Camshift算法对指定目标进行跟踪
  8. 传染病模型中作图与计算(matlab,数学模型)
  9. Jemalloc安装
  10. 忘记了Excel工作表保护密码的解决办法
  11. 石川 :学术界、管理人、投资者视角下的因子投资
  12. 前端做大屏显示,缩放比,分辨率怎样适配?
  13. 币圈炒币如何避免被额韭菜?
  14. 有没有人帮忙出一份答案,本人急用,python一级试卷。谢谢
  15. DeepNet :Scaling Transformers to 1000 Layer
  16. 具有跳跃性思维的算法
  17. 机器的思考故事——计算机能学会牛顿第二定律吗?
  18. Android源码的Binder权限是如何控制,附超全教程文档
  19. Codeforces Round #760 (Div. 3) (ABCDEF)
  20. 工作中学习ing—linux

热门文章

  1. syn,fin,ack的意思,以及三次握手,四次释放示意图
  2. Android手机软件开发的前景
  3. 转载:娱乐性故事片的剧本是怎样的
  4. 写博客小技巧推荐(有简易版动图教程)
  5. 云原生|kubernetes|关于secret的一些使用
  6. MySQL数据库提示:Communications link failure,The last packet succe
  7. midjourney指令笔记+踩坑日记+gpt论文润色指令
  8. 超高校级の清晰语法分析中短语相关概念总结
  9. 修改Virtualbox的默认安装路径
  10. Unrecognized font family 'anticon'