天天快乐编程集训队2021暑假训练-0805-结构体题解
2023-09-14 09:11:37 时间
结构体也是比较常考察的内容,大家务必学会。
1.7018 输出最高分数的学生姓名
第一题不用结构体排序就可以了,用了反而要担心最大的是不是编号小的。
第一个在不在前面,与排序的稳定性有关。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
//设置一个到不了的值
int M=-1;
string ans;
for(int i=1;i<=n;i++)
{
int x;
string t;
cin>>x>>t;
if(x>M)
{
M=x;
ans=t;
}
}
cout<<ans<<endl;
}
return 0;
}
2.6961 奥运奖牌榜
这就是一道中规中矩的结构体排序了,需要我们写出cmp函数
#include <bits/stdc++.h>
using namespace std;
struct Country
{
int id;
string name;
int person,gold,silver,bronze,total;
int input_id;
}a[105];
int cmp(Country a,Country b)
{
if(a.total==b.total)return a.name<b.name;
return a.total<b.total;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i].id>>a[i].name>>a[i].person>>a[i].gold>>a[i].silver>>a[i].bronze>>a[i].total;
a[i].input_id=i;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
cout<<a[i].name<<" "<<a[i].total<<"\n";
}
return 0;
}
3.5617 看电视
本题是大学生期末考试题,有一些小坑。正式比赛仅有一次机会,请养成好习惯,将问题思考清楚,一遍AC。
我们需要把时间转换为是今天的第几秒,因为没有前导0,不能直接按字典序。
#include<bits/stdc++.h>
using namespace std;
struct line
{
int pd;
int h,m;
string name;
}a[6];
bool cmp(line x,line y)
{
if(x.pd!=y.pd) return x.pd<y.pd;
if(x.h!=y.h) return x.h<y.h;
return x.m<=y.m;
}
int main()
{
int n;
while(cin>>n)
{
for(int i=0;i<n;i++)
{
char k;
cin>>a[i].pd>>a[i].h>>k>>a[i].m>>a[i].name;
}
sort(a,a+n,cmp);
string s;
cin>>s;
int flag=0;
for(int i=0;i<n;i++)
{
if(a[i].name==s)
{
cout<<a[i].pd<<" "<<a[i].h<<":";
printf("%02d\n",a[i].m);
flag=1;
}
}
if(flag==0)cout<<"no data\n";
}
return 0;
}
4.5022 德才论
1.可以设置个标记,比如才德全尽设为1,然后德胜才设为2,依次类推
2.也可以开几个数组分别排序
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
struct T
{
int id,de,cai;
int flag;
}t,a[N];
int cmp(T a,T b)
{
if(a.flag!=b.flag)
return a.flag<b.flag;
if(a.de+a.cai!=b.de+b.cai)
return a.de+a.cai>b.de+b.cai;
if(a.de!=b.de)return a.de>b.de;
return a.id<b.id;
}
int main()
{
int n,l,h;
cin>>n>>l>>h;
int tot=0;
for(int i=0;i<n;i++)
{
cin>>t.id>>t.de>>t.cai;
if(t.de<l||t.cai<l)continue;
if(t.de>=h&&t.cai>=h)t.flag=1;
else if(t.de>=h)t.flag=2;
else if(t.de<h&&t.cai<h&&t.de>=t.cai)t.flag=3;
else t.flag=4;
a[tot++]=t;
}
sort(a,a+tot,cmp);
cout<<tot<<"\n";
for(int i=0;i<tot;i++)
{
cout<<a[i].id<<" "<<a[i].de<<" "<<a[i].cai<<"\n";
}
return 0;
}
5.6158 奖学金评比
条件相对较少,实际上可能比前两题还简单
#include <bits/stdc++.h>
using namespace std;
struct T
{
int n,d,z,nen,t,num;
string name;
}a[301];
int cmp(T a,T b)
{
if(a.num!=b.num) return a.num>b.num;
if(a.d!=b.d) return a.d>b.d;
if(a.z!=b.z) return a.z>b.z;
if(a.nen!=b.nen) return a.nen>b.nen;
return a.n<b.n;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i].n>>a[i].name>>a[i].d>>a[i].z>>a[i].nen>>a[i].t;
a[i].num=0.2*a[i].d+0.2*a[i].nen+0.05*a[i].t+0.55*a[i].z;
}
sort(a,a+n,cmp);
cout<<a[0].n<<" "<<a[0].name;
return 0;
}
6.4894 竞赛排名
条件较多,公式较为复杂,可以先算出再排序。
#include <bits/stdc++.h>
using namespace std;
struct stures
{
int id;
double yv, sumv;
} res[1005];
bool cmp(stures r1, stures r2)
{
if (r1.yv != r2.yv)
return r1.yv > r2.yv;
else if (r1.sumv != r2.sumv)
return r1.sumv > r2.sumv;
else
return r1.id < r2.id;
}
int main()
{
int n, x[1005][10] = {};
double y[1005][10] = {}, avg[10] = {};
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < 8; j++)
cin >> x[i][j]; // 输入
for (int i = 0; i < 8; i++)
{ // 算均分
for (int j = 0; j < n; j++)
avg[i] += x[j][i];
avg[i] /= n;
}
for (int i = 0; i < 8; i++)
for (int j = 0; j < n; j++)
{ // 算位置分
for (int k = 0; k < n; k++)
y[j][i] += abs(x[k][i] - avg[i]);
if (y[j][i] != 0)
y[j][i] = (x[j][i] - avg[i]) / (y[j][i] / n);
}
for (int i = 0; i < n; i++)
{ // 算总位置分
res[i].id = i;
res[i].sumv = 0;
for (int j = 0; j < 3; j++)
res[i].yv += y[i][j];
for (int j = 3; j < 8; j++)
res[i].yv += 0.8 * y[i][j];
}
for (int i = 0; i < n; i++)
for (int j = 0; j < 8; j++) // 算总分
res[i].sumv += x[i][j];
sort(res, res + n, cmp);
for (int i = 0; i < n; i++)
cout << res[i].id + 1 << endl; // 输出
return 0;
}
相关文章
- 只需训练一次,即可生成3D新场景!谷歌「光场神经渲染」进化史
- 团队内训-“软件需求设计建模方法学全程实例剖析”训练方案(202208更新)
- AiTrust下预训练和小样本学习在中文医疗信息处理挑战榜CBLUE表现
- 他山之石 | 腾讯图神经网络与推荐预训练模型
- 使用三重损失和孪生神经网络训练大型类目的嵌入表示
- 快递单中抽取关键信息【一】----基于BiGRU+CR+预训练的词向量优化
- 马斯克让上海特斯拉工人空降美国,训练美国人卷起来。。。
- mnist图片缺失 97%的像素,mnist add准确率84%;及15位的加法训练
- R语言梯度提升机 GBM、支持向量机SVM、正则判别分析RDA模型训练、参数调优化和性能比较可视化分析声纳数据|附代码数据
- Galvatron项目原作解读:大模型分布式训练神器,一键实现高效自动并行
- 微软赢麻了!数十亿文本-图像对训练,多模态Florence开启免费体验,登上Azure
- 哈工大车万翔教授带你学习NLP新范式:基于预训练的方法(赠书)
- 基于无监督预训练的语音识别技术落地实践 火山语音表示有话要说
- 豌豆思维 | 儿童思维训练课程,提高少儿思维灵活性
- 英特尔宋继强:2020年,要让深度学习模型训练时间缩短100倍|2016 CAIIC