区间转化、扫描线

例题:

D-小红的最佳区间_牛客周赛 Round 143(重现赛)

代码如下:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define int  long long

void solve() {
    int n,k;
    cin>>n>>k;
    vector<pair<int,int>> a;
    for (int i=0;i<n;i++) {
        //每个合法L的取值范围是[l-k,r],所以直接将生成2个事件
        //(l-k,+1)和(r+1,-1)
        //那么原问题变为:找一个点 L,被最多的区间 [lᵢ−k, rᵢ] 覆盖 → 覆盖数最大值就是答案。
        int l,r;
        cin>>l>>r;
        int L=l-k;
        int R=r+1;
        a.push_back({L,1});
        a.push_back({R,-1});
    }
    sort(a.begin(),a.end());
    int ans=0;//记录最大答案
    int now=0;//记录当前点的累计覆盖数
    for (auto it=a.begin();it!=a.end();it++) {
        now+=it->second;
        ans=max(ans,now);
    }
    cout<<ans<<endl;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T=1;
    //cin >> T;
    while (T--)
        solve();
    return 0;
}
相关推荐
没有钱的钱仔43 分钟前
协方差矩阵含义
算法·机器学习·矩阵
垆边人似月.1 小时前
华为机试题 :和为 K 的子数组个数
算法·leetcode·华为
三*一1 小时前
优化修整算法
前端·javascript·算法
达子6661 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
夏幻灵2 小时前
每日一题:LeetCode 165:比较版本号
算法·leetcode·职场和发展
道尔柯南2 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
Navigator_Z2 小时前
LeetCode //C - 1288. Remove Covered Intervals
c语言·算法·leetcode
码爸2 小时前
决策树介绍与示例
python·算法·机器学习
动词ing3 小时前
【题目练习】字符串相乘
算法
0+1113 小时前
算法 --链表
数据结构·算法·leetcode·链表