ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

约会时间计算

2021-12-26 16:04:20  阅读:175  来源: 互联网

标签:r1 约会 time 时间 计算 l1 y1 l2 y2


【id:168】【10分】H. 约会

题目描述

Alice和Bob都是动车工作人员。然而他们并不服务于同一列动车。
今天,Alice跟随一列动车从深圳去往北京,而Bob跟随另一列动车从北京去往深圳。动车在中途会在某些站点停留一定的时间。
好消息是,两列动车都会在武汉站进行一段时间的停留,这给Alice和Bob创造了见面约会的机会。
已知Alice跟随的动车在[l1,r1]这段时间停在武汉站,Bob跟随的动车在[l2,r2]这段时间中停在武汉站,他们同时在武汉站的时间全部可以用来见面约会。
然而,作为一个爱美的妹子,会可以不约,妆不能不补。所以,Alice在时间区间[l3,r3]中需要补妆。而这段时间中两人是不能够约会的。
相聚总是短暂的,你能计算出两人的约会时间吗?

输入

第一行一个整数t,表示数据组数,不超过100。
每个测试数据第一行包含六个正整数,其中,保证所有数据在整型范围内。

输出

每组数据包含一行,两人约会的时间。

正文

第一想法是采用碰撞检测的思维,有时间再看看其他方法

  #include<stdio.h>
int main(void)
{
    int i,n,k,l1,l2,l3,r1,r2,r3,y1,y2,flag=0,time=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
   {
    scanf("%d %d %d %d %d %d",&l1,&r1,&l2,&r2,&l3,&r3);
    //女方和男方是否有重合时间
    //女在前
    if(l1<l2&&l2<=r1)
    {
        if(r1>r2)
        {
            time=time+(r2-l2+1);//时间计算定义上有区别,故加一
            y1=l2;
            y2=r2;
        }
        else
        {
            time=time+(r1-l2+1);
            y1=l2;
            y2=r1;
        }    
    }
    //开始时间重合 
    else if(l1==l2)
    {
        if(r1>=r2)
        {
          time=time+(r2-l2+1);
          y1=l2;
          y2=r2;
        }
        else
        {
          time=time+(r1-l1+1);
          y1=l1;
          y2=r1;
        }
    }
    //男在前 
    else if(l1>l2&&l1<=r2)
    {
        if(r1<=r2)
        {
          time=time+(r1-l1+1);
          y1=l1;
          y2=r1;
        }
        else
        {
          time=time+(r2-l1+1);
          y1=l1;
          y2=r2;
        }
    }
    //化妆
    
    while(time!=0)
    {
        if(l3<y1&&y1<r3)
    {
        if(r3>=y2)
        {
            time=time-(y2-y1+1);
        }
        else
        {
            time=time-(r3-y1+1);
        }    
    }
    //开始时间重合 
    else if(l3==y1)
    {
        if(r3>=y2)
        {
          time=time-(y2-y1+1);
        }
        else
        {
          time=time-(r3-l3+1);
        }
    }
    //男在前 
    else if(l3>y1&&l3<y2)
    {
        if(r3<=y2)
        {
          time=time-(r3-l3+1);
        }
        else
        {
          time=time-(y2-l3+1);
        }
    }
    flag=time;
    time=0;
    } 
    printf("%d\n",flag);
    flag=0; 
   }
   return 0;
}

标签:r1,约会,time,时间,计算,l1,y1,l2,y2
来源: https://blog.csdn.net/shadow_of_maple/article/details/122156368

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有