首页 > 代码库 > ·BC」 Round 12

·BC」 Round 12

 

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

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

 

 

HDU 5058 - So easy ( 这尼玛真的so easy )

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

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

/* ***********************************************ID      : whiteblock63LANG    : G++PROG    : BC #12 1001DATE    : 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;}
可以再傻逼一点吗?

 

 

 

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

考虑问题要全面:

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

2. len = 0 , 空串、、、

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

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

5. others

/* ***********************************************ID      : whiteblock63LANG    : G++PROG    : BC #12 1002DATE    : 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代码

 

·BC」 Round 12