贪心区间覆盖问题(结构体排序)

1.先找出贪心策略2.代码实现需要多重考虑和试数

alt

#include <bits/stdc++.h>
using namespace std;
int cnt;
int ans;
struct record
{
    int s;
    int e;
}a[1000];
bool cmp(const record& x, const record& y)//结构体排序!!!注意写法
{
    return x.s < y.s;
}
int main()
{
    int n,m;
    int cnt = 0;
    int L, R;
    int maxn[1000] = { 0 }, copy[1000] = { 0 };
    L = 0;
    cin >> n>>m;
    int t;
    for (int i = 1; i <= m; i++)
    {
        cin >> a[i].s >> a[i].e;
        if (a[i].s == 0)
        {
            maxn[i] = a[i].e;
            cnt++;
        }
    }
    int c;
    memcpy(copy + 1, maxn + 1, 1000);//****复制函数**,先写被复制函数的首位地址,然后写入复制位数。
    sort(maxn + 1, maxn + 1 + m);
    for (int i = 1; i <= m; i++)
        if (copy[i] == maxn[m])
            c = i;
    R = a[c].e;
    sort(a + 1, a + 1 + m, cmp);
    a[1].s = 0, a[1].e = R;
    for (int i = 1; i <= m; i++)
    {
        if (a[i].s <= R )
        {
            R = a[i].e;
            ans++;
        }
        if (R == n)
            break;
    }
  //注意特殊情况下的题目答案会有所区别,所以要多试
    if (R != n)
        cout << ans - 1;
    else
        cout << ans;
    return 0;
}
全部评论

相关推荐

King987:这不就是力扣的算法题吗?
点赞 评论 收藏
分享
01-17 08:34
门头沟学院 Java
点赞 评论 收藏
分享
昨天 11:58
门头沟学院 Java
腾讯暑期实习java选手,完全不懂C++,貌似游戏行业都是用C++的而且天美好像在成都,个人比较想去上海或深圳
siestaaaaaa:天美不止在成都,深圳上海都有。 游戏服务器也不全是cpp,至少我们项目是java ,但是工作中什么语言都会用到,比如cpp、lua、py等等,语言本身其实不重要
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务