南京信息工程大學第十屆程序設計大賽試題

A. 簽到

題目描述

本次程序設計大賽共有386人蔘加,請計算你本次比賽獲得的獎項。

已知特等獎、一等獎、二等獎、三等獎的獲獎比例分別爲 前1%, 前5%, 前15% 和 前30%。

在計算獲獎人數時,按照比例向下取整,如特等獎的獲獎人數爲 3。

輸入描述

輸入一個整數 nn (1n3861 \leq n \leq 386),表示你在本次競賽的名次。

輸出描述

輸出包含一行,如果獲得特等獎,則輸出 Winner! ;

如果獲得一等獎,則輸出 Au! ;

如果獲得二等獎,則輸出 Ag! ;

如果獲得三等獎,則輸出 Cu! ;

如果你什麼獎都沒有得到,則輸出 Fe...

樣例輸入

287

樣例輸出

Fe...

B. 切蛋糕

題目描述

負鼠是一個熱情好客並且喜歡看見消息不回的物種。上個星期五是負鼠生日,她決定請她的好朋友們來家裏做客。由於位置有限,儘管她的好朋友很多,但她最多隻能邀請 nn 個好朋友。

爲了讓大家能夠玩的開心,她做了一個圓形的大蛋糕分給她的好朋友喫。衆所周知,不患寡而患不均,於是她決定將這個大蛋糕用刀切成形狀和大小都一樣的 n+1n+1 塊(自己也要喫),否則她的朋友們就會不開心。有一說一,這把刀只能切直線,不可以拐彎着切。

請你幫負鼠算一算,至少需要切多少刀才能讓她的朋友們都開心。

輸入描述

第一行包含一個整數 T(1T100)T(1\leq T \leq 100) , 表示測試數據組數。

接下來 TT 行每行包含一個整數 nn,其中 0n1090 \leq n \leq 10^9,表示邀請 nn 個好朋友。

輸出描述

輸出 TT 行,每行包含一個整數,表示至少要切多少刀

樣例輸入

1
3

樣例輸出

2

C. 移動字符串

題目描述

負鼠發明了一個新算法,作用是化簡字符串。

給定一個長度爲 nn 的字符串,她要對它實行的算法如下:

  • 如果當前字符串中存在至少一個字母 a , 那麼就刪去字符串中最左邊的 a 並退出算法, 否則進行下一步;
  • 如果當前字符串中存在至少一個字母 b , 那麼就刪去字符串中最左邊的 b 並退出算法, 否則進行下一步;
  • 如果當前字符串中存在至少一個字母 z , 那麼就刪去字符串中最左邊的 z 並退出算法。

由於該方法過於弱智,因此需要運行 kk 次才能產生效果。

負鼠使用的電腦運行比較慢,於是求助於你來計算運行該算法 kk 次以後的字符串。

輸入描述

第一行包含兩個整數 nnkk,其中1kn41051 \leq k \leq n \leq 4*10^5。n和k分別代表字符串的長度和運行該算法的次數。

第二行輸入一個由 nn 個小寫字母構成的字符串。

輸出描述

輸出原字符串運行該算法 kk 次後得到的新字符串。

樣例輸入

15 9
cccaabababaccbc

樣例輸出

cccccc

D. 卡布奇諾

題目描述

後勤部長最近迷上了喝卡布奇諾。爲此她買了 nn 個杯子,每個杯子剛開始有 aia_i 毫升卡布奇諾。

後勤部長的腦洞比較大,經常做出如下兩種令人窒息的操作:

  1. 選擇一個杯子 ii ,加入和其當前體積相同體積的卡布奇諾,即 ai2aia_i \Rightarrow2 a_i
  2. 選擇一個杯子 ii ,倒掉其體積一半的卡布奇諾,即 aiai2a_i \Rightarrow \lfloor \frac{a_i}{2} \rfloor。 其中\lfloor \rfloor 表示向下取整。

這一天,她突然有了一個想法:能不能通過若干次上述操作,使得所有杯子中的卡布奇諾容量相同呢?

輸入描述

第一行包含一個整數 nn ,其中 1n1051\leq n \leq 10^5 ,表示杯子數量爲 nn
第二行包含 nn 個整數 aia_i ,其中 1ai1051 \leq a_i \leq 10^5 ,表示初始狀態下第 ii 個杯子中卡布奇諾的毫升數。

