?![](https://img-blog.csdnimg.cn/20210803230936666.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUyNTEzOTQw,size_16,color_FFFFFF,t_70)
?![](https://img-blog.csdnimg.cn/20210803231057525.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUyNTEzOTQw,size_16,color_FFFFFF,t_70)
#include<iostream>
#include<algorithm>
using namespace std;
struct Match
{
int start;
int end;
}M[1000005];
bool cmp(Match a, Match b)
{
return a.end < b.end;
}
int main()
{
int n, i, j,m;
cin >> n>>m;
for (i = 0; i < n; i++) cin >> M[i].start >> M[i].end;
sort(M, M + n, cmp);
int pos = M[0].end;
int ans = 1;//第一个区间必须选
for (i = 1; i < n; i++)
{
if (pos <= M[i].start&& M[i].start <m && M[i].end<m)
{
pos = M[i].end;
ans++;
}
}
cout << ans;
return 0;
}
![](https://img-blog.csdnimg.cn/20210803232820609.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUyNTEzOTQw,size_16,color_FFFFFF,t_70)
?![](https://img-blog.csdnimg.cn/20210803233058974.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUyNTEzOTQw,size_16,color_FFFFFF,t_70)
这里没有采用冒泡排序,而是直接采用了C++的sort函数?
#include<iostream>
#include<algorithm>
#define num 1001
using namespace std;
int val[num];//价值
bool cmp(int x, int y) {
return x > y;
}
int main()
{
int N, M,sum=0;
cin >> N >> M;
for (int i = 1; i <= N; i++)
{
cin >> val[i];
}
sort(val, val + N,cmp);
for (int j = 1; j <= M; j++)
{
val[j] = 0;
}
for (int z = 1; z <= N; z++)
{
sum += val[z];
}
cout << sum << endl;
return 0;
}
|