贪心+排序+结构体+桶=解《烦人の建交》
2026-01-10 12:51:03
发布于:浙江
3阅读
0回复
0点赞
题目解析:
FM去建交,但见过的亲戚无需再建交,请问建交的最小时间。
输入:
输入行:
第一行为一个正整数,指需要见亲戚的次数;
接下来行每行个整数,分别指亲戚的编号以及亲戚的探访时间。(注:可重复。)
输出:
输出 FM 总共需要的“建交”时间。
数据:
分析数据:
这数据很良心了,刚好到桶的边界,当然也可以用或,桶最好用了。
查看代码,详解如下:
#include<bits/stdc++.h>//万能头文件
using namespace std;
struct/*结构定义*/ pai{
long long num,time;//变量
}a[100005];
bool cmp(pai x,pai y){
if(x.time!=y.time){
return x.time<y.time;
}
}//排序
bool b[10000000];//桶,负责边走标记
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);//缩减时间的代码
long long n,sum=0;//用long long
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].num>>a[i].time;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(b[a[i].num]==false){
sum+=a[i].time;//加时间
b[a[i].num]=true;//标记
}//判断是“建交”过。
}
cout<<sum;//输出
return 0;//可有可无
}
我也会在洛谷发布此题,数据自创,如下是链接:
《烦人の建交》
在我Black_Tea666的题库里!
记得点个赞,且评论。
这里空空如也

有帮助,赞一个