·BC」 Round 12

很久没有做BC了,这次又是悲剧,1002到死都是WA,题目意思误解了,而且最后还忽略了一个问题

就是如果len==1 && str[0] == ‘-‘ 的情况。。悲剧致死。

HDU5058 - So easy ( 这尼玛真的so easy )

我直接用了set,然后遍历。。

后来发现,,,,集合直接相等不就完了。。。果然stl用得不熟练。。作死。

/* ***********************************************
ID      : whiteblock63
LANG    : G++
PROG    : BC #12 1001
DATE    : 2014-10-05 18:56:48
************************************************ */

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <set>
#define CLR( a, b )        memset( a, b, sizeof(a) )
using namespace std;

set<int> S;
set<int> T;
int n, x;
int main()
{
    while( ~scanf( "%d",&n) ){
        S.clear();
        T.clear();
        for( int i = 1; i <= n; ++i ){
            scanf("%d", &x);
            S.insert(x);
        }
        for( int i = 1; i <= n; ++i ){
            scanf("%d", &x);
            T.insert(x);
        }
        int flag = 1;

        set<int>::iterator it1;
        set<int>::iterator it2;
        if( S.size() == T.size() ){
            for( it1 = S.begin(), it2 = T.begin(); it1 != S.end(); it1++,it2++){
                if(*it1 != *it2){
                    flag = 0;
                    break;
                }
            }
        }
        else{
            flag = 0;
        }

        if( flag )
            puts("YES");
        else
            puts("NO");

    }

    return 0;
}

代码君

#include <cstdio>
#include <set>
using namespace std;
set<int> S, T;
int n, x;
int main(){
    while( ~scanf( "%d",&n) ){
        S.clear();
        T.clear();
        for( int i = 1; i <= n; ++i ){
            scanf("%d", &x);
            S.insert(x);
        }
        for( int i = 1; i <= n; ++i ){
            scanf("%d", &x);
            T.insert(x);
        }
        if( S == T )
            puts( "YES" );
        else
            puts( "NO" );
    }
    return 0;
}

可以再傻逼一点吗?

HDU5059 - Help him ( 这尼玛真的so 坑爹)

考虑问题要全面:

1. len > 11 ,就算是合法的数,数值也大于1E9

2. len = 0 , 空串、、、

3. len = 1, 但是 str[0] = ‘-‘

4. len = 1, str[0] = 0

5. others

/* ***********************************************
ID      : whiteblock63
LANG    : G++
PROG    : BC #12 1002
DATE    : 2014-10-05 19:14:47
************************************************ */

#include <cstdio>
#include <cstring>
#define CLR( a, b )        memset( a, b, sizeof(a) )
using namespace std;
char str[101];
int n, x, l, r;

bool judge(char* s){
    int len = strlen(s);
    if( len > 11 )    return false;
    if( len == 0 )    return false;
    if( len == 1 && s[0] == ‘-‘ )    return false;
    if( ( s[0] < ‘0‘ || s[0] > ‘9‘ ) && s[0] != ‘-‘ )    return false;
    if( s[0] == ‘-‘ ){
        if( s[1] == ‘0‘ )    return false;
        long long t = 0;
        for( int i = 1; i < len; ++i ){
            if( s[i] < ‘0‘ || s[i] > ‘9‘ ) return false;
            t = t*10 + s[i] - ‘0‘;
        }
        t = -t;
        if( t >= l && t <= r )
            return true;
    }else{
        if( s[0] == ‘0‘ && len > 1 )    return false;
        long long t = 0;
        for( int i = 0; i < len; ++i ){
            if( s[i] < ‘0‘ || s[i] > ‘9‘ ) return false;
            t = t*10 + s[i] - ‘0‘;
        }
        if( t >= l && t <= r )
            return true;
    }
    return false;
}

int main()
{
    while( gets(str) ){
        scanf( "%d %d",&l, &r );
        getchar();
        if( judge(str) )     puts( "YES" );
        else                 puts( "NO" );
    }

    return 0;
}

AC代码

时间: 2024-10-12 03:18:47

