题目大意: 有编号1到10共10个球,从上方丢下去,入口处可以选择进入左边或者右边,最后10个球全部落下去后如果左右两侧都是从小到大的顺序,则输出YES;否则输出NO。

  题目原本的标签枚举,复杂度是2^10,,,很容易水过。我这里说的是用贪心的方法,直接扫一遍O(10)复杂度: 设两个栈 模拟左右两个管; 对于每一个球有以下几种处理情况:

1、如果两个栈都为空,就往任意一个栈里放入小球

2、如果当前小球编号同时小于两个栈的栈顶小球编号,则直接输出"NO"

3、如果当前小球编号比其中一个栈的栈顶小球编号小,则放入另一个栈中

4、如果仅有一个栈空或都不为空,就判断当前小球编号是否为其中一个栈的栈顶小球编号数+1,是的话就放入那个栈内

5、当前小球编号都不为两个栈栈顶的小球编号数+1,那就判断哪个栈的栈顶小球编号数距其最近,就放入哪个栈

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <queue>
#include <stack>
#include <map>
#include <vector>
#include <set>
#include <utility>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; int a[];
int main()
{
//freopen("input.txt","r",stdin);
int n;
scanf("%d",&n);
while(n--)
{
for(int i=; i<; i++)
scanf("%d",&a[i]);
//
stack<int> sl,sr;
sl.push(a[]);
//
bool flag=true;
for(int i=; i<; i++)
{
if(!sr.empty())
{
if(a[i]<sl.top()&&a[i]<sr.top())
{
flag=false;
break;
}
else
{
if(a[i]==sl.top()+)
sl.push(a[i]);
else if(a[i]==sr.top()+)
sr.push(a[i]);
else if(a[i]<sl.top())
sr.push(a[i]);
else if(a[i]<sr.top())
sl.push(a[i]);
else
{
if((a[i]-sl.top())<(a[i]-sr.top()))
sl.push(a[i]);
else
sr.push(a[i]);
}
}
}
else
{
if(a[i]==sl.top()+)
sl.push(a[i]);
else
sr.push(a[i]);
}
}
//
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return ;
}

Aizu/Aoj 0033 Ball的更多相关文章

  1. AOJ 0033 Ball【DFS】

    有一个筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B管或C管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B管和C管中的球从下往上标号递增. 输入: 第一行输 ...

  2. aoj 0033 Ball【dfs/枚举】

    有一个形似央视大楼(Orz)的筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B裤管或C裤管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B裤管和C裤管中的球从下 ...

  3. AOJ -0033 Ball(DFS)

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=22516 一道需要思考的搜索题. 题意:十个球按给定顺序从图中所示容器中下落, ...

  4. Aizu 0033 Ball(dfs,贪心)

    日文题面...题意:是把一连串的有编号的球往左或者往右边放.问能不能两边都升序. 记录左边和右边最上面的球编号大小,没有就-1,dfs往能放的上面放. #include<bits/stdc++. ...

  5. AOJ 0033 深度优先搜索

    题意:按给定顺序从A口放标号位1-10的10个球,利用挡板可以使球落到B或C,问能否使B和C里的球标号从下往上递增. 分析:对于第 i 个球,若a[i]大于B口上方的球,则可放入B口:若a[i]大于C ...

  6. aoj 0033 玉

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

  7. AIZU AOJ 2309 Vector Compression 最小树形图(朱—刘算法)

    题意简述:给定若干个相同维度的向量,寻找一种排序方法,使得所有向量的表示长度总和最低. 所谓表示长度为(Aj-r*Ai)^2,其中i<j  数据范围:向量总数和维度均小于100 思路:(1)首先 ...

  8. Aizu/Aoj 0121 Seven Puzzle

    这题应该算是经典的八数码问题的弱化版吧:给你一个4x2的方版,上面有0-7 八个数字,每次只能让编号0的方格跟他的上下左右的方格交换:所以也就是把方格0当做空格看待,每次只有空格周围的方格能够向空格处 ...

  9. nomasp 博客导读:Android、UWP、Algorithm、Lisp(找工作中……

    Profile Introduction to Blog 您能看到这篇博客导读是我的荣幸.本博客会持续更新.感谢您的支持.欢迎您的关注与留言.博客有多个专栏,各自是关于 Android应用开发 .Wi ...

随机推荐

  1. Wireshark 、HTTPWatch、Fiddler的介绍

    一.Wireshark  <TCP/IP协议监听> Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包 ...

  2. C99新增内容之变长数组(VLA)

    我们在使用多维数组是有一点,任何情况下只能省略第一维的长度.比如在函数中要传一个数组时,数组的行可以在函数调用时传递,当属数组的列却只能在能被预置在函数内部.看下面一个例子: #define COLS ...

  3. mysql主从不同步,提示更新找不到记录

    查看丛库状态show slave status\G 从库原文提示:Last_Error: Coordinator stopped because there were error(s) in the ...

  4. 启动Mysql时,提示error 2002 的解决办法

    故障描述 启动时提示ERROR 2002(HY000) 启动服务时,提示the server quit without updating PID file. 解决方法一: 1.由于mysql是卸载后重 ...

  5. ROS:使用ubuntuKylin17.04安装ROS赤xi龟

    使用ubuntuKylin17.04安装 参考了此篇文章:SLAM: Ubuntu16.04安装ROS-kinetic 重复官方链接的步骤也没有成功. 此后发现4.10的内核,不能使用Kinetic. ...

  6. webSphere

    WebSphere 是 IBM 的软件平台.它包含了编写.运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台.跨产品解决方案所需要的整个中间件基础设施,如服务器.服务和工具.WebSphe ...

  7. MVC 返回404,返回图片,流到数组,apk信息

    return HttpNotFound(); byte[] buffer0 = QRCode(); return File(buffer0, @"image/jpeg"); // ...

  8. 数据迁移 Migration

  9. spring-boot启动自动执行sql文件失效 解决办法

    在springboot1.5及以前的版本,要执行sql文件只需在applicaion文件里指定sql文件的位置即可.但是到了springboot2.x版本, 如果只是这样做的话springboot不会 ...

  10. 关于大XML文件与大节点处理(System.Xml.XmlTextReader)

    近期有个任务要求处理大XML文件,其中有个存了Base64的大节点(>90M,路径已知). 这种任务只能上XmlReader,即使如此大节点的处理还是头疼了一阵…… 最初查MSDN的时候,找到了 ...