• Ping-Pong (Easy Version)的解析


    原题链接:http://codeforces.com/problemset/problem/320/B

    之前自己做的时候一直读不懂题意,看了大佬的博客才知道是用dfs写,一道暴力搜索大水题https://www.cnblogs.com/windysai/p/3531473.html

    题目意思:有两种操作:"1 x y"  (x < y) 和 "2 a b" (a ≠ b) 。 问对于的"2 a b" 询问,能否从第a行的区间到达第b行的区间(行的数量是以:"1 x y" 来统计的,不包括"2 a b"这些行),当然可以直达,也可以借助某些区间间接到达。假设给定一个区间为 (a, b) ,能到达区间 (c, d) 的条件需要满足 c < a < d 或者c < b < d 。以题目中的数据为例,

    5
    
    1 1 5
    1 5 11
    2 1 2
    1 2 9
    2 1 2


         对于第3行的 2  1  2,即问从第1行:1  1  5 是否可以到达第2行的 1  5  11,这明显是不能的,因为 5 < 1 < 11 和 5 < 5 < 11 都不满足。而第5行的 2  1  2 则是可以的,因为可以借助1  2  9 这个桥梁:(1  5) ——> (2  9) ——> (5  11)。理由是 2 < 5  < 9 和  5 < 9 < 11。

    #include <iostream>
    #include <cstring>
    #include <string>
    #include <cmath>
    #include <algorithm>
    
    using namespace std;
    int n;
    typedef pair<long long ,long long> PII;
    PII p[110];
    int cun=0;
    
    int v[110];
    bool check(int x,int y)
    {
          return((p[x].first < p[y].second && p[x].first > p[y].first) || (p[x].second < p[y].second && p[x].second > p[y].first));
    }
    void dfs(int x)
    {
        if(v[x])return;
        v[x]=1;
        for(int i=0;i<cun;i++)
        {
            if(check(x,i))
            {
                dfs(i);
            }
        }
        return ;
    }
    int main()
    {
        cin >> n;
        while(n--)
        {
            int a,b,c;
            cin >> a >> b >>c;
            if(a==1)
            {
                p[cun].first = b;
                p[cun].second=c;
                cun++;
            }
            else if(a==2)
            {
                memset(v,0,sizeof(v));
                dfs(b-1);
                if(v[c-1])
                {
                    cout <<"YES"<<endl;
                }
                else
                {
                    cout <<"NO"<<endl;
                }
            }
    
        }
        return 0;
    }

     你的脸上风淡云轻,谁也不知道你的牙咬得有多紧。你走路带着风,谁也不知道你膝盖上仍有曾摔过的伤的淤青。你笑得没心没肺,没人知道你哭起来只能无声落泪。要让人觉得毫不费力,只能背后极其努力。我们没有改变不了的未来,只有不想改变的过去。

    你的脸上风淡云轻,谁也不知道你的牙咬得有多紧。你走路带着风,谁也不知道你膝盖上仍有曾摔过的伤的淤青。你笑得没心没肺,没人知道你哭起来只能无声落泪。要让人觉得毫不费力,只能背后极其努力。我们没有改变不了的未来,只有不想改变的过去。
  • 相关阅读:
    【像程序员一样思考】读书笔记4
    MFC ListControl 与 Excel 数据的导入导出
    OpenCV中findContours函数的使用
    十大算法
    qsort对二维数组的排序
    【像程序员一样思考】读书笔记3
    【像程序员一样思考】 读书笔记2
    【像程序员一样思考】 读书笔记1
    代码混淆
    布局优化
  • 原文地址:https://www.cnblogs.com/wangzhe52xia/p/11393273.html
Copyright © 2020-2023  润新知