2023年第四屆湘潭大學新生趣味程式設計競賽 題解

2021-07-25 14:31:59 字數 4170 閱讀 8276

今年是2023年,乙個年齡小於99歲(出生當年為0歲)的人,把出生年份的前兩位和後兩位相加得到乙個整數

n 。你能根據n,算出他有多少歲嗎?

第一行輸入乙個整數t(

1≤t≤

99),表示樣例的個數。 每行輸入乙個整數

n 。

每行輸出乙個樣例的結果。

2

20118

16

17

第1樣例,此人生於2023年;第2樣例,此人生於2023年。

#include #include using namespace std;

int main()}}

return 0;

}

mumuchacha是乙個愛美的小姑娘,她有一條漂亮的寶石手鍊,寶石手鍊上有n個不同的寶石,每一顆寶石都有它特定的魅力值。

mumuchacha每天都把手鍊戴在手上,她很喜歡抬起手來看她的手鍊,但是每次都只能看到一部分(m個寶石),因為還有一部分被手臂擋住了,所以她不斷的旋轉手鍊,每次轉動一顆寶石,使每次看到的寶石都不同,求mumuchacha每次旋轉後看到的寶石魅力值之和的最大值。

有多個樣例,輸入的第一行是樣例個數

t

每個樣例的第一行是兩個整數

n 和

m ,(1

≤m≤n

≤100000

) 。

第二行是

n 個整數ai

,表示n 個寶石的魅力值(1

≤ai≤

10000

)

每行輸出乙個整數,即魅力值和的最大值

2

5 31 2 3 4 5

10 4

6 7 4 5 8 4 2 5 9 4

12

26

#include #include using namespace std;

int a[110000];

int n,c,b,count,sum;

int main()

}printf("%d\n",max);}}

return 0;

}

題解:每次只能從n個寶石中看到m個寶石,思路用陣列的方式,從後面補m-1個開頭的數,然後直接遍歷陣列,得出最大值;這題其實挺水的 不過我多重樣例沒看到,貢獻了七發wa才過,一直本地編輯通過,一審核就錯誤,以後還是要細心讀題

有n盞燈,編號1~n。一開始燈都是關著的,每個燈有乙個開關,按奇數次為開啟,按偶數次為關閉。我們先把編號為1的倍數的燈按一下開關,再把編號為2的倍數的燈按一下開關,依次下去,一直到把編號為n的倍數燈按一下,請問最後有多少盞燈是亮的?

第一行是乙個整數t(

1≤t≤

10000

) ,表示樣例的個數。 以後的每行乙個樣例,為乙個整數n(

1≤n≤

109) 。

每行輸出乙個樣例的結果。

2

15

1

2

第2個樣例,先把1~5都開啟;然後把2,4關掉;然後把3關掉;然後把4開啟;然後把5關掉;所以,最後剩1和4是亮著的。

題解:剛開始每盞燈都是熄滅的,1的倍數是將所有燈都開啟,然後2的倍數關閉……以此類推;

思路:剛開始我是直接想暴力解的,用陣列解決,不過提交就直接tle了,後來回來再想一下,打了乙個表看一下,結果發現規律很明顯,1,4,9的時候才會增加燈的數量,所以直接開根號,ac;

#include #include #include #include using namespace std;

int a[1<<10];

