天梯赛 抢红包

2024-01-31 06:38
文章标签 天梯 抢红包

本文主要是介绍天梯赛 抢红包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

L2-2 抢红包(25 分)

没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。

输入格式:

输入第一行给出一个正整数N104),即参与发红包和抢红包的总人数,则这些人从1到N编号。随后N行,第i行给出编号为i的人发红包的记录,格式如下:

KN1P1NKPK

其中K0K20)是发出去的红包个数,Ni是抢到红包的人的编号,Pi>0)是其抢到的红包金额(以分为单位)。注意:对于同一个人发出的红包,每人最多只能抢1次,不能重复抢。

输出格式:

按照收入金额从高到低的递减顺序输出每个人的编号和收入金额(以元为单位,输出小数点后2位)。每个人的信息占一行,两数字间有1个空格。如果收入金额有并列,则按抢到红包的个数递减输出;如果还有并列,则按个人编号递增输出。

输入样例:

10
3 2 22 10 58 8 125
5 1 345 3 211 5 233 7 13 8 101
1 7 8800
2 1 1000 2 1000
2 4 250 10 320
6 5 11 9 22 8 33 7 44 10 55 4 2
1 3 8800
2 1 23 2 123
1 8 250
4 2 121 4 516 7 112 9 10

输出样例:

1 11.63
2 3.63
8 3.63
3 2.11
7 1.69
6 -1.67
9 -2.18
10 -3.26
5 -3.26
4 -12.32

#include<bits/stdc++.h>
using namespace std;
typedef struct hong{
int count;
int no;
int money;
}hong;
hong h[100010];
bool cmp(hong a,hong b){//比较的关系一定要理清 
 if(a.money==b.money)
 {
  if(a.count==b.count)
    return a.no<b.no;
  else
   return a.count>b.count;
 }
 return a.money>b.money;
}
int main()
{
int N,i;
int k,n,q;
cin>>N;
for(i=1;i<=N;i++)
{
h[i].count=0;//一定初始化为零 
h[i].money=0;
}
for(i=1;i<=N;i++)
{
cin>>k;
      h[i].no=i;
while(k--)
{
cin>>n>>q;
h[n].money=h[n].money+q;
h[n].count=h[n].count+1;
h[i].money=h[i].money-q;//不用设置专门记录剩余钱数的变量,直接用当前的减去即可 
}

}
sort(h+1,h+N+1,cmp);
for(i=1;i<=N;i++)
{
printf("%d %.2lf\n",h[i].no,h[i].money/100.0);
}
return 0;
}

这篇关于天梯赛 抢红包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662875

相关文章

显卡天梯图(2024年9月版),游戏性能/生产力性能榜单

​原文地址(高清无水印原图/持续更新/含榜单出处链接): >>> 2024年9月显卡天梯图 <<< 2024年9月4日更新日志:更新所有显卡天梯图至9月/最新数据;移除Technical显卡榜单;新增OpenCL显卡性能榜单(含专业卡、计算卡、车机等)。 2024年8月2日更新日志:更新并拓展3DMark显卡榜单长度至150位;更新并拓展Technical显卡榜单至139位;

AccessibilityService之微信抢红包辅助功能实现

这次我们来使用AccessibilityService实现一个微信抢红包的辅助工具。 先来一个简单的效果图,最后会有一个完整的效果图:     首先,先回想一下微信红包的领取流程。 1.通知栏出现微信红包的消息 2.点击通知栏,进入领取红包界面 3.点击领取红包,领取成功后,进入拆红包界面 4.拆红包,显示获得金额 5.等待下一个红包 那么根据之前

PTA-天梯计划-比较大小

L1-010 比较大小 (10分) 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数,其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出,其间以“->”相连。 输入样例: 4 2 8 输出样例: 2->4->8 用了最笨的方法。。 不知道为什么有一项不正确。。。? #include<iostream>using namespace std;

pta 天梯赛 7-2 装箱问题 (20 分)day6

假设有N项物品,大小分别为s1​​ 、s​2 、…、si 、…、s​N,其中s​i为满足1≤s​i≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。 输入格式: 输入第一行给出物品个数N(≤1000

pta 天梯赛 7-9 有理数加法 (15 分)day8-1

本题要求编写程序,计算两个有理数的和。 输入格式: 输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。 输出格式: 在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。 输入样例1: 1/3 1/6 输出样例1: 1/2 输入样例2: 4/3 2/3 输出样例2: 2 #in

pta 天梯赛 7-8 找出总分最高的学生 (15 分)day8-1

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。 输出格式: 在一行中输出总分最高学生的姓名、学号和

pta 天梯赛 7-7 计算职工工资 (15 分)day8-1

给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。 输入格式: 输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。 输出格式: 按照输入顺序,每行

pta 天梯赛 7-5 时间换算 (15 分)day8-1

本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。 输入格式: 输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。 输出格式: 输出在一行中给出hh:mm:ss格式的结果时间。 输入样例: 11:59:40 30 输出样例: 12:00:10 #include <stdio.h>#inc

pta 天梯赛 7-3 字符串转换成十进制整数 (15 分)day8-1

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。 输入格式: 输入在一行中给出一个以#结束的非空字符串。 输出格式: 在一行中输出转换后的十进制数。题目保证输出在长整型范围内。 输入样例: ±P-xf4±1!# 输出样例: -3905

pta 天梯赛 7-6 求整数序列中出现次数最多的数 (15 分)day8-1

本题要求统计一个整型序列中出现次数最多的整数及其出现次数。 输入格式: 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。 输入样例: 10 3 2 -1 5 3 4 3 0 3 2 输出样例: 3 4 #include <stdio.h>#in