【牛客小白月赛13】

对于我这种蒟蒻来说,参加这种小白月赛还是蛮友好的:AC 3/10 排名 344/1386 还阔以啦(o)/~
做的三道题是ABD:
A:竟然是斐波那契找规律,虽然我到现在还没有用数学证明出来:

#include<bits/stdc++.h>
using namespace std;
int main() {
    long long n;
    scanf("%lld",&n);
    if(n%2){
        cout<<1;
    }else{
        cout<<-1;
    }
    return 0;
}

B:调用了LeetCode第5题的函数,然后暴力没过,最后抱着试一试的心态sqrt(n),AC(捶桌):

#include <bits/stdc++.h>
using namespace std;
void extend(string s, int l, int r,int& len) {
    while (l >= 0 && r < s.size() && s[l] == s[r]) {
        l--, r++;
    }
    if (r - l - 1 > len) {
        len = r - l - 1;
    }
}
int longestPalindrome(string s) {
    int n = s.size(), start = 0, len = 1;
    for (int i = 0; i < n - 1; i++) {
        extend(s, i, i, len);
        extend(s, i, i + 1,  len);
    }
    return len;
}
int main(){
    string s ;
    cin>>s;
    int n = s.size();
    int res=0;
    for(int i=0;i<=sqrt(n);i++){
        string str = s.substr(i,n-i)+s.substr(0,i);
        res = max(res,longestPalindrome(str));
        if(res>=n)    break;
    }
    cout<<res;
    return 0;
}

D:开始sort一下以为水过,十几分钟后刷新一下WA,难道更新数据后重判了吗?最后暴力过:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,res=0;
    cin>>n;
    vector<int> nums(n,0);
    int a[100];
    for(int i=0;i<n;i++){
        cin>>nums[i];
        int t = nums[i];
        int cnt=0;
        while(t){
            if(t&1)    a[cnt]++;
            t>>=1;
            cnt++;
        }
    }
    int ans=1e9;
    int flag=0;
    for(int i=0;i<n;i++){
        int t = nums[i];
        int cnt=0;
        int sum=0;
        while(t){
            if(t&1&&a[cnt]==1){
                sum+=(1<<cnt);
            }
             t>>=1;
            cnt++;
        }
        if(sum<ans){
            ans = sum;
            flag=i;
        }
    }
    for(int i=0;i<n;i++){
        if(i!=flag)
            res|=nums[i];
    }
    cout<<res;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Csdn_jey/article/details/89278416