排序是一種很頻繁的計算任務。現在考慮最多只有三值的排序問題。乙個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種1,2和3。我們用交換的方法把他排成公升序的。
寫乙個程式計算出,給定的乙個1,2,3組成的數字序列,排成公升序所需的最少交換次數。
input format:
(file sort3.in)
第一行:
獎牌個數n (1 <= n <= 1000)
第 2行到第n+1行:
每行乙個數字,表示獎牌。共n行。(1..3)
output format:
(file sort3.out)
共一行,乙個數字。表示排成公升序所需的最少交換次數。
這個真的沒有什麼好講的了。
分兩種情況就行了,看程式吧。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8const
int maxn=1000+10;9
using
namespace
std;
10int
shu[maxn],sort[maxn];
11int num[5][5];//
在i中的j數量
12int
main()
1325 sort(sort+1,sort+1+n);//
排序26
for (i=1;i<=n;i++)
2733
} 34 ans+=min(num[1][2],num[2][1]);lj-=min(num[1][2],num[2][1])*2
;35 ans+=min(num[1][3],num[3][1]);lj-=min(num[1][3],num[3][1])*2
;36 ans+=min(num[3][2],num[2][3]);lj-=min(num[3][2],num[2][3])*2
;37 printf("
%d",ans+(lj/3)*2
);38
return0;
39 }
USACO2 1 3 三值排序
問題描述 排序是一種很頻繁的計算任務。現在考慮最多只有三值的排序問題。乙個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種1,2和3。我們用交換的方法把他排成公升序的。寫乙個程式計算出,給定的乙個1,2,3組成的數字序列,排成公升序所需的最少交換次數。輸入格式...
USACO月賽題解 第三講 排序
彙總見 這一部分的題目也很經典 第10題 重排乾草 restack 這種題要麼0分要麼滿分,和 訓練指南 的第一章例3幾乎一樣,通過代數分析將題目轉化 最後變成求中位數的題目,o n 還是o nlogn 隨意 bzoj裡出現了兩道和這題幾乎一樣的題目 錯了兩個點 修改資料型別 還是錯這兩個點 發現輸...
4 2三值排序 貪心
題目 排序是一種很頻繁的計算任務。乙個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種1,2和3。我們用交換的方法把他排成公升序的。寫乙個程式計算出,計算出的乙個包括1 2 3三種值的數字序列,排成公升序所需的最少交換次數。輸入第1行為類別的數量n 1 n 1...