int main()}/*

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

cout <

estrella喜歡旅行,她準備去自己心儀的城市看風景。她精心選擇了一條線路,準備自駕遊。自駕線路是一條鏈路,上有n+

1 座城市,編號依次為0∼

n ,estrella住在

0 號城市,目的地是

n 號城市。estrella為了環保,駕駛了一輛純電動車,所以最多只能一次行駛

m 個城市的距離。如果estrella在某個城市(包括

n 號城市)停留,自然會需要一些費用,當然每個城市的花費是不一樣,estrella想知道,這個花費最小是多少?

多組資料輸入。

每組資料第一行兩個整數n(

1<

n<

1000),

m(1≤m。

第二行n

個整數ai

(0≤1000

) ,表示編號為1,

2,⋯,

n 的城市的停留花費。

對於每個資料,輸出一行,表示總的花費。

5 2

1 2 3 4 5

6 26 5 4 3 2 1

9

9

第1個樣例,依次到城市1,3,5,所以花費為1+3+5=9;

第2個樣例,依次到城市2,4,6,所以花費為5+3+1=9。

題意:從出發開始,每個城市都可以停留,停留就要有相應的花費,每次的路過城市是m以內,求最小的花費值;

思路:很明顯的dp題目,不過還是貢獻了2發wa,直接dp考慮一下邊界的問題

#include #include #include using namespace std;

const int inf = 1 << 29;

int a[1005],dp[1005];

int main()

h = a * 30;

m = b * 5.5;

ans = fabs(h - m);

if(ans > 180.0)

cout << ans << endl;}}

return 0;

}

還有兩道題,想了很久都沒有思路,不知道他到底是什麼意思,所以一直沒有去開後面兩道題,後來結束了去找了一下題解看,

小明有一架天平,小明想稱出1∼

n 克的物品,請問最少需要幾顆砝碼?

比如小明想稱出1∼

4 克的物品,需要2顆砝碼,為1和3克。

第一行是乙個整數t(

1≤t≤

10000

) ,表示樣例的個數。 以後每行乙個樣例,為乙個整數 (1≤

n≤109

)。每行輸出乙個樣例的結果。

314

40

1

24

題解:這個還是到現在也不能理解到底是什麼意思,貪心還是什麼,完全都看不懂怎麼秤才行,**後續補

有乙個n 位數

x ,每個數碼都不一樣,可你知道

x 的後m(

m位構成的整數x′

,請問滿足條件最小的

x 是多少?

第一行是乙個整數t(

1≤t≤

1000

) ,表示樣例的個數。 每個樣例一行,為兩個整數n(

2≤n≤

10)和

x 的後

m 位的整數x′

(0≤x

′<

987654321,x

′沒有前

導0且所

有數碼都

不一樣)

。每行輸出乙個樣例的結果。

2

3 12

4 12

312

3012

題意:找出最小的n位數,且每個數不能相同,即坐一下標記

思路:當初的時候跟上一題差不多,這個是看出題意,卻有點糾結不知道怎麼下手,後來也是看了題解,即每個最高位數給能給的最小的數,然後標記一下

這題沒有ac **候補……

總結:學校不給考四級,心情壓抑,晚上做一下這種題,看到很多大神1小時左右ak了,真心覺得自己太水,高不成低不就,跟以前老師說的一樣,有點眼高手低了,兩道題連思路都沒有,真心覺得自己太差了,題目數還是不夠多,日後還需要惡補,浪費太多時間再無意義的事情上真是覺得沒意思。

額 至於這麼遲補題解是因為接下來是考試月,很多科目要考察,一直在趕作業,所以題解來的遲,也提醒自己別什麼都堆到最後,會導致挺多問題的。

西北大學第四屆程式設計競賽新生賽(同步賽)

i 曾有你的森林,森 accept includeusing namespace std typedef long long ll const int inf 0x3f3f3f3f const int maxn 1e5 50 int a maxn int vis maxn int main whil...

2023年第四屆天梯賽 賽後總結

今年是第四屆天梯賽,河南省的分賽點仍是鄭州輕工業大學 記得去年去的時候還是鄭州輕工業學院 比賽時間是下午1點到4點,所以我們是上午才去的,中午發的飯票在貴校食堂吃的午飯。食堂的飯還可以的,可能是怕我們差評吧,哈哈哈。1點比賽開始,今年首次使用螢幕軟體監控系統,比賽開始前偷偷動滑鼠都會被發現,比賽中禁...

2023年藍橋杯B組初賽(第四屆)

題目和參考 1.高斯日記 includeusing namespace std int month1 13 int month2 13 int main else y 1778 while day 365 else y m 1 if y 400 0 y 4 0 y 100 0 else cout i...