牛客OI周赛8-普及组

自闭了。
神仙出题人

A

#include <bits/stdc++.h>
using namespace std;
 
#define N 100010
int n, a[N];
 
bool check(int x) {
    int t = sqrt(x);
    return t * t != x;
}
 
int main() {
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
    sort(a+1,a+n+1);
    for(int i = n; i; --i) {
        if(check(a[i])) return printf("%d\n", a[i]), 0;
    }
}

B

数据范围很小,所以显然暴力即可。

#include <bits/stdc++.h>
using namespace std;
 
#define N 1010
int n, m, len[N], ans[N];
char s[N][110];
char t[40];
 
int main() {
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i) {
        scanf("%s", s[i]+1);
        len[i] = strlen(s[i]+1);
    }
    for(int i = 1; i <= m; ++i) {
        scanf("%s",t+1); int Len = strlen(t+1);
        for(int j = 1; j <= n; ++j) {
            int l = 1;
            for(int k = 1; k <= len[j]; ++k) {
                if(t[l] == s[j][k]) ++l;
            }
            if(l == Len+1) ans[j]++;
        }
    }
    for(int i = 1; i <= n; ++i) printf("%d\n", ans[i]);
}

C


高低位贪心挺显然的,不过我自己写的贪心方式出了问题....所以最后只有40

/*
orzcxk!
膜cxkrp++!
你也来膜cxk,怎样?
*/
#include <bits/stdc++.h>
  
#define ll long long
#define inf 0x3f3f3f3f
#define il inline
#define ull unsigned long long
 
namespace io {
  
    #define in(a) a=read()
    #define out(a) write(a)
    #define outn(a) out(a),putchar('\n')
  
    #define I_int unsigned long long
    inline I_int read() {
        I_int x = 0 , f = 1 ; char c = getchar() ;
        while( c < '0' || c > '9' ) { if( c == '-' ) f = -1 ; c = getchar() ; }
        while( c >= '0' && c <= '9' ) { x = x * 10 + c - '0' ; c = getchar() ; }
        return x * f ;
    }
    char F[ 200 ] ;
    inline void write( I_int x ) {
        if( x == 0 ) { putchar( '0' ) ; return ; }
        I_int tmp = x > 0 ? x : -x ;
        if( x < 0 ) putchar( '-' ) ;
        int cnt = 0 ;
        while( tmp > 0 ) {
            F[ cnt ++ ] = tmp % 10 + '0' ;
            tmp /= 10 ;
        }
        while( cnt > 0 ) putchar( F[ -- cnt ] ) ;
    }
    #undef I_int
  
}
using namespace io ;
  
using namespace std;

#define N 100010

int main() { 
    int T; in(T);
    while(T--) {
        ull l = read(), r = read(), ans = 0;
        for(ll k = 63; k >= 0; --k) {
            if(((l>>(ull)k)&1ull)&&((r>>(ull)k)&1ull)) continue;
            if(((l>>k)&1ull)||((r>>k)&1ull)) {ans = (1ull<<(k+1))-1ull; break;}
        }
        outn(ans);
    }
}

D

/*
orzcxk!
膜cxkrp++!
你也来膜cxk,怎样?
*/
#include <bits/stdc++.h>
   
#define ll long long
#define inf 0x3f3f3f3f
#define il inline
#define ull unsigned long long
  
namespace io {
   
    #define in(a) a=read()
    #define out(a) write(a)
    #define outn(a) out(a),putchar('\n')
   
    #define I_int unsigned long long
    inline I_int read() {
        I_int x = 0 , f = 1 ; char c = getchar() ;
        while( c < '0' || c > '9' ) { if( c == '-' ) f = -1 ; c = getchar() ; }
        while( c >= '0' && c <= '9' ) { x = x * 10 + c - '0' ; c = getchar() ; }
        return x * f ;
    }
    char F[ 200 ] ;
    inline void write( I_int x ) {
        if( x == 0 ) { putchar( '0' ) ; return ; }
        I_int tmp = x > 0 ? x : -x ;
        if( x < 0 ) putchar( '-' ) ;
        int cnt = 0 ;
        while( tmp > 0 ) {
            F[ cnt ++ ] = tmp % 10 + '0' ;
            tmp /= 10 ;
        }
        while( cnt > 0 ) putchar( F[ -- cnt ] ) ;
    }
    #undef I_int
   
}
using namespace io ;
   
using namespace std;
 
#define N 100010
int n, a[N], c[N];
#define lowbit(i) (i&-i)
inline void add(int x, int v) { for(int i = x; i <= n; i += lowbit(i)) c[i] += v; }
inline int query(int x) { int ans = 0; for(int i = x; i; i -= lowbit(i)) ans += c[i]; return ans; }
 
int main() { int ans = 0, m;
    in(n); for(int i = 1; i <= n; ++i) in(a[i]);
    for(int i = 1; i <= n; ++i) ans += query(n)-query(a[i]), add(a[i],1), ans&=1; in(m);
    for(int i = 1; i <= m; ++i) {
        int l = read(), r = read(), tot = (ll)(r-l+1ll)*(r-l)/2ll; tot &= 1;
        if(tot) ans = ans^tot; puts(ans?"dislike":"like");
    }
}

猜你喜欢

转载自www.cnblogs.com/henry-1202/p/10586242.html