标签:amp 打电话 商家 软件 多少 price 时机 back char
链接:https://www.nowcoder.com/acm/contest/121/A
来源:牛客网
520,因为谐音为我爱你,所以也被称之为表白日。
这一天,人们借机把藏在心底的洪荒之力通过表白、撒娇、传情、送礼、结婚等形式释放出来,商家也会趁势开展各类优惠促销活动,掀起一波或浪漫或虐狗的节日热浪。
这一天,也是送男朋友礼物、送女朋友礼物、送自己礼物、送亲朋好友礼物的好时机。
在520即将到来之际,wwx准备为她的女朋友购买一批礼物。于是他列出了一份礼物清单,但由于预算有限,必须删掉一种礼物。经过深思熟虑,他决定删掉价格第k高的礼物,你能帮帮他,找出是哪一种礼物吗?
第一行是一个整数T(1<=T<=80),表示有T组数据.
对于每一组数据,首先一行输入N(3<=N<=1000),接下来的N行每行输入一个字符串和一个整数,以空格间隔,分别作为每种礼物的名字和价格。
接下来一行输入k,表示要删去第k(1<=<=N)高的礼物
礼物的名字的长度不超过30,礼物的价格不超过1000,且均为整数。
对于每组输入数据,依次输出它的组号和要删去的礼物的名字和价格,以空格间隔。
若两种商品的价格相同,则比较礼物名字的字典序大小。即:两种礼物的价格相同时,字典序大者若为第k高,字典序小者则为第k+1高。
2 3 Apple 18 Book 30 Milk 8000 3 4 Apple 300 Bananas 200 Bracelet 200 Candy 200 3
#1: Apple 18 #2: Bracelet 200
1.
可用strcmp(s1,s2)函数进行字符串的比较。
2.
对于样例一中第二组数据:Apple 300是价格第一大,Candy 200是价格第二高,Bracelet
200是价格第三大。
思路:排序;水题;
代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 struct p{ 4 char name[50]; 5 int price; 6 }a[10005]; 7 bool cmp(p x,p y); 8 int main(){ 9 int T; 10 scanf("%d",&T); 11 int tt=0; 12 while(T--){ 13 tt++; 14 int n; 15 scanf("%d",&n); 16 for(int i=0;i<n;i++){ 17 scanf("%s%d",a[i].name,&a[i].price); 18 } 19 int k; 20 scanf("%d",&k); 21 sort(a,a+n,cmp); 22 printf("#%d: %s %d\n",tt,a[k-1].name,a[k-1].price); 23 } 24 } 25 bool cmp(p x,p y){ 26 if(x.price!=y.price){ 27 return x.price>y.price; 28 } 29 else{ 30 if(strcmp(x.name,y.name)>0){ 31 return true; 32 } 33 else return false; 34 } 35 }
链接:https://www.nowcoder.com/acm/contest/121/B
来源:牛客网
黑猫在给校赛配环境,结果被服务器的各种入站规则出站规则搞得头疼,想到自己要上传GVIM、EMACS、VSCODE、Jetbrain全家桶、Visual Studio、Gedit、Microsoft Office Word、Eclipse等等,完全不知道要要花费多少时间才能上传完校赛需要的环境。
黑猫跑去问ddjing,谁知道ddjing说:“我要去实习了,没功夫解决这个问题,你去问问其他人吧。“
于是黑猫想请你帮他解决这个问题。
服务器总传输速度为每秒M个单位(本题出现的所有单位都统一),黑猫现在需要上传总共n个软件(按优先级顺序从高到低给出),每个软件的大小分别为v1、v2….vn,每个软件为保持稳定连接,上传需要一个最小的传输速度为m1、m2…mn。
服务器带宽分配的策略是:按优先级满足每一个软件要求的传输速度。如果服务器剩余的带宽不能满足某个软件最小传输速度的话,服务器将继续寻找下去,直到找到能满足最小传输速度的软件。
如果目前服务器的总传输速度不能满足所有还需要上传的软件的话,服务器将把传输速度全部给予当前优先级最高的(即使不能满足其最小传输速度)。
如果目前对所有软件都满足了其最小传输速度的话,服务器将把剩余所有传输速度全部给予当前优先级最高的软件。
黑猫想把这些开始上传以后就去陪妹子玩了,所以他想知道需要多久才能把所有东西都上传完毕,好及时赶回机房摸鱼。第一行给出一个正整数,表示服务器总带宽M
第二行给出整数n,表示需要上传的n个软件。
第三行为n个正整数,第i个数表示vi。
第四行为n个正整数,第i个数表示mi。
( 1 <= M <= 1000, 1 <= n <= 100 , 1 <= vi <= 1000 , 1 <= mi <= 1000 )
输出一行,为上传完毕所有软件所需要的时间,保留两位小数。
10 6 1 1 4 5 1 4 10 9 8 7 6 5
1.60
10 6 10 9 8 7 6 5 1 1 4 5 1 4
4.50
思路:水题;其实题目都是废话;只要求和,再除以传输速度;
代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 double m; 5 int n; 6 scanf("%lf",&m); 7 scanf("%d",&n); 8 double a; 9 double sum=0; 10 for(int i=0;i<n;i++){ 11 scanf("%lf",&a); 12 sum+=a; 13 } 14 for(int i=0;i<n;i++){ 15 scanf("%*lf"); 16 } 17 printf("%.2lf",sum/m); 18 }
链接:https://www.nowcoder.com/acm/contest/121/C
来源:牛客网
iko超级超级喜欢吃糖,有一天iko想出去玩,她计划从1点走到N点(按1,2,3,...,n的顺序走),每个点都有一个补给站,第i点的补给站有a[i]颗糖,从i点走到i+1点会消耗掉b[i]颗糖,iko在出游的途中可以选择三个补给站,iko想知道她走完全程到达N点时口袋里最多还能剩下几颗糖(初始时iko的口袋里一颗糖都没有)。
第一行输入N(3<=N<=1000)
第二行输入N个数代表a[1].......a[N] (0<=a[i]<=1000 )
第三行输入N-1个数代表b[1]......b[N-1] ( 1<=b[i]<=1000 )
输出一个数字表示iko到达n点时口袋里最多剩下的糖,
若不能到达N点输出-1。
3 1 3 4 3 4
-1
5 3 4 5 2 4 3 2 2 2
3
思路:贪心+优先队列;每一次走都判断,能不能走,能走直接走,不能走的话,就从前面已经走过的补给站里选出一个糖果最多的补给站;
代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[1005],b[1005]; 4 struct cmp{ 5 bool operator()(int x,int y) 6 { 7 return x<y; 8 } 9 }; 10 int main(){ 11 int n; 12 scanf("%d",&n); 13 for(int i=0;i<n;i++){ 14 scanf("%d",&a[i]); 15 } 16 for(int i=0;i<n-1;i++){ 17 scanf("%d",&b[i]); 18 } 19 priority_queue<int,vector<int>,cmp> q; 20 int num=0; 21 int geshu=0; 22 int flag=0; 23 for(int i=0;i<n-1;i++){ 24 q.push(a[i]); 25 if(num<b[i]){ 26 if(geshu<3){ 27 geshu++; 28 num+=q.top(); 29 q.pop(); 30 if(num<b[i]){ 31 flag=1; 32 break; 33 } 34 num-=b[i]; 35 } 36 else{ 37 flag=1; 38 break; 39 } 40 } 41 else{ 42 num-=b[i]; 43 } 44 } 45 q.push(a[n-1]); 46 if(geshu!=3&&!flag){ 47 while(geshu!=3){ 48 num+=q.top(); 49 q.pop(); 50 geshu++; 51 } 52 } 53 if(flag){ 54 printf("-1\n"); 55 } 56 else{ 57 printf("%d\n",num); 58 } 59 }
链接:https://www.nowcoder.com/acm/contest/121/D
来源:牛客网
ZQ是一个拥有n女朋友的万人迷,她的每一个女朋友每天晚上都会挨个给他打电话,要他讲了睡前故事才能睡觉。可是,每次他的女朋友都会挑他在吃鸡的时候打电话,ZQ总是因为挂机被舍友赶出宿舍,于是,ZQ告诉他的女朋友们,别打电话了,他会主动打过去给他们讲故事,再打电话就分手!
于是,ZQ把他的女朋友名字写在纸上,画成一圈,顺时针编号为1~n,然后从1开始顺时针数。在每一次数数中,ZQ数k个就停下来,然后给选中的女朋友打电话讲故事。
现在需要你按顺序告诉我们他给女朋友打电话的顺序先输入一个t,然后t组数据,每行包含两个数字n,k,n<20,k>0
按顺序输出每轮被选中的女朋友的编号。
3 10 3 5 2 11 4
3 6 9 2 7 1 8 5 10 4 2 4 1 5 3 4 8 1 6 11 7 3 2 5 10 9
思路:这就是约瑟夫环的一个变形
代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 vector<int> v; 4 int main(){ 5 int T; 6 scanf("%d",&T); 7 while(T--){ 8 int n,k; 9 scanf("%d%d",&n,&k); 10 for(int i=1;i<=n;i++){ 11 v.push_back(i); 12 } 13 int t=-1; 14 for(int i=0;i<n;i++){ 15 t=(t+k)%(n-i); 16 if(i==0) 17 printf("%d",v[t]); 18 else 19 printf(" %d",v[t]); 20 v.erase(v.begin()+t); 21 t--; 22 if(t==-1){ 23 t==(n-i-1); 24 } 25 } 26 printf("\n"); 27 } 28 }
标签:amp 打电话 商家 软件 多少 price 时机 back char
原文地址:https://www.cnblogs.com/dahaihaohan/p/9032970.html