很久没有做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