我是靠谱客的博主 酷酷星星,最近开发中收集的这篇文章主要介绍区间覆盖问题Love is worth years.❤ 热爱可抵岁月漫长。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

前言

题目介绍

解决思路:

贪心策略:

理论存在,实践开始!

全部代码如下:

总结: 

Love is worth years.❤热爱可抵岁月漫长。


前言

区域覆盖问题!!!!!!!!!!!!!!!!!!!!!!!!!不用我多说了吧!!
 

29035e22acd844fe8ab6217fe6aaa173.gif


题目介绍

b20e5307108e4461930e2925231b2737.png


解决思路:

12dfff16be97478cbe1a19e4943cb9df.png

 怎么做呢??很简单了!

贪心策略:

我们把他们每个之间的距离从大到小排列,每用一个线段,抵消一个大距离,最后用线段换距离

最后用总长减去换去的距离就是我们想要找到的!!!


理论存在,实践开始!


全部代码如下:

#include <stdio.h>
void sort (int *a,int *b,int n);
void sort (int *a,int *b,int n)
{
    int i,j,t,tt;
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-1-i;j++)
        {
            if(a[j]<=a[j+1])
            {
                t=a[j];a[j]=a[j+1];a[j+1]=t;
                t=b[j];b[j]=b[j+1];b[j+1]=t;
            }
        }
    }
}//不必多说,冒泡排序降序。

int main()
{
    
    int n,m;
    while(~scanf("%d%d",&n,&m))//输入包括多组数据,区间个数n(1≤n≤200) 使用线段数m(1≤m≤50)。
    {
         int end[n];//区间结束
        int start[n];//区间开始
        int dis[n-1];//区间间隔
        int i;
        int mmm[200]={1};//忽略它
        for (i=0;i<n;i++)
        {
            scanf("%d",&end[i]);
            start[i]=end[i]-1;
        }

        sort(start,end,n);//按照开始节点排序

        for (i=0;i<n;i++)
        {
            dis[i]=start[i]-end[i+1];//计算并储存间隔
        }
         int al=end[0]-start[n-1];//长度和因为我们降序排列的所以第一个的end-最后一个的start就是长度和
        sort(dis,mmm,n-1);//按照间隔大小降序排序
        
       
        
        if(m > n){printf("%d",n);return 0;}//可以不写如果使用的线段数比这个线段数还多的话,那肯定直接输出每个线段的总长度是最短的
            
        int nl=1;//计数器(使用线段)
        int node=0;//计数器(距离)
        
        while (nl<m && dis[node]>0)
        {
            
            nl++;
            al=al-dis[node];
            node++;//再用一个线段将第一个大距离分开使长度最短以此类推达到目的
        }
    
        printf("%dn",al);
    }
   
            return 0;
    
}

总结: 

1.制定好适合的贪心策略

2.用总长减去使用的距离

3.专心写代码,代码里有注释解析哦!!

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYzByZQ==,size_20,color_FFFFFF,t_70,g_se,x_16

Love is worth years.
热爱可抵岁月漫长。

 

 

最后

以上就是酷酷星星为你收集整理的区间覆盖问题Love is worth years.❤ 热爱可抵岁月漫长。的全部内容,希望文章能够帮你解决区间覆盖问题Love is worth years.❤ 热爱可抵岁月漫长。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部