题意
题目链接:你们多久才能喝完奶茶?(QWQ)
-
有 n n n 个数列,每个数列中包含三个数:奶茶容积,喝奶茶的速度,喝奶茶的人的名字
-
其中,保证喝奶茶容积能被奶茶的速度
整除
,保证这个商不重复
-
最后需要求解前 m m m 个数的人的名字
从
2
2
2 我们可以知道,这道题需要使用long long
或者int
,并且可以知道最后不用再排一次序
结构体
结构体的定义:
struct T{
E n;
};//其中T代表结构体的变量名,E代表要定义的变量
定义结构体变量
T name;
T a[maxn]={};
结构体的调用
const int maxn=1e5+7;
struct T{
int name;
int val;
}a[maxn];
//定义上述这么一个结构体
a[i].name; //就可以访问a[i]中的结构体的name的值
a[i].val; //同上
T a;//定义单个变量以用于访问结构体
a.name; //访问a中的结构体name的值
a.val; //同上
code↓
#include <bits/stdc++.h>
using namespace std;
int n,m;
const int maxn=3e5+5;//定义边界值
struct Friend{//定义一个结构体来存储他们
int time;//喝奶茶的速度
int valu;//奶茶容积
string name;//喝奶茶的人的名字
int sum;//他们喝完奶茶所需要的时间
}a[maxn];//定义一个数组来进行存储
bool cmp(Friend x,Friend y){
return x.sum>y.sum;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);//输入优化
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].time>>a[i].valu>>a[i].name;//注意先输入的是速度,然后再输入的是容积,最后是名字
a[i].sum=(a[i].valu/a[i].time);//求出喝完奶茶所需要的时间
}
sort(a+1,a+1+n,cmp);//进行排序
for(int i=1;i<=m;i++) cout<<a[i].name<<endl;//输出
return 0;
}