usaco Sorting a Three-Valued Sequence 三值的排序
来源:互联网 发布:传奇盛世天命法神数据 编辑:程序博客网 时间:2024/06/06 08:58
一开始想贪心,但是一想这是搜索章节应该用bfs?(为什么这么想看我上一个usaco的题目),,,,,,,,,,结果我贪心做出来了。然后我百度一下了别人做的好像么没人用bfs我不知道可不可以做出来。
思路就是只有三个数肯定是按照123的顺序排的当然可能三个不是同是存在比如只有12等等。
/*ID: jinbo wuLANG: C++TASK: sort3*/#include<bits/stdc++.h>using namespace std;int a[1000];int b[1000];int v[4];int v1[4];int main(){int n;freopen("sort3.in","r",stdin);freopen("sort3.out","w",stdout);int sum=0,cnt=0,cnt1=0;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);b[i]=a[i];//把a数组排序当做标准 v[a[i]]++; } sort(a,a+n); int l=v[1]+v[2];//计算整个数组中1和2的个数 for(int i=0;i<l;i++){ if(b[i]==1) v1[1]++;//前l个中1的个数 else if(b[i]==2) v1[2]++;//前l个中2的个数 else sum++;}//在前l中本来应该都是12如果有3肯定要换则换的次数需要加一v1[1]=v[1]-v1[1];v1[2]=v[2]-v1[2];for(int i=0;i<l;i++)//把前l个中3换成1和2,先把1的个数换够再换2 {if(b[i]==3&&v1[1]){ b[i]=1;v1[1]--; } else if(b[i]==3) b[i]=2;}for(int i=0;i<l;i++)//把前l个位置不对的1换成2就行了。所有1的位置对2的位置也就对了 {if(b[i]==1&&b[i]!=a[i])sum++;}printf("%d\n",sum);}
0 0
- usaco Sorting a Three-Valued Sequence 三值的排序
- usaco三值的排序 Sorting a Three-Valued Sequence
- USACO 2.1.3 Sorting a Three-Valued Sequence 三值的排序
- USACO:2.1.3 Sorting a Three-Valued Sequence 三值的排序
- Sorting a Three-Valued Sequence 三值的排序
- P1459 三值的排序 Sorting a Three-Valued Sequence
- USACO-Section2.1 Sorting a Three-Valued Sequence[排序]
- usaco training-Sorting a Three-Valued Sequence
- usaco: Sorting a Three-Valued Sequence
- USACO Sorting A Three-Valued Sequence (sort3)
- usaco Sorting a Three-Valued Sequence
- USACO-Sorting a Three-Valued Sequence
- USACO Sorting a Three-Valued Sequence
- USACO 2.1 Sorting a Three-Valued Sequence
- USACO 2.1 Sorting a Three-Valued Sequence
- USACO--2.1Sorting a Three-Valued Sequence
- USACO 2.1 Sorting A Three-Valued Sequence
- USACO [2.1] Sorting a Three-Valued Sequence
- HDU 1251 Trie入门
- Java连接SQL Server教程全
- 127. Word Ladder
- 中国剩余
- [心得]gmock模块
- usaco Sorting a Three-Valued Sequence 三值的排序
- fft
- mosefet驱动电路设计详解
- mysql安装
- 配置Maven环境
- NTT
- 加载中...
- 让MySQL支持Emoji表情
- 分治算法——快速排序、归并排序算法(Java实现)