輸出描述

輸出一個整數,表示讓所有杯子中卡布奇諾體積相等需要的最小操作次數。

樣例輸入

3
4 8 2

樣例輸出

2

E. 花錢

題目描述

後勤部長所在的C137號宇宙的地球上有 nn 個小鎮,編號爲 1n1 \sim n ,有 n1n-1 條道路連接着這 nn 個小鎮,保證任意兩個小鎮間都有若干條道路相連接。

這一天,後勤部長突然想出去轉轉。她將選擇一個小鎮 uu 作爲起點,再任選一個小鎮 vv 作爲終點 (uvu \not = v),然後沿着從u到v的最短路旅遊。

但是,該地球上有兩個非常豪華的商業小鎮 HongYangXinJieKou ,如果先從 HongYang 走,再經過 XinJieKou ,後勤部長就會忍不住買一大堆衣服和包包,最後因爲沒錢喫飯被餓死。

由於後勤部長非常怕死,所以需要聰明的你幫她計算一下,有多少種路線的選擇方法,可以讓她活着完成這次旅遊。

輸入描述

第一行包含三個整數 nxyn,x,y (1n3105,1x,yn,xy1\leq n \leq 3*10^5,1\leq x,y \leq n, x \not = y)。分別表示小鎮的數量,HongYang 的編號和 XinJieKou 的編號。

緊接着n-1行,每行輸入兩個整數 aabb (1a,bn,ab)(1 \leq a,b \leq n , a \not = b ),表示編號爲 aa 的小鎮和編號爲 bb 的小鎮之間有一條道路相連接。

輸出描述

輸出一個整數,表示可選擇路線的數量。

樣例輸入

3 1 3
1 2
2 3

樣例輸出

5

F. 下棋

題目描述

後勤部長有兩個好朋友,一個叫 CY ,還有一個叫 叉JJ。她們兩個酷愛下棋,由於現有的棋類遊戲已經無法滿足她們,於是她們決定自己開動腦筋,發明一種新的下棋遊戲。

她們的棋盤是無窮大的,CY先手移動,在她的回合中,她可以將她的棋子從 (x,y)(x,y) 移動到 (x1,y)(x-1,y)(x,y1)(x,y-1)叉JJ 後手移動,爲了公平起見,在她的回合中,她可以將她的棋子從(x,y)(x,y) 移動到 (x1,y),(x,y1),(x1,y1)(x-1,y) , (x,y-1) , (x-1,y-1) 中的任意一個位置。規則同時聲明,她們可以選擇在自己的回合不移動棋子。

還有一些附加的限制,兩人都不能將自己的棋子移動到 x 座標或 y 座標爲負的格子裏,或者移動到包含對手棋子的格子裏,獲勝者是第一個到達座標 (0,0)(0,0) 的人。

輸入描述

輸入第一行包含一個整數 T(1T500)T (1 \leq T \leq 500) ,表示輸入數據的組數。

接下來 TT 行每行包括四個整數:a,b,c,d(0a,b,c,d105)a, b, c, d (0\leq a,b,c,d \leq 10^5),分別表示 CY 棋子的初始座標和 叉JJ 棋子的初始座標。

輸出描述

輸出 TT 行,每行輸出獲勝者的名字。

如果 CY 獲勝,則輸出 CY ;

如果 叉JJ 獲勝,則輸出 XJJ

樣例輸入

2
2 1 2 2
4 7 7 4

樣例輸出

CY
XJJ

G. 學Python

題目描述

後勤部長最近在學大數據挖掘,需要用到 Python ,於是她開始學習 Python 。

由於她的腦容量比較小,因此只能記住以下兩種簡單的語句:

  1. 賦值語句 ;
  2. For 語句。For 語句由一個以 For 開頭的單獨行和循環體組成。循環體是一個語句塊,它比循環頭縮進一層。循環體可以包含賦值語句和 For 語句。注意:循環體不能爲空。

由於後勤部長在學習 C++ 的時候不注意縮進,所以她寫出來的 Python 代碼也沒有縮進。但是在 Python 中,代碼塊沒有顯式的開始/結束或花括號來標記塊的開始和結束,而是由縮進定義代碼塊。

