C67-活动安排
2025-07-08 13:16:28
发布于:江苏
5阅读
0回复
0点赞
看电视问题
贪心策略:每次按照结束时间比较早的进行安排
#include <bits/stdc++.h>
using namespace std;
struct node{
int be,end;
}a[1005];
bool cmp(node x,node y){
return x.end<y.end;
}
int main(){
while(1){
int n;
cin >>n;
if(n==0) break;
int sum=1,last=a[1].end;
for(int i=1;i<=n;i++){
cin >>a[i].be>>a[i].end;
}
sort(a+1,a+n+1,cmp);
for(int i=2;i<=n;i++){
if(a[i].be>=last){
sum++;
last=a[i].end;
}
}
cout <<sum<<endl;
}
return 0;
}
活动安排
#include <bits/stdc++.h>
using namespace std;
struct node{
int begin, end;
}a[10005];
//按照结束的时间进行排序
//结束越早可以有更多时间选择其他节目
bool cmp(node x, node y){
return x.end < y.end;
}
int main()
{
int n;
cin >> n;
int num = 1;
for (int i=1; i<=n; i++) cin>>a[i].begin >>a[i].end;
sort (a+1, a+1+n, cmp);
int last = a[1].end;
for (int i=2; i<=n; i++){
if (a[i].begin >= last){
num++;
last = a[i].end;
}
}
cout << num;
return 0;
}
/*
输入:
5
0 6
3 5
1 4
4 9
10 12
输出:
3
*/
午餐吃什么
#include <bits/stdc++.h>
using namespace std;
struct node{
string name;
int price, like;
}a[105];
bool cmp(node x, node y){
return x.like > y.like;
}
int main()
{
int n, m;
cin >> n >>m;
for (int i=1; i<=n; i++){
cin >> a[i].name >> a[i].price >> a[i].like;
}
sort (a+1, a+1+n, cmp);
for (int i=1; i<=n; i++){
if (m >= a[i].price){
cout<<a[i].name<<' '<<a[i].price<<' '<<a[i].like;
return 0;
}
}
cout << "...>_<...";
return 0;
}
这里空空如也
有帮助,赞一个