On Segment's Own Points(可用区间长度)

2024-08-31 13:08

本文主要是介绍On Segment's Own Points(可用区间长度),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目连接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=42180#problem/A

思路一:

排序合并,但是比较繁琐

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,l,r;
struct node
{
    int l,r;
}pe[103];
bool cmp(node a,node b)
{
    if(a.l==b.l)return a.r<b.r;
    else return a.l<b.l;
}
int main()
{
    while(~scanf("%d",&n))
    {
        int sum=0;
        node hb[103];
        scanf("%d%d",&l,&r);
        for(int i=0;i<n-1;i++)
        {
            scanf("%d%d",&pe[i].l,&pe[i].r);
        }
        sort(pe,pe+n-1,cmp);
        int t=0;
        hb[0].l=pe[0].l;
        hb[0].r=pe[0].r;
        for(int i=1;i<n-1;i++)
        {
            if(hb[t].r<pe[i].l)
            {
                t++;
                hb[t].l=pe[i].l;
                hb[t].r=pe[i].r;
            }
            else if(hb[t].r<pe[i].r)
            {
                hb[t].r=pe[i].r;
            }
        }
        for(int i=0;i<=t;i++)
        {
            if(hb[i].l>=l&&hb[i].r<=r)sum+=hb[i].r-hb[i].l;
            else if(hb[i].l<=l&&hb[i].r>l&&hb[i].r<=r)sum+=hb[i].r-l;//中间那个判断忘了!!!!!!!
            else if(hb[i].l>=l&&hb[i].l<r&&hb[i].r>=r)sum+=r-hb[i].l;
            else if(hb[i].l<=l&&hb[i].r>=r){sum=r-l;break;}
            //else if(hb[i].l>=r || hb[i].r<=l){sum+=0;}
        }
        if(n==1)printf("%d\n",r-l);
        else
        printf("%d\n",r-l-sum);
    }
    return 0;
}


思路二:

打表赋值0-1

#include<cstdio>
#include<iostream>
int mark[100+5]={0};
int main()
{int i,j,n,f1,s1,f,s,count=0;scanf("%d",&n);scanf("%d%d",&f1,&s1);for(i = f1; i < s1; i++)mark[i] = 1;for(i = 1; i < n; i++){scanf("%d%d",&f,&s);for(j = f; j < s; j++)mark[j] = 0;}for(i = f1; i < s1; i++)if(mark[i]==1)count++;printf("%d",count);return 0;
}
思路三:

++、--当flat为0的时候才累加长度

#include<stdio.h>
#include<string.h>
int flag[105];
int main (){
int n,m,a,b,s,e,sum,k;
int i,j;
while(scanf("%d",&n)!=EOF){
memset(flag,0,sizeof(flag));
scanf("%d%d",&s,&e);
for(i=1;i<n;i++){
scanf("%d%d",&a,&b);
flag[a]++,flag[b]--;
}
sum=0;
k=0;
for(i=0;i<=100;i++){
sum+=flag[i];
if(i>=s&&i<e&&sum==0)
k++;
}
printf("%d\n",k);
}
}

这篇关于On Segment's Own Points(可用区间长度)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123995

相关文章

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :

hdu4267区间统计

题意:给一些数,有两种操作,一种是在[a,b] 区间内,对(i - a)% k == 0 的加value,另一种操作是询问某个位置的值。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import

hdu4417区间统计

给你一个数列{An},然后有m次查询,每次查询一段区间 [l,r] <= h 的值的个数。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamRead

hdu3333区间统计

题目大意:求一个区间内不重复数字的和,例如1 1 1 3,区间[1,4]的和为4。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

VMware8实现高可用(HA)集群

陈科肇 =========== 操作系统:中标麒麟高级操作系统V6 x86-64 实现软件:中标麒麟高可用集群软件 ======================== 1.环境的规划与配置 硬件要求 服务器服务器至少需要 2 台,每台服务器至少需要 2 块网卡以做心跳与连接公网使用存储环境 建议使用一台 SAN/NAS/ISCSI 存储作为数据共享存储空间 软

用Cri-O,Sealos CLI,Kubeadm方式部署K8s高可用集群

3.6 Cri-O方式部署K8s集群 注意:基于Kubernetes基础环境 3.6.1 所有节点安装配置cri-o [root@k8s-all ~]# VERSION=1.28[root@k8s-all ~]# curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensu

Kubernetes高可用集群搭建(kubeadm)

1 Kubernetes高可用集群介绍 前面已经介绍了Kubernetes的集群部署,但是都只是介绍的单master节点的情况,由于单master节点的可靠性不高,不适合实际的生产环境,此处介绍如何实现多master节点的高可用集群的搭建。 2 安装要求 一台或多台机器,操作系统CentOS7.x-x86_64硬件配置:2G或更多ARM,2个CPU或更多CPU,硬盘20G及以上集群中所有机器