河南省第二屆ACM程式設計大賽解題報告 置換群

2022-01-25 06:14:12 字數 2677 閱讀 9892

1.

1/*2

前兩道題一直在糾結提議,特別是第二題,看了別人的**才明白過來題意,由測試用例都沒明白 3*/

4 #include 5 #include 6 #include 7

using

namespace

std;89

const

int maxn = 55;10

intins[maxn];

11bool vis[maxn] = ;

12int

n,a,b;

1314

//假設邊界在ab之間

15int

solve()

1643 vis[left] = true;44

q.push(left);45}

46if(right<=a&&!vis[right])

4753 vis[right] = true;54

q.push(right);55}

56}57if

(flag)

58return

cnt;

59else

60return -1

; 61}

6263

intmain()

6479

int ans =solve();

80 cout82return0;

8384 }

2.剛開始用list寫的,太噁心了,寫不成,就換成直接的鍊錶了

1 #include 2 #include 3

using

namespace

std;45

intn,k;

6 typedef struct

node

7node;

1112 node *head;

13void

init()

14 27}

2829

intmain()

3058 node *p;

59int cnt = 0;60

for(p=head->next,cnt=0; cnt<10; cnt++,p=p->next)

6165

while(1

);66

return0;

67 }

3.4.參考華傑做出來的  

1

//置換群問題 2/*

3求最小費用時求較小著:用分解後的每個迴圈裡的最小值,或者全域性最小值 4*/

5 #include 6 #include 7 #include 8 #include 9

using

namespace

std;

1011

const

int maxn = 1010;12

intn;

13int g_min = 1010;//

全域性置換群最小值,題目上說最大高度是1000 ,每次的全域性最小會改變,不能是const

1415

inthash[maxn],a[maxn],b[maxn];

16bool

vis[maxn];

1718

intsolve()

1935

int begin =i;

36int sum = 0;//

每次迴圈的所有元素和

37//

找迴圈38

/*39

必須用 do while(至少執行一次),或者死迴圈裡用break;不可while(i!=begin)這樣的話 因為int begin = i則大迴圈一直執行

40*/

41do

42while(begin!=i);

5152 len -= length;//

必須在continue之前

53if(length==1)//

必須有 ,表示迴圈裡只有乙個元素,則不花費代價

54continue;55

56//

ans1用的是迴圈內最小值,sum存的是迴圈內所有的元素和 ,區域性最小元素用了 (length-1)次,其他的用了一次,因為在sum

57//

裡已經加了一次區域性最小,所以 length-2)*l_min;

58int ans1 = sum + (length-2)*l_min;

59//

全域性的先把區域性的換出來最後還要在換回來 ,所以答案是兩次全域性 + 兩次區域性 + sum裡除了區域性之外的其他元素和

60int ans2 = sum + l_min + (length+1)*g_min;

6162 ans += ans1>ans2?ans2:ans1;//

是累計,不是直接賦值 63}

64return

ans; 65}

6667

intmain()

6888 hash[a[i]] =i;89}

90 sort(b,b+n);

91int ans =solve();

92 cout94 system("

pause");

95return0;

96 }

河南省第二屆程式設計大賽規則和要求

比賽規則和要求 1 比賽形式為場地賽。比賽時間為5小時,命題6 10題 部分為英文題目 2 試題的解答和提交裁判稱為執行,每一次執行會被判為正確或者錯誤,判決結果會及時通知參賽隊伍。但比賽最後半小時將不提供實時的判決結果查詢。3 名詞統計 首先按照正確題目數量排名,如果正確數目形同的,將按照完成 題...

山東第二屆acm省賽總結

n堆石子每次最多取3堆 解題報告 the android university acm team selection contest 模擬 解題報告 identifiers 模擬 解題報告 binomial coeffcients 遞推 解題報告 crack mathmen 打表模擬 解題報告 ma...

第二屆程式設計大賽 醜陋的數

description醜陋的數是一種它的因數只由2,3,5構成的數。1,2,3,4,5,6,8,9,10,12是前十個醜陋的數 如 6 23是醜陋的數,11 111不是醜陋的數 請注意1也算醜陋的數。給定乙個整數n,寫乙個程式找出第n個醜陋的數。input每行為乙個正整數n n 1500 輸入資料以...