• 1105 平台(空间)


    1105 平台

    这是一个区间性的问题,我很害怕这样的问题,
    我对这种东西没思路
    看输入,一个高度,然后是两个结尾的左右端点
    就是一个很简单的模拟,两个线段的输出而已
    还得注意,输出的是什么呢?
    那么如果球从最上面的平台i,球从左边掉下来,只要判断它下一个(需要我们自己模拟)j的左沿是否小于等于最上面的左沿
    至于为什么这就是一个常识,需要接住这个球
    j的右沿是否大于等于1的左沿,如果是如此,就找到答案,输出即可
    同样,要使从最上面的右边掉下来,一样,只不过反过来了
    为什么左和左比,右边还要和右比?
    -------------i
    -----------------j
    这样,j的左小于i的左,j的右边大于i的左
    所以能接住

    可是如果j的左不小于i的左呢
    -------------i
    -----------------j
    这样肯定就肯定调不到
    那j的左小于i的左,可是j的右不大于i的左呢?
    也就是这种情况,我们之分析了一个,也就是左边的,再分析一下右边就好了,同理的一个
    -------------i
    -----------------j

    #include
    #include
    #include
    #include
    #include
    #include 
    using namespace std;
    const int SIZE=1005;
    int n; 
    int a[SIZE],b[SIZE],c[SIZE];
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i]>>b[i]>>c[i];//左右端点还有一个高度 
        for(int i=1;i<=n;i++)
        {
        	int t=0,s=0;//两个变量 
            for(int j=1;j<=n;j++)
                if(a[i]>a[j]&&b[i]>b[j]&&b[i]<c[j])
                    if(a[t]<a[j])
                        t=j;
            cout<<t;
    		cout<<" ";
            for(int j=1;j<=n;j++)
                if(a[i]>a[j]&&c[i]>b[j]&&c[i]<c[j])//两个判断 
                    if(a[s]<a[j])
                        s=j;
            cout<<s<<endl;
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    企业为什么要选择通配符SSL证书使用?
    程序员疯抢的 Java 面试宝典(PDF 版)限时开源,别把大厂想的那么难,关键是你准备得如何
    Android---深入理解AQS和CAS原理
    解读 --- Span<T>
    arthas诊断工具
    Compose竖向列表LazyColumn
    医学(残篇)持续更新
    如何评估企业的数据质量
    JavaScript高级,ES6 笔记 第三天
    Android之活动(Activity)
  • 原文地址:https://blog.csdn.net/CCCCDEV_CCCC/article/details/126089422