第三届“传智杯”全国大学生IT技能大赛(初赛B组)
第三屆“傳智杯”全國大學(xué)生IT技能大賽(初賽B組)
鏈接:https://www.luogu.com.cn/contest/38442#description
也直接洛谷進(jìn)入
———————————————————————————————
筆記:前三題不難。卡在第四題(提交了18次才過-_-),測(cè)試點(diǎn)二就是過不了。變量創(chuàng)建的位置改一下就過了,非常不明白為什么。雖然最后5題都過了,估計(jì)還是涼涼300+。
T160507 A - 課程報(bào)名
題目描述
傳智播客推出了一款課程,并進(jìn)行了一次促銷活動(dòng)。具體來說就是,課程的初始定價(jià)為 vv 元;每報(bào)名 mm 個(gè)學(xué)員,課程的定價(jià)就要提升 aa 元。由于課程能夠容納的學(xué)生有限,因此報(bào)名到 nn 人的時(shí)候就停止報(bào)名。
現(xiàn)在老師想知道,當(dāng)課程停止報(bào)名時(shí),一共可以獲得多少學(xué)費(fèi)呢?
輸入格式
一行四個(gè)使用空格隔開的整數(shù),分別為 n,v,m,an,v,m,a。
輸出格式
一行一個(gè)整數(shù),表示答案。
輸入輸出樣例
輸入
5 1 1 1
輸出
15
說明/提示
樣例解釋
每賣出 11 個(gè)課程,價(jià)格就會(huì)提高 11 元,所以總共獲得 1+2+3+4+5=151+2+3+4+5=15 元。
數(shù)據(jù)規(guī)模與約定
對(duì)于 50%50% 的數(shù)據(jù),滿足 1 \leq n,m,v,a\leq 101≤n,m,v,a≤10;
對(duì)于額外 20%20% 的數(shù)據(jù),滿足 a=0a=0;
對(duì)于 100%100% 的數(shù)據(jù),滿足 0 \leq n,m,v,a \leq 10000≤n,m,v,a≤1000。
然而,由于本次比賽是 ACM 賽制,因此您必須通過 100%100% 的數(shù)據(jù)才能夠獲得本題的得分,后題同。
正確代碼:
#include<iostream> #include<stdio.h> using namespace std; int main(){int n,v,m,a;long long sum;int ans=0;while(cin>>n>>v>>m>>a){sum=0;while(n){ans++;n--;sum+=v;if(ans%m==0){v+=a;}}cout<<sum<<endl;}return 0; }————————————————————————————
T160508 B - 期末考試成績(jī)
題目描述
傳智播客推出了一款課程,并進(jìn)行了一次促銷活動(dòng)。具體來說就是,課程的初始定價(jià)為 vv 元;每報(bào)名 mm 個(gè)學(xué)員,課程的定價(jià)就要提升 aa 元。由于課程能夠容納的學(xué)生有限,因此報(bào)名到 nn 人的時(shí)候就停止報(bào)名。
現(xiàn)在老師想知道,當(dāng)課程停止報(bào)名時(shí),一共可以獲得多少學(xué)費(fèi)呢?
輸入格式
一行四個(gè)使用空格隔開的整數(shù),分別為 n,v,m,a。
輸出格式
一行一個(gè)整數(shù),表示答案。
輸入輸出樣例
輸入
5 1 1 1
輸出
15
說明/提示
樣例解釋
每賣出 11 個(gè)課程,價(jià)格就會(huì)提高 11 元,所以總共獲得 1+2+3+4+5=151+2+3+4+5=15 元。
數(shù)據(jù)規(guī)模與約定
對(duì)于 50%50% 的數(shù)據(jù),滿足 1 \leq n,m,v,a\leq 101≤n,m,v,a≤10;
對(duì)于額外 20%20% 的數(shù)據(jù),滿足 a=0a=0;
對(duì)于 100%100% 的數(shù)據(jù),滿足 0 \leq n,m,v,a \leq 10000≤n,m,v,a≤1000。
然而,由于本次比賽是 ACM 賽制,因此您必須通過 100%100% 的數(shù)據(jù)才能夠獲得本題的得分,后題同。
正確代碼:
#include<bits/stdc++.h> #include<iostream> #include<stdio.h> using namespace std; int main(){int n;while(scanf("%d",&n)!=EOF){double sum=0;if(n>=90){sum=4;}else if(n>=60){sum=4-(90-n)*0.1;}else{//printf("%f\n",sqrt(n)*10);n=sqrt(n)*10;//printf("%d\n",n);if(n<60){sum=0;}else{sum=4-(90-n)*0.1;}}printf("%.1f\n",sum);}return 0; }————————————————————————————
T160509 C - 志愿者
題目描述
傳智專修學(xué)院總共召集了 nn 位志愿者來負(fù)責(zé)打掃活動(dòng),現(xiàn)在需要你負(fù)責(zé)幫忙統(tǒng)計(jì)每位志愿者的工作情況,用來制作光榮榜,給他們發(fā)小花花。
第 ii 位志愿者有一個(gè)工作時(shí)長t i? ,以及他負(fù)責(zé)的工作的難度系數(shù) k i,一名志愿者的貢獻(xiàn)可以用k i? ×t i 確定。
現(xiàn)在要為這些志愿者的貢獻(xiàn)度從大到小排個(gè)序,請(qǐng)你完成這個(gè)任務(wù)。相同貢獻(xiàn)度的志愿者以工作時(shí)長較長的排在前面。如果貢獻(xiàn)和時(shí)長一樣,那么編號(hào)小的志愿者排在前面。
輸入格式
一行一個(gè)整數(shù) nn ,表示志愿者的數(shù)量。
接下來 nn 行,每行兩個(gè)使用空格隔開的整數(shù) t_i,k_it
i
?
,k
i
?
,表示第 ii 名志愿者的時(shí)間和難度系數(shù)。
輸出格式
一行,共 nn 個(gè)整數(shù),第 ii 個(gè)數(shù)表示排名為 ii 的志愿者的序號(hào),從 11 開始編號(hào)。
請(qǐng)注意本題時(shí)限為 5s,輸入輸出規(guī)模較大,請(qǐng)注意常數(shù)因素對(duì)耗時(shí)的影響,我們不會(huì)給使用 Java 和 Python 的選手增加額外的運(yùn)行時(shí)間。
輸入輸出樣例
輸入
3
1 2
2 3
3 4
輸出
3 2 1
說明/提示
對(duì)于 40%40% 的數(shù)據(jù),滿足 1 \leq n \leq 1001≤n≤100;
對(duì)于額外 20%20% 的數(shù)據(jù),滿足 k i? =1;
對(duì)于 100%100% 的數(shù)據(jù),滿足 1 \leq n \leq 5 \times 10^5,1 \leq k_i,t_i \leq 10001≤n≤5×10 5 ,1≤k i?,t i? ≤1000。
然而,由于本次比賽是 ACM 賽制,因此您必須通過 100%100% 的數(shù)據(jù)才能夠獲得本題的得分,后題同。
正確代碼:
#include<bits/stdc++.h> #include<iostream> #include<stdio.h> using namespace std; struct node{int t;int k;long long gongxian;int id; }; bool cmp(node a,node b){if(a.gongxian!=b.gongxian) return a.gongxian>b.gongxian;if(a.t!=b.t) return a.t>b.t;if(a.id!=b.id) return a.id<b.id; } int main(){int n;while(scanf("%d",&n)!=EOF){node a[n+4];for(int i=0;i<n;i++){int t,k;scanf("%d%d",&a[i].t,&a[i].k);a[i].id=i+1;a[i].gongxian=a[i].t*a[i].k;}sort(a,a+n,cmp);for(int i=0;i<n;i++){if(i) printf(" ");printf("%d",a[i].id);}printf("\n");}return 0; }————————————————————————————
T160510 D - 終端
題目描述
有一天您厭煩了電腦上又丑又沒用的終端,打算自己實(shí)現(xiàn)一個(gè) Terminal。
具體來說,它需要支持如下命令:
touch filename:如果名為 filename 的文件不存在,就創(chuàng)建一個(gè)這樣的文件,如果已經(jīng)存在同名文件的話則不進(jìn)行任何操作。
rm name:刪除名為 name 的文件。如果不存在這樣的文件,就不進(jìn)行任何操作。
ls:按創(chuàng)建時(shí)間為順序,顯示當(dāng)前已經(jīng)存在的未被刪除的所有文件。
rename xxx yyy:將名為xxx的文件名字改為 yyy 。如果不存在這樣的文件,或者已經(jīng)存在文件名為 yyy 的文件,則不做任何操作。
這里所有涉及的文件名都僅由大寫或者小寫的英文字母構(gòu)成,且文件名區(qū)分大小寫。
輸入格式
第一行一個(gè)整數(shù) nn ,表示總共要執(zhí)行的操作數(shù)。
接下來 nn 行,每行一個(gè)字符串,表示一條命令。
輸出格式
對(duì)于每個(gè) ls 命令,請(qǐng)輸出若干行,每行一個(gè)字符串,表示一個(gè)文件,如果當(dāng)前并沒有任何文件,則什么都不輸出。
請(qǐng)注意本題時(shí)限為 3s,輸入輸出規(guī)模較大,請(qǐng)注意常數(shù)因素對(duì)耗時(shí)的影響,我們不會(huì)給使用 Java 和 Python 的選手增加額外的運(yùn)行時(shí)間。
輸入輸出樣例
輸入
6
touch yyh
touch yyhtql
rename yyh yyhnb
touch qwq
rename qwq qaq
ls
輸出
yyhnb
yyhtql
qaq
說明/提示
對(duì)于 20%20% 的數(shù)據(jù),只存在 1,31,3 操作
對(duì)于另外 20%20% 的數(shù)據(jù),只存在 1,2,31,2,3 操作
對(duì)于另外 20%20% 的數(shù)據(jù),只存在 1,3,41,3,4 操作
對(duì)于 100%100% 的數(shù)據(jù),滿足 1 \leq n \leq 10001≤n≤1000
保證所有命令的長度不超過 20002000 個(gè)字符。
正確代碼:
#include<bits/stdc++.h> #include<iostream> #include<stdio.h> using namespace std; int main(){int n;ios::sync_with_stdio(false);vector<string>v;string s,s1,s2;//沒改這個(gè)變量的位置就一直過不了測(cè)試點(diǎn)二,很莫名while(cin>>n){map<string,int>mp;v.clear();int ans=0;while(n--){cin>>s;if(s=="ls"){ans=v.size();if(ans){for(int i=0;i<ans;i++){cout<<v[i]<<endl;}}}else if(s=="touch"){cin>>s1;//cout<<s1<<endl;if(mp[s1]==0){v.push_back(s1);ans++;mp[s1]=1;}}else if(s=="rm"){cin>>s1;int k=mp[s1];if(k){ans=v.size();for(int i=0;i<ans;i++){if(v[i]==s1){v.erase(v.begin()+i);break;}}mp[s1]=0;}}else if(s=="rename"){cin>>s1>>s2;int k=mp[s1];int f=mp[s2];if(k&&f==0){ans=v.size();for(int i=0;i<ans;i++){if(v[i]==s1){v[i]=s2;break;}}mp[s1]=0;mp[s2]=1;} }}}return 0; }————————————————————————————
T160513 E - 運(yùn)氣
題目背景
YYH Land(Yoauld,Youthful & Happy Land) 是位于熾藍(lán)仙野的一片神奇的國度,那里的人們過著無拘無束的的快樂生活。
題目描述
哈蘭·斯威提是 YYH Land 遠(yuǎn)近聞名的注鉛骰子愛好者。有一天他碰到了這么一個(gè)問題:
你有一枚 66 個(gè)面的骰子,分別寫了 1,2,3,4,5,61,2,3,4,5,6 ,每一面朝上的概率是均等的。
現(xiàn)在哈蘭想知道,如果他投擲 nn 次,并且將結(jié)果按順序?qū)懺诩埳铣蔀橐粋€(gè)數(shù)。(比如說如果哈蘭扔了 33 次,分別是 3,2,53,2,5 ,那么他最后得到的數(shù)就是 325325)他現(xiàn)在想知道這個(gè)數(shù)是 kk 的倍數(shù)的可能情況有多少種,其中 kk 是一個(gè)特定的數(shù)。
由于這個(gè)方案數(shù)可能會(huì)很大,所以請(qǐng)你輸出結(jié)果對(duì) 10^9+710
9
+7 取模的結(jié)果。
輸入格式
一行兩個(gè)整數(shù) n,kn,k ,意義如題所示。
輸出格式
一行一個(gè)整數(shù),表示答案。
輸入輸出樣例
輸入 #1復(fù)制
2 11
輸出
6
說明/提示
樣例解釋
在投擲兩次骰子總共 3636 種可能中,只有 (“11”,“22”,“33”,“44”,“55”,“66”)(“11”,“22”,“33”,“44”,“55”,“66”) 是符合條件的。所以答案是 66。
數(shù)據(jù)規(guī)模與約定
對(duì)于 40%40% 的數(shù)據(jù),滿足 nn 分別為 1,2,3,41,2,3,4;
對(duì)于另外 30%30% 的數(shù)據(jù),滿足 1 \leq k \leq 31≤k≤3;
對(duì)于 100%100% 的數(shù)據(jù),滿足 1 \leq n \leq 10, 1 \leq k\leq 10001≤n≤10,1≤k≤1000;
正確代碼:
#include<bits/stdc++.h> #include<iostream> #include<stdio.h> using namespace std; int n,k; int s[10]; long long MOD=(1000000000+7); long long ans; void dfs(int len){if(len==n){long long sum=0;for(int i=0;i<len;i++){sum=sum*10+s[i];}//cout<<sum<<endl;if(sum%k==0){ans++;ans=ans%MOD;}return;}for(int i=1;i<=6;i++){s[len]=i;dfs(len+1);} } int main(){while(cin>>n>>k){ans=0;dfs(0);cout<<ans<<endl;}return 0; }下面這段話,是從別的大佬博客上看到的哈哈哈,非常喜歡這句話。
混一天和努力一天,一天看不出來任何差別,三天看不到任何變化,七天也看不到任何距離,但是一個(gè)月后會(huì)看到話題不同,三個(gè)月后會(huì)看到氣場(chǎng)不同,半年后會(huì)看到距離不同,一年后會(huì)看到人生道路截然不同。
送給每個(gè)仍在為夢(mèng)想努力奮斗的你!
總結(jié)
以上是生活随笔為你收集整理的第三届“传智杯”全国大学生IT技能大赛(初赛B组)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jade linux 安装教程,ROS-
- 下一篇: 简单的 Nodejs jade 实现He