zoukankan      html  css  js  c++  java
  • 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;
    }

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

    你的脸上风淡云轻,谁也不知道你的牙咬得有多紧。你走路带着风,谁也不知道你膝盖上仍有曾摔过的伤的淤青。你笑得没心没肺,没人知道你哭起来只能无声落泪。要让人觉得毫不费力,只能背后极其努力。我们没有改变不了的未来,只有不想改变的过去。
  • 相关阅读:
    javaweb基础(6)_servlet配置参数
    javaweb基础(5)_servlet原理
    读书笔记:java特种兵(上)
    基础算法(四):海量数据的处理方法
    基础算法(三)动态规划和贪心算法
    基础算法(二):堆排序,快速排序
    基本算法(一):插入排序,归并排序
    JVM基础和调优(六)
    JVM基础和调优(五)
    JVM基础和调优(四)
  • 原文地址:https://www.cnblogs.com/wangzhe52xia/p/11393273.html
Copyright © 2011-2022 走看看