·BC」 Round 12的相关文章

&#183;BC」 Round 5

这次就看了第一题,而且还做得够呛. 到最后都不知道正确的做法. 看完题解之后有一种想自杀的感觉 1.HDU 4956 - Poor Hanamichi (..找规律 ) 可以证明,真的不知道怎么证明,别人说是打表 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 int T; 6 7 bool check(__int64 t) 8 { 9 __

&#183;BC」 Round 3

1.HDU 4097 - Task schedule ( Hash+倒序处理 or 并查集 ) 输入的第一行包含一个整数T, 表示一共有T组测试数据. 对于每组测试数据: 第一行是两个数字n, m,表示工作表里面有n个任务, 有m个询问: 第二行是n个不同的数字t1, t2, t3....tn,表示机器在ti时间执行第i个任务. 接下来m行,每一行有一个数字q,表示在q时间有一个工作表之外的任务请求. 特别提醒:m个询问之间是无关的. #include <cstdio> #include &l

BestCoder Round #12 War(计算几何)

War Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 81    Accepted Submission(s): 23 Special Judge Problem Description Long long ago there are two countrys in the universe. Each country haves i

Codeforces Beta Round #12 D. Ball (线段树)

题目大意: n个女性中,如果有一个女性的三维比这个女性的三维都大,这个女性就要自杀.问要自杀多少个. 思路分析: 先按照第一维排序. 然后离散化第二维,用第二维的下标建树,树上的值是第三维,更新的时候取最大值. 注意是按照第一维度从大到小进入线段树. 而且还要严格递增. 所以处理第一维度比较大小的时候要分开处理,要把相同的先判断,再更新入树. 那么如何判断这个女性是否自杀. 首先,你知道第一维度是从大到小的,所以先进树了的节点的第一维度一定更大. 再次,我们考虑第二维度,我们去树上第二维度下标大

Codeforces Beta Round #12 (Div 2 Only)

Codeforces Beta Round #12 (Div 2 Only) http://codeforces.com/contest/12 A 水题 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,mid,rt<<1 4 #define rson mid+1,r,rt<<1|1 5 #define sqr(x) ((x)*(x)) 6 #define maxn 1000010 7 t

Codeforces Beta Round #12 (Div 2 Only) D. Ball 树状数组查询后缀、最值

http://codeforces.com/problemset/problem/12/D 这里的BIT查询,指的是查询[1, R]或者[R, maxn]之间的最值,这样就够用了. 设三个权值分别是b[1], b[2], b[2]; 首先,先把b[1]值离散化,离散成一个个id,那么只能是在id比较大的地方找了.然后把b[2]排序,倒序查询,也就是先查询最大的,当然它是没可能自杀的,因为它已经最大了,然后查询完后,把它压进bit后,以后在bit查询,就不需要管b[2]了,因为在bit里面的b[2

Testing Round #12 A,B,C 讨论,贪心,树状数组优化dp

题目链接:http://codeforces.com/contest/597 A. Divisibility time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Find the number of k-divisible numbers on the segment [a, b]. In other words you need

Codeforces Beta Round #12 (Div 2 Only) D. Ball sort/map

D. Ball Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/12/D Description N ladies attend the ball in the King's palace. Every lady can be described with three values: beauty, intellect and richness. King's Master

“玲珑杯”ACM比赛 Round #12 (D) 【矩阵快速幂的时间优化】

//首先,感谢Q巨 定义状态向量b[6] b[0]:三面临红色的蓝色三角形个数 b[1]:两面临红色且一面临空的蓝色三角形个数 b[2]:一面临红色且两面临空的蓝色三角形个数 b[3]:三面临红色的黄色三角形个数 b[4]:两面临红色且一面临绿+的黄色三角形个数 b[5]:一面临红色且两面临绿+的黄色三角形个数 转移矩阵: [3 1 0 0 0 0;0 2 2 0 0 0;0 1 3 0 0 0;3 2 1 0 0 0;0 0 0 6 3 0;0 0 0 0 2 4] 最朴素的TLE代码 #in