USACO 2 1 3 三值的排序

2022-05-27 17:21:13 字數 1142 閱讀 6004

排序是一種很頻繁的計算任務。現在考慮最多只有三值的排序問題。乙個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種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 8

const

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...