HAOI2015普及組試題

2021-08-18 03:24:14 字數 1598 閱讀 4506

【第 1 題】單數還是雙數(t1.c/cpp/pas)馨馨那個殘酷的老師搞了乙個有 n (1 <= n <= 100) 個正整數 i (1 <= i <= 10^60)的表叫馨馨去判斷「奇偶性」(這個詞語意思向初中生解釋,就是「這個數是單數,還是雙數啊?」)。馨馨被那個表的長度深深**驚到了!畢竟她才剛上初中啊。寫乙個程式讀入 n 個整數,如果是雙數,那麼輸出一行"even",如果是單數則輸出一行"odd"。

【輸入】   第 1 行: 乙個整數 n

第 2~n+1 行: 每行一 個整數,需要判斷「奇偶性」的數。

【輸出】   第 1..n 行: 第 j 行根據第 j 個整數的奇偶性輸出乙個單詞"even"或者"odd"。

【樣例】輸入(t1.in) 

1108        even

4211        odd

【樣例解釋】1108 可以被 2 整除; 而 4211 不可以

【題目分析】此題乍一看,太簡單了,就是送分的,其實不然,要注意看清楚i的範圍,是需要用字串來處理的,不然會進坑的

#includeusing namespace std;

int main()

,b1[1000000]={},a3[1000000]={},c3[1000000]={};

int main()

else //如果向右走,值加1,方向標記為2

}x=0;

for(int i=1;i<=e;i++)//第二個人走過之後,標記每個點的值,並且用1代表向左,2代表向右

else //如果向右走,值加1,方向標記為2

}if(sum1【第 3 題】測量池塘(t3.c/cpp/pas)馨馨正在校園西北角的乙個池塘飲水,她發現這個池塘的底部很有趣,布滿了小山包和小峽谷,她想知道池塘到底有多深。她劃著乙隻小船,用乙個破舊的快要讀不出字來的雷達沿著池塘邊緣轉了一圈,她發現最深的地方相對比較平坦,而如果找到了兩個相鄰的讀數相同,則這裡就會是最深的地方。池塘底部的情況可由乙個 r*c(1 <= r <= 50; 1 <= c <= 50)的矩陣來描述,矩陣中的數(正數)代表每個點的深度讀數 d(0 <= d <= 1,000,000);有些地方可能為 0,這表示這些位置不屬於池塘的組成部分,乙個位置深度讀數為 10 表示這個地方深度為 10。找出最大深度,即至少有兩個相鄰讀數相同的深度,這裡的「相鄰」是指在矩陣中八個方向的相鄰,即除了同一行、同一列,還可以在同一斜線上相鄰。她知道池塘中至少有一對正的相鄰讀數相同。

【輸入】

第 1 行,兩個空格隔開的整數:r,c;

第 2~r+1 行,這 r 行中的第 i 行有 c 個空格隔開的整數,分別表示池塘第 i行的深度讀數。

【輸出】一行,乙個整數,即按照馨馨的規則找到的池塘深度。

【樣例】

4 3                             1

0 1 0

1 2 0

1 5 1

2 3 4

【樣例解釋】儘管最深的讀數為 5,並且數字 2 出現了兩次,但是因為有兩個兩鄰的 1,故最深的地方應為 1。

#includeusing namespace std;

int a[60][60];

int main()

HAOI2015 樹上染色

有一棵點數為 n 的樹,樹邊有邊權。給你乙個在 0 n 之內的正整數k,你要在這棵樹中選擇 k 個點,將其染成黑色,並將其他的 n k個點染成白色。將所有點染色後,你會獲得黑點兩兩之間的距離加上白點兩兩之間距離的和的收益。問收益最大值是多少。輸入第一行兩個整數 n,k。接下來 n 1 行每行三個正整...

HAOI2015 樹上染色

考慮子樹當中所有邊的貢獻即可。然後就能簡單做樹上揹包了。但是要注意列舉的順序,應該從大到小更新,否則某個狀態會多次被加。如果不想考慮列舉順序,那麼直接dp的時候用乙個臨時陣列記錄。ac pragma gcc optimize ofast funroll all loops include defin...

HAOI2015 樹上染色

嘟嘟嘟 首先這一眼看出來,要樹形dp。然後發現狀態不好設,剛開始我想的是dp i j 表示以 i 為根的子樹,選了 j 個黑點的最大價值。結果就不會轉移了。轉移的時候想考慮 這一條邊的貢獻,但是發現這個狀態的轉移所涉及的不只是這一條邊,還有子樹中的邊,於是就徹底gg了。還是看了題解。題解也是考慮貢獻...