Codeforces Round #371 (Div. 2) A. Meeting of Old Friends【思维,求区间交集】

题意:给定2个时间区间[L1,R1],[L2,R2],求交集,如果给定的k在交集中,那么交集时间-1。

思路:首先对两个区间的长度进行判断,判断之后,再以[L1,R1]这个区间不动, [L2,R2]这个区间去动,长度判断之后分类讨论就很容易了.. 主要是代码量有点大。 容易打晕。还有爆int。

数据分析:1 ≤ l1, r1, l2, r2, k ≤ 1e18, l1 ≤ r1, l2 ≤ r2 注意1e18会爆len1 int类型。 一看到这种东西,就开LL就没问题了。对数据一定要敏感

复杂度分析:勉强认为O(1)吧!

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ans=0;
int main(void)
{
    ll l1,r1,l2,r2,k;
    cin >> l1>> r1>> l2 >> r2 >>k;
    ll len1=r1-l1; //注意爆int的情况
    ll len2=r2-l2;
    //cout << len1 <<endl << len2<< endl;
    if(len1 > len2)//接下就是分类讨论了
    {
        if(r2<l1 || l2 >r1)
        {
            printf("0\n");
        }
        else if(r2>=l1&&l2<=l1)
        {
            ans=r2-l1+1;
            if(l1<=k && k<=r2)
                ans--;
            cout << ans << endl;
        }
        else if(l2>=l1 && r2<=r1)
        {
            ans=r2-l2+1;
            if(k>=l2 && k<=r2)
                ans--;
            cout << ans << endl;
        }
        else if(l2<=r1 && r2>=r1)
        {
            ans=r1-l2+1;
            if(k>=l2 && k<=r1)
                ans--;
            cout << ans << endl;
        }
    }
    else if(len1 <= len2)
    {
        if(r2<l1 || l2 >r1)
        {
            printf("0\n");
        }
        else if(r2>=l1 && r2<=r1 && l2<=l1)
        {
            ans=r2-l1+1;
            if(k>=l1&&k<=r2)
                ans--;
            cout << ans << endl;
        }
        else if(r2 >=r1 && l2<=l1)
        {
            ans=r1-l1+1;
            if(k>=l1 && k<=r1)
            ans--;
            cout << ans << endl;
        }
        else if(l2>=l1 && l2 <=r1 && r2 >=r1)
        {
            ans=r1-l2+1;
            if(k>=l2 &&k<=r1)
                ans --;
            cout << ans << endl;
        }
    }
    return 0;
}
全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务