• Ball


    図のように二股に分かれている容器があります。1 から 10 までの番号が付けられた10 個の玉を容器の開口部 A から落とし、左の筒 B か右の筒 C に玉を入れます。板 D は支点 E を中心に左右に回転できるので、板 D を動かすことで筒 B と筒 C のどちらに入れるか決めることができます。

    開口部 A から落とす玉の並びを与えます。それらを順番に筒 B 又は筒 Cに入れていきます。このとき、筒 B と筒 C のおのおのが両方とも番号の小さい玉の上に大きい玉を並べられる場合は YES、並べられない場合は NO と出力するプログラムを作成してください。ただし、容器の中で玉の順序を入れ替えることはできないものとします。また、続けて同じ筒に入れることができるものとし、筒 B, C ともに 10 個の玉がすべて入るだけの余裕があるものとします。

    Input

    複数のデータセットが与えられます。1行目にデータセット数 N が与えられます。つづいて、N 行のデータセットが与えられます。各データセットに 10 個の番号が左から順番に空白区切りで与えられます。

    Output

    各データセットに対して、YES または NO を1行に出力して下さい。

    Sample Input

    2
    3 1 4 2 5 6 7 8 9 10
    10 9 8 7 6 5 4 3 2 1
    

    Output for the Sample Input

    YES
    NO

    百度翻译:有如图所示分开的容器。1到10编号的10个球从容器的开口部A掉下,左边的筒B或者右边的筒C放入玉石。板D可以以支点E为中心左右旋转,通过移动板D,来决定筒B和筒C放在哪一个。

    开口部A给予从丢落的玉石的排列。将它们按顺序放入筒B或筒C。此时,筒B和筒C各自的在号码小的玉石上被排列大的玉石的情况YES,如果不能排列请制作出NO输出的程序。但是,不能在容器中更换玉的顺序。另外,作为能够连续放进同一个筒子里的东西,筒B, C一起有10个球全部放进去的富余的东西。

    思路:简单一点,先将一个容器里填满,从小到大。在填充另一个容器,如果填充过程中出现无法填充,则NO。

     1 #include <cstdio>
     2 #include <fstream>
     3 #include <algorithm>
     4 #include <cmath>
     5 #include <deque>
     6 #include <vector>
     7 #include <queue>
     8 #include <string>
     9 #include <cstring>
    10 #include <map>
    11 #include <stack>
    12 #include <set>
    13 #include <sstream>
    14 #include <iostream>
    15 #define mod 1000000007
    16 #define eps 1e-6
    17 #define ll long long
    18 #define INF 0x3f3f3f3f
    19 using namespace std;
    20 
    21 int n,q[1005];
    22 int main()
    23 {
    24     scanf("%d",&n);
    25     while(n--)
    26     {
    27         for(int i=0;i<10;i++)
    28         {
    29             cin>>q[i];
    30         }
    31         int ma=q[0];
    32         q[0]=-1;
    33         for(int i=1;i<10;i++)
    34         {
    35             if(q[i]>ma)
    36             {
    37                 ma=q[i];
    38                 q[i]=-1;
    39             }
    40         }
    41         ma=-1;
    42         bool bo=false;
    43         for(int i=0;i<10;i++)
    44         {
    45             if(q[i]==-1)
    46                 continue;
    47             if(q[i]<ma)
    48             {
    49                 bo=true;
    50                 break;
    51             }
    52             else
    53             {
    54                 ma=q[i];
    55             }
    56         }
    57         if(bo)
    58         {
    59             printf("NO
    ");
    60         }
    61         else
    62         {
    63 
    64             printf("YES
    ");
    65         }
    66     }
    67 }
  • 相关阅读:
    Android Activity与Service的交互方式
    Android Service和Thread的区别
    Android Binder机制简单了解
    Android内的生命周期整理
    Android App的生命周期是什么
    ListView item 中TextView 如何获取长按事件
    Go之并发处理(售票问题)
    Go之简单并发
    Go之函数直接实现接口
    Go之类型判断
  • 原文地址:https://www.cnblogs.com/mzchuan/p/11178893.html
Copyright © 2020-2023  润新知