1059 C語言競賽 ID對映編號對映字串)

2022-06-13 21:24:12 字數 1978 閱讀 4665

c 語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽:

給定比賽的最終排名以及一系列參賽者的 id,你要給出這些參賽者應該獲得的獎品。

輸入第一行給出乙個正整數 n(≤10e+4),是參賽者人數。隨後 n 行給出最終排名,每行按排名順序給出一位參賽者的 id(4 位數字組成)。接下來給出乙個正整數 k 以及 k 個需要查詢的 id。

對每個要查詢的 id,在一行中輸出id: 獎品,其中獎品或者是mystery award(神秘大獎)、或者是minion(小黃人)、或者是chocolate(巧克力)。如果所查 id 根本不在排名裡,列印are you kidding?(耍我呢?)。如果該 id 已經查過了(即獎品已經領過了),列印id: checked(不能多吃多占)。

6

1111

6666

8888

1234

5555

0001

68888

0001

1111

2222

8888

2222

8888: minion

0001: chocolate

1111: mystery award

2222: are you kidding?

8888: checked

2222: are you kidding?

看著n=10^4的大小想嘗試用o(n^2)的暴力解法:

#include#include

const

int max=10010

;int prime[max],num=0

;bool pp[max]=;

struct

personp[

10010

];void init(int

n) }

}}int

main()

char temp[5

]; scanf("%d

",&nn);

for(int i=1;i<=nn;i++)

else

break

; }

}if(j==n+1)printf("

are you kidding?\n");

}return0;

}

提交時間

狀態分數

題目編譯器

耗時使用者

2019/2/2 00:49:37

部分正確

141059

c++ (g++)

3 ms

argentina_wu lei

測試點結果

耗時記憶體

0答案正確

3 ms

512 kb

1執行超時

0 ms

0 kb

2執行超時

0 ms

0 kb

3答案正確

3 ms

512 kb

只得了14/20分,所以此類題還是不能抱有僥倖,需要雜湊對映的思路:

#includeconst

int maxn=10010

;int i[maxn]=;//

chushihuawei0

char a[5][20]=;

bool isprime(int

x)int

main()

intm,query;

scanf("%d

",&m);

for(int i=1;i<=m;i++)

return0;

}

書中給出的上述**既簡短,思路也很好(預設為「are you kidding?」)

1059 C語言競賽

c語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽 0.冠軍將贏得乙份 神秘大獎 比如很巨大的一本學生研究 集 1.排名為素數的學生將贏得最好的獎品 小黃人玩偶!2.其他人將得到巧克力。給定比賽的最終排名以及一系列參賽者的id,你要給出這些參賽者應該...

1059 C語言競賽

c語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽 0.冠軍將贏得乙份 神秘大獎 比如很巨大的一本學生研究 集 1.排名為素數的學生將贏得最好的獎品 小黃人玩偶!2.其他人將得到巧克力。給定比賽的最終排名以及一系列參賽者的id,你要給出這些參賽者應該...

1059 C語言競賽

1.解題思路 ran陣列標記每個id對應的排名,集合ss儲存所有已經詢問過的id 如果發現當前id已經出現在ss中,則輸出 checked 如果ran id 0 說明當前id不在排名列表中,所以輸出 are you kidding?如果ran id 為1則輸出 minion 如果ran id 為素數...