您的位置:首页 > 产品设计 > UI/UE

USACO Section 2.1: Prob Sorting A Three-Valued Sequence

2013-07-05 05:18 519 查看
贪心,先是交换俩俩交换后就可以的,接着交换3个轮回的,每个3个轮回的要交换2次

/*
ID: yingzho1
LANG: C++
TASK: sort3
*/
#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <algorithm>
#include <stdio.h>
#include <queue>
#include <cstring>

using namespace std;

ifstream fin("sort3.in");
ofstream fout("sort3.out");

int N;

int main()
{
fin >> N;
vector<int> f(N), g(N);
for (int i = 0; i < N; i++) fin >> f[i];
g = f;
sort(g.begin(), g.end());
int acount = 0;
for (int i = 0; i < N-1; i++) {
for (int j = i+1; j < N; j++) {
if (f[j] != g[j] && f[i] == g[j] && f[j] == g[i]) {
swap(f[i], f[j]);
acount++;
}
}
}
int count2 = 0;
for (int i = 0; i < N; i++) {
if (f[i] != g[i]) count2++;
}
fout << acount + count2/3*2 << endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: