Codeforces Round #313 (Div. 2) A B C D

来源:互联网 发布:mac os x 10.12懒人版 编辑:程序博客网 时间:2024/05/30 23:06

A - Currency System in Geraldion 用n个不同整数求最小不能组合出来的正整数,没有输出-1.看似背包- -其实判断有没有1就行了。

const int N = 100100;int a[N];int main(){    int n;    while( ~scanf("%d", &n) ) {        int minn = inf;        for( int i = 1; i <= n; ++i ) {            scanf("%d", &a[i]);            minn = min( minn, a[i] );        }        if( minn == 1 )            printf("-1\n");        else            printf("1\n");    }    return 0;}
B - Gerald is into Art 问两个矩阵能不能放在一个大矩阵里面,且不重叠。暴力判断各种情况即可

#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <time.h>#include <vector>#include <cstdio>#include <string>#include <iomanip>///cout << fixed << setprecision(13) << (double) x << endl;#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1#define ls rt << 1#define rs rt << 1 | 1#define pi acos(-1.0)#define eps 1e-8#define Mp(a, b) make_pair(a, b)#define asd puts("asdasdasdasdasdf");typedef long long ll;//typedef __int64 LL;const int inf = 0x3f3f3f3f;const int N = 100100;int l1, l2, l3;int r1, r2, r3;int main(){    while( cin >> l1 >> r1 >> l2 >> r2 >>l3 >> r3 ) {        bool f = 0;        if( l1 >= l2+l3 && r1 >= max( r2, r3 ) )            f = 1;        if( l1 >= l2+r3 && r1 >= max( l3, r2 ) )             f = 1;        if( l1 >= r2+r3 && r1 >= max( l2, l3 ) )            f = 1;        if( l1 >= l3+r2 && r1 >= max( l2, r3 ) )            f = 1;        if( r1 >= l2+l3 && l1 >= max( r2, r3 ) )            f = 1;        if( r1 >= l2+r3 && l1 >= max( l3, r2 ) )             f = 1;        if( r1 >= r2+r3 && l1 >= max( l2, l3 ) )            f = 1;        if( r1 >= l3+r2 && l1 >= max( l2, r3 ) )            f = 1;        if( f )            cout << "YES" << endl;        else            cout << "NO" << endl;    }    return 0;}

C - Gerald's Hexagon 问给出的六边形里面有多少边长1的正三角形。先补全六边形为一个大的正三角形,然后减去补全部分的三角形即可

#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <time.h>#include <vector>#include <cstdio>#include <string>#include <iomanip>///cout << fixed << setprecision(13) << (double) x << endl;#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1#define ls rt << 1#define rs rt << 1 | 1#define pi acos(-1.0)#define eps 1e-8#define Mp(a, b) make_pair(a, b)#define asd puts("asdasdasdasdasdf");typedef long long ll;//typedef __int64 LL;const int inf = 0x3f3f3f3f;const int N = 100100;int main(){    int q, w, e, r, t, y;    while( cin >> q >> w >> e >> r >> t >> y ) {        int n = q + w + e;        int ans = n * n - q * q - e*e - t*t;        cout << ans << endl;    }    return 0;}

D - Equivalent Strings 给出两个长度相等的字符串,问这两个串是否满足定义上的相等。相等:a = b或a,b分别等分成a1,a2,b1,b2.然后a1 = b1&&a2=b2 || a1 = b2 && a2 = b1

我A的字符串hash跪了  - -然而纯暴力搜索能过。。居然能过

#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <time.h>#include <vector>#include <cstdio>#include <string>#include <iomanip>///cout << fixed << setprecision(13) << (double) x << endl;#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1#define ls rt << 1#define rs rt << 1 | 1#define pi acos(-1.0)#define eps 1e-8#define Mp(a, b) make_pair(a, b)#define asd puts("asdasdasdasdasdf");typedef long long ll;//typedef __int64 LL;const int inf = 0x3f3f3f3f;const int N = 200100;char a[N], b[N];int dfs( int l1, int r1, int l2, int r2 ){bool f = 1;for( int i = l1, j = l2; i < r1; ++i, ++j )if( a[i] != b[j] ) {f = 0;break;}if( f )return 1;if( (r1-l1) % 2 )return 0;if( dfs( l1, l1+(r1-l1)/2, l2, l2+(r2-l2)/2 ) && dfs( l1+(r1-l1)/2, r1, l2+(r2-l2)/2, r2 ) )return 1;if( dfs( l1, l1+(r1-l1)/2, l2+(r2-l2)/2, r2 ) && dfs( l1+(r1-l1)/2, r1, l2, l2+(r2-l2)/2 ) )return 1;}int main(){int l1, l2;while( ~scanf("%s%s", a, b) ) {l1 = strlen( a );l2 = strlen( b );int OK = dfs( 0, l1, 0, l2 );if( OK )puts("YES");elseputs("NO");}return 0;}



0 0
原创粉丝点击