首页 > 其他分享 >interval coverage

interval coverage

时间:2025-01-07 23:57:59浏览次数:10  
标签:coverage int interval st 端点 ans 区间 贪心

题意理解:给定一个区间,我们需要把这个区间覆盖掉。问最少需要的区间数目。当然我们会给定 n 个区间选择。假设全选都不能覆盖就输出 − 1 -1 −1

思路分析:我感觉应该是找区间的端点。假设区间的左端点是 s ,右端点是 t ,我们枚举的区间的左端点尽可能靠近 s ,右端点尽可能靠近 t ,这样的贪心策略就可以使得选择的区间数目,还需要检测区间内部是不是完整地被覆盖了。需要枚举的区间按照左端点排序。选择的是那个最靠近 s 的区间作为选择的第一个区间。更新的思路是找最大的左端点,让这个左端点小于等于前面选择的区间的右端点,这样才能保证被覆盖了。最后要判断区间的右端点要超过 t 这个点,但是不能超过太多。但是我们贪心只能从一端开始贪心,是不是要从左边往右边贪心一遍,然后从右边往左边贪心一次,然后取一个最小值呢。

看了一下题解,好像和我的思路不是太像,但是有一些相似之处,毕竟同一题,不过思路和实现之间隔着一个银河系,感觉,我没啥信心把这题写出来。

#include<iostream>
#include<algorithm>

using namespace std;

const int N=100000+10;
int n;
int st,ed;
struct Range{
    int l,r;
    bool operator< (const Range &W)const{
        return l<W.l;
    }
}range[N];

int main(){
    scanf("%d%d",&st,&ed);
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        int l,r;
        scanf("%d%d",&l,&r);
        range[i]={l,r};
    }
    sort(range,range+n);
    
    int ans=0;
    bool success=false;
    for(int i=0;i<n;i++){
        int j=i;
        int r=-2e9;
        while(j<n&&range[j].l<=st){
            r=max(r,range[j].r);
            j++;
        }
        
        if(r<st){
            break;//表示不可能覆盖掉
        }
        ans++;
        if(r>=ed){
            success=true;
            break;
        }
        st=r;
        i=j-1;//假设现在的 j 比较到某一位了,找到了一个最大值,然后我们更新了 st
        //我们需要枚举下一个区间,但是这个时候已经不满足条件了,所以需要返回前面那个
        //满足条件的区间,应该是这个意思,对的,就是现在下一个区间的左端点没在 st 的左边
        //得更新 st 
    }
    
    if(!success){
        ans=-1;
    }
    printf("%d\n",ans);
    
    return 0;
}

其他

故事的结局是否重要,很多人以为的结局是这样一种场景,杂志社的编辑告诉你,还有三个月交稿,多想多看,写坏了没关系,我们时间充裕,重新再写,好好写。

其实不是。

真正的结局是某个下午,你午睡醒来,在纸上潦草画了几笔,房门忽然被敲响,来人问你写到了哪,不管上面写了什么,你有多不甘心,多想要修改,这页就是结局。

世事无常,人生不如意太多太多。

愿大家珍惜眼前人,自己所爱之人,所爱之事,认真地过完这一生,莫要后悔。

我家先生,我喜欢他多年,从高中开始,直到现在。

感触颇深。

标签:coverage,int,interval,st,端点,ans,区间,贪心
From: https://blog.csdn.net/L3102250566/article/details/144995332

相关文章

  • Leetcode 3414. Maximum Score of Non-overlapping Intervals
    Leetcode3414.MaximumScoreofNon-overlappingIntervals1.解题思路2.代码实现题目链接:3414.MaximumScoreofNon-overlappingIntervals1.解题思路这一题算是一个比较常规的动态规划的题目吧。首先,我们将所有的区间进行排序,然后考察每一个区间是否选择的情......
  • Solution - Luogu P11456 [USACO24DEC] Interstellar Intervals G
    首先对于这个问题有一个很直观的做法是直接DP。即设\(f_i\)为已经划分出\([1,i]\)部分,且最后一段段尾为\(i\)的方案数。但是这个题还涉及到了有的点可以不染色的情况,所以再设\(g_i\)为已经划分出\([1,i]\)部分,且下一段为\(i+1\)开头的方案数。对于转移\(f\),......
  • 切换标签或页面后,setInterval还会执行吗?为什么?
    在前端开发中,当你使用setInterval设置一个定时任务,并且随后切换标签或页面,这个定时任务的行为会受到浏览器的影响,但通常它仍然会继续执行。下面是具体的原因和解释:浏览器的工作原理:浏览器是多任务的,它同时处理多个标签页和内部进程。即使你当前不在查看某个特定的标签页,浏览器......
  • 如何在切换页面后,让setInterval也准?
    在前端开发中,当你使用setInterval来定期执行某些任务时,可能会遇到一个问题:当用户切换浏览器标签页或者浏览器最小化时,大多数现代浏览器会降低或暂停JavaScript的执行频率,从而导致setInterval的执行变得不准确。为了解决这个问题,你可以考虑以下几种方法:使用requestAnimatio......
  • 使用setTimeout模拟setInterval
    在JavaScript中,setInterval是一个常用的函数,用于定期执行某个函数或代码段。然而,有时出于各种原因(例如,为了更精确地控制执行间隔,或避免可能的setInterval相关问题),我们可能想要使用setTimeout来模拟setInterval的行为。以下是一个使用setTimeout模拟setInterval的基本示......
  • setInterval
    numbersetInterval(functioncallback,numberdelay,anyrest)以Promise风格调用:不支持小程序插件:支持设定一个定时器。按照指定的周期(以毫秒计)来执行注册的回调函数参数functioncallback回调函数numberdelay执行回调函数之间的时间间隔,单位ms。anyrestpara......
  • heartbeat.interval.ms
    heartbeat.interval.ms 是Kafka中的一个配置参数,它指定了消费者或生产者向Kafka集群中的协调者(coordinator)发送心跳请求的间隔时间。以下是关于 heartbeat.interval.ms 的详细解释:定义与功能heartbeat.interval.ms 定义了消费者或生产者每隔多长时间向Kafka集群的协......
  • UT 覆盖率 报告 dotnet-coverage
    安装dotnet-coverage和dotnet-reportgeneratordotnettoolinstall-gdotnet-coveragedotnettoolinstall-gdotnet-reportgenerator-globaltool运行测试,输出XML格式:dotnet-coveragecollect-fxml-ocoverage.xmldotnettest<solution/project>例如:在测试......
  • 【Pandas】pandas interval_range
    Pandas2.2GeneralTop-leveldealingwithIntervaldata方法描述interval_range([start,end,periods,freq,…])用于生成固定长度的区间序列pandas.interval_range()pandas.interval_range()是Pandas库中用于生成固定频率的Interval对象的函数。这些Interval......
  • 油猴(Tampermonkey)时间加速、定时器setInterval、setTimeout
    时间加速网页主要使用一些定时器来作为时间间隔,可以劫持比如setInterval函数,将定时器的时间缩短。举例://将系统的setInterval保存lethookInterval=window.setInterval;//使用函数将时间缩短一半window.setInterval=function(a,b){returnhookInterval(a,b/2);}网络......