约会时间计算

【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;
}

上一篇:3、逻辑回归 && 正则化


下一篇:记一次alwayson主从执行计划不一致