現在給出她寫的沒有縮進的 Python 代碼,請你幫她計算一下她寫的代碼通過合理的縮進後可能構成多少種合法的 Python 程序。

輸入描述

第一行包含一個整數 N(1N5000)N (1 \leq N \leq 5000) ,表示後勤部長程序的代碼行數。

接下來n行每行包含一個字母 sf ,其中 s 代表簡單的賦值語句, f 代表 For 語句。

輸入數據保證最後一行一定是賦值語句。

輸出描述

輸出可能構成的合法 Python 程序的數量,由於該值較大,請將結果mod  109+7\mod 10^9+7 輸出。

樣例輸入

4
s
f
f
s

樣例輸出

1

H. Sort the String

題目描述

You are given a string SS of length nn and qq queries. Each query is on the format ll rr kk which means sort the substring consisting of the characters from ll to rr in non-decreasing order if k=1k = 1 or in non-increasing order if k=0k = 0.

Please calculate and output the final string after applying the queries.

輸入描述

The first line will contain two integers n,q(1n105,1q50000)n, q (1 \leq n \leq 10^5, 1\leq q \leq 50000), which means the he length of the string and the number of queries.

輸出描述

Output the final string after applying the queries.

樣例輸入

10 5
abacdabcda
7 10 0
5 8 1
1 4 0
3 6 0
7 10 1

樣例輸出

cbcaaaabdd

I. BJ的貓餅

題目描述

鏟屎官的終身大事是服侍好喵主子。有些人表面上風風光光,實際上背地裏連貓都沒有。BJ 通過多年的努力,終於擁有了一隻橘貓。今天,BJ 決定做一些貓餅給喵主子喫。他從超市裏採購了 n 種貓餅(標號爲 1~n ),每種貓餅的數量有 aia_i 份,每種貓餅會給喵主子帶來基於 viv_i 的愉悅值。當然,心靈手巧的 BJ 可以任選一個特定的貓餅,將其加工成一種新的超級貓餅,超級貓餅會給喵主子帶來另一種愉悅值 yiy_i 。新的超級貓餅共有 mm 種。喵主子喫重複的貓餅或超級貓餅會重複計算愉悅值。最後的總愉悅值計算方式爲:

總愉悅值 = (vi)(yi)(\prod v_i) * (\prod y_i)

其中 viv_i 表示沒有加工直接餵給喵主子的貓餅對應的愉悅值,yiy_i 表示加工成的超級貓餅對應的愉悅值。

但是,喫太多重複的貓餅會覺得不好喫,所以對於貓餅和超級貓餅,每一種餅,喵主子最多喫 cic_i 塊。
此外考慮到健康因素,喫的所有貓餅的個數不應超過 cc 塊。
爲了讓喵主子的體重變的“橘勢大好“,BJ 想知道喵主子的愉悅值的最大值。這個值可能很大,因此請輸這個值 mod  109+7\mod 10^9+7

輸入描述

第一行三個整數 n,m,cn, m, c,含義如題幹所述。 (1n,m1000,1c1000)(1 \leq n,m \leq 1000, 1 \leq c \leq 1000)

接下來一行有 nn 個整數,表示 aia_i

然後一行又有 nn 組整數,每組兩個整數,分別表示 vi,civ_i, c_i (viv_i是2的冪次且 vi231v_i \leq 2^{31}),對於第 i 塊貓餅,喵主子只願意喫 cic_i塊。

接下來 mm 行:

這些 mm 行的第一個數 kk (k5k \leq 5) 表示第 ii 種超級貓餅可以由哪些貓餅任選一個製成。緊接着 kk 個數表示這些貓餅的序號。再有一個整數 yiy_i(yiy_i是2的冪次且 yi231y_i \leq 2^{31})。最後再有一個整數cic_i,對於第 ii 塊貓餅,喵主子只願意喫 cic_i 塊。其中k2000\sum k \leq 2000

輸出描述

輸出一行,表示喵主子的最大愉悅值。(需要 mod  109+7\mod 10^9+7

樣例輸入

5 6 5
24 75 65 80 7  
128 89 128 68 4 79 1024 83 1024 100  
1 4 8 8
1 1 16 7
1 4 32 1
4 2 4 1 3 16 7
2 2 3 16 9
4 4 1 3 2 256 4

樣例輸出

898961331
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章