GPLT2017题目
閱覽室:
L1-043. 閱覽室
時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
陳越
天梯圖書閱覽室請你編寫一個簡單的圖書借閱統計程序。當讀者借書時,管理員輸入書號并按下S鍵,程序開始計時;當讀者還書時,管理員輸入書號并按下E鍵,程序結束計時。書號為不超過1000的正整數。當管理員將0作為書號輸入時,表示一天工作結束,你的程序應輸出當天的讀者借書次數和平均閱讀時間。
注意:由于線路偶爾會有故障,可能出現不完整的紀錄,即只有S沒有E,或者只有E沒有S的紀錄,系統應能自動忽略這種無效紀錄。另外,題目保證書號是書的唯一標識,同一本書在任何時間區間內只可能被一位讀者借閱。
輸入格式:
輸入在第一行給出一個正整數N(<= 10),隨后給出N天的紀錄。每天的紀錄由若干次借閱操作組成,每次操作占一行,格式為:
書號([1, 1000]內的整數) 鍵值(“S”或“E”) 發生時間(hh:mm,其中hh是[0,23]內的整數,mm是[0, 59]內整數)
每一天的紀錄保證按時間遞增的順序給出。
輸出格式:
對每天的紀錄,在一行中輸出當天的讀者借書次數和平均閱讀時間(以分鐘為單位的精確到個位的整數時間)。
輸入樣例:
3
1 S 08:10
2 S 08:35
1 E 10:00
2 E 13:16
0 S 17:00
0 S 17:00
3 E 08:10
1 S 08:20
2 S 09:00
1 E 09:20
0 E 17:00
輸出樣例:
2 196
0 0
1 60
題目不難 但是滿分也不容易
要是拿滿分 就需要考慮到兩個S對同一本書一起出現的時候 這個時候在來個這個書的E就會導致這個書的歸還問題 是按照前面的還是按照后面的 這里要算按照后面的才能拿滿分
L2-021. 點贊狂魔
時間限制
200 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
陳越
微博上有個“點贊”功能,你可以為你喜歡的博文點個贊表示支持。每篇博文都有一些刻畫其特性的標簽,而你點贊的博文的類型,也間接刻畫了你的特性。然而有這么一種人,他們會通過給自己看到的一切內容點贊來狂刷存在感,這種人就被稱為“點贊狂魔”。他們點贊的標簽非常分散,無法體現出明顯的特性。本題就要求你寫個程序,通過統計每個人點贊的不同標簽的數量,找出前3名點贊狂魔。
輸入格式:
輸入在第一行給出一個正整數N(<=100),是待統計的用戶數。隨后N行,每行列出一位用戶的點贊標簽。格式為“Name K F1 … FK”,其中 Name 是不超過8個英文小寫字母的非空用戶名,1<=K<=1000,Fi(i=1, …, K)是特性標簽的編號,我們將所有特性標簽從1到107編號。數字間以空格分隔。
輸出格式:
統計每個人點贊的不同標簽的數量,找出數量最大的前3名,在一行中順序輸出他們的用戶名,其間以1個空格分隔,且行末不得有多余空格。如果有并列,則輸出標簽出現次數平均值最小的那個,題目保證這樣的用戶沒有并列。若不足3人,則用“-”補齊缺失,例如“mike jenny -”就表示只有2人。
輸入樣例:
5
bob 11 101 102 103 104 105 106 107 108 108 107 107
peter 8 1 2 3 4 3 2 5 1
chris 12 1 2 3 4 5 6 7 8 9 1 2 3
john 10 8 7 6 5 4 3 2 1 7 5
jack 9 6 7 8 9 10 11 12 13 14
輸出樣例:
jack chris john
這道題開始把107
#include<bits/stdc++.h> using namespace std; typedef long long ll; struct node{string name;int difn,k;double avg; }p[120]; bool cmp(node a,node b){return a.difn>b.difn||(a.difn==b.difn&&a.avg<b.avg); } int main() {int n;cin>>n;set<int>s;for(int i=1;i<=n;i++){string name;cin>>p[i].name>>p[i].k;int tmp = p[i].k;s.clear();while(tmp--){int t;cin>>t;s.insert(t);}p[i].difn = s.size();p[i].avg = (double)p[i].k/p[i].difn;}sort(p+1,p+1+n,cmp);int lim = min(3,n);for(int i=1;i<=lim;i++){cout<<p[i].name;if(i!=lim)cout<<" ";}int _ = 3-lim;for(int i=1;i<=_;i++){cout<<" -";}cout<<endl;return 0; }這道題一開始把1e7當成107做了 不過排序寫對了就沒問題了 開始沒理解什么叫做標簽的平均次數
原來就是用所有標簽數量÷不同標簽的數量。。。 其實就是不同標簽個數相同的情況下,總個數小的排在前面,這里可以省略一次浮點運算。
L1-046. 整除光棍
時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
翁愷
這里所謂的“光棍”,并不是指單身汪啦~ 說的是全部由1組成的數字,比如1、11、111、1111等。傳說任何一個光棍都能被一個不以5結尾的奇數整除。比如,111111就可以被13整除。 現在,你的程序要讀入一個整數x,這個整數一定是奇數并且不以5結尾。然后,經過計算,輸出兩個數字:第一個數字s,表示x乘以s是一個光棍,第二個數字n是這個光棍的位數。這樣的解當然不是唯一的,題目要求你輸出最小的解。
提示:一個顯然的辦法是逐漸增加光棍的位數,直到可以整除x為止。但難點在于,s可能是個非常大的數 —— 比如,程序輸入31,那么就輸出3584229390681和15,因為31乘以3584229390681的結果是111111111111111,一共15個1。
輸入格式:
輸入在一行中給出一個不以5結尾的正奇數x(< 1000)。
輸出格式:
在一行中輸出相應的最小的s和n,其間以1個空格分隔。
輸入樣例:
31
輸出樣例:
3584229390681 15
當然也可以模擬除法 一開始想到模擬除法會用到高精度
但是仔細想一想輸入數據不過萬 那么我們在做除法的過程中 總是在用比這個數多一位的數在除 所以除數不會太大 也就沒必要用高精度 因為這個數總是在用余數做除法
時間限制
400 ms
內存限制
65536 kB
代碼長度限制
16000 B
判題程序
Standard
作者
CHEN, Yue
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output “Fu” first if it is negative. For example, -123456789 is read as “Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu”. Note: zero (“ling”) must be handled correctly according to the Chinese tradition. For example, 100800 is “yi Shi Wan ling ba Bai”.
Input Specification:
Each input file contains one test case, which gives an integer with no more than 9 digits.
Output Specification:
For each test case, print in a line the Chinese way of reading the number. The characters are separated by a space and there must be no extra space at the end of the line.
Sample Input 1:
-123456789
Sample Output 1:
Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu
Sample Input 2:
100800
Sample Output 2:
yi Shi Wan ling ba Bai
注意測試點中有0的情況
中文的邏輯是每四位相同單位 第一個5位多加個萬 如果前面不都是0 第二個5位多加個億
總結
以上是生活随笔為你收集整理的GPLT2017题目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 递归和分治思想及其应用
- 下一篇: Serval and Parenthes