AOJ 0033 Ball:枚举

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0033

题意:

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

输入:

第一行输入数据组数N。接下来N行为N组具体数据,每组数据中有10个整数,代表球的放入顺序。

输出:

本文URL地址:http://www.bianceng.cn/Programming/sjjg/201410/45523.htm

对于每组数据,若策略存在,输出YES;若不存在,输出NO

思路:用二进制枚举即可。

完整代码:

/*0ms,1008KB*/

#include<cstdio>
#include<cstring>  

int a[15], l[15], r[15], t, i, j, lc, rc, cnt;
bool vis[15], flag;  

bool solve()
{
    for (i = 0; i < 1024; ++i)
    {
        memset(l, 0, sizeof(l));
        memset(r, 0, sizeof(r));
        lc = rc = 0;
        for (cnt = 0, j = i; cnt < 10; ++cnt, j >>= 1)
        {
            if (j & 1) l[lc++] = a[cnt];
            else r[rc++] = a[cnt];
        }
        flag = true;
        for (j = 1; j < lc; ++j)
            if (l[j] < l[j - 1])
            {
                flag = false;
                break;
            }
        if (flag)
            for (j = 1; j < rc; ++j)
                if (r[j - 1] > r[j])
                {
                    flag = false;
                    break;
                }
        if (flag) return true;
    }
    return false;
}  

int main()
{
    scanf("%d", &t);
    while (t--)
    {
        memset(vis, 0, sizeof(vis));
        for (i = 0; i < 10; ++i)
            scanf("%d", &a[i]);
        puts(solve() ? "YES" : "NO");
    }
    return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, for
, memset
, flag
, 输出
枚举description
迪威贵宾会官网dv0033、dvaj 0033女主叫什么、dvaj 0033 磁力、www.pp0033.com、yy0033 2015,以便于您获取更多的相关知识。

时间: 2024-08-30 14:24:15

AOJ 0033 Ball:枚举的相关文章

AOJ 0033 Ball

题意 题目我截图下来了,我大致解释下.有编号1到10共10个球,从上方丢下去,入口处可以选择进入左边或者右边,最后10个球全部落下去后如果左右两侧都是从小到大的顺序,则输出YES:否则输出NO. 代码 一开始我先测试了一下自己理解的题意是不是对的: #include <iostream> #include <vector> using namespace std; int main() { vector<int> left; vector<int> righ

&lt;font color=&quot;red&quot;&gt;[置顶]&lt;/font&gt;

Profile Introduction to Blog 您能看到这篇博客导读是我的荣幸,本博客会持续更新,感谢您的支持,欢迎您的关注与留言.博客有多个专栏,分别是关于 Windows App开发 . UWP(通用Windows平台)开发 . SICP习题解 和 Scheme语言学习 . 算法解析 与 LeetCode等题解 . Android应用开发 ,而最近会添加的文章将主要是算法和Android,不过其它内容也会继续完善. About the Author 独立 Windows App 和

HDU 4353 枚举

题意:给出n个点,为商人要购买的点,m个点为金矿的位置.问如何使够买三个点或三个以上的点围成的多边形面积与多边形内金矿的数量的比值最小. 这题很容易想到比值最小的肯定是三角形和在三角形内的点的数量想比.虽然我没想到.然后很容易想到四重循环来找最小的比值但是会超时,所以需要预处理一下,先把两组点按照x轴排序,枚举两个n点,针对于每组点组成的线段选线段正上方的m点,存入数组中.然后再进行n^3循环枚举3个n内的点,长线段上的m点数-两条短线段的m点数的绝对值就是三角形内的点数.为什么是绝对值,因为长

dll-有关VC6DLL模块枚举问题

问题描述 有关VC6DLL模块枚举问题 我照着书上写了一串代码:但是DLL名称没有枚举出来,想问一下大家知道怎么回事吗? #include ""iostream""#include ""windows.h""#include ""stdio.h""using namespace std; void main(){ DWORD *PEB=NULL *LDR=NULL *Flink=NULL

【转】java枚举使用详解

在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数据集",春夏秋冬四个数据元素组成了四季的"数据集". 在Java中如何更好的使用这些"数据集"呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法. Java代码   package com.ljq.test;      /**   * 枚举用法详解   *

hdu 1077 Catching Fish 计算几何+暴力枚举

   简单的暴力枚举,枚举两个点在圆上,用向量法求下圆心.复杂度o(n^3),但数据量只有300 /* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib> #include <c

HDU 4380 预处理枚举

题意:给出n个房子m个矿问从n个房子选三个组成的三角形内部矿数为奇数有多少种选法. 先预处理一下每条线段正上方有多少个点,然后在枚举三条线段就可以了. #include <iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; struct point { long long x,y; }; int

HDU 3823 暴力枚举

题意:给出A,B, 找出一个最小的m,使A+m,B+m为连续的两个素数. 枚举2000W以内的素数暴力找. #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define maxn 21000000 bool isprime[maxn]; long long prime[maxn],nprime; void getp

HDU 4569 长沙E题 枚举

题意:给你函数 f(x) = anxn +...+ a1x +a0 最多N就4位,输入任意一个x使f(x)%(prime*prime)=0. 这题枚举就可以,首先如果满足f(x)%(prime*prime)=0必须要满足f(x)%prime=0这个条件. 那么应该先找到一个x满足f(x)%prime=0,然后在(x-prime*prime)区间内x+=prime(保证f(x)%prime=0总成立),如果有f(x)%(prime*prime)=0那么就输出. 找出一个x在(0-prime)区间内