第二周比赛题解

第二周比赛题解

第一场比赛:

第一题代码:

#include <bits/stdc++.h>
using namespace std;
int k,n=1;
double s=0;
int main()
{
    cin>>k;
    while(s<=k)
    {
        s+=1/double(n);n++;
    }
    cout<<n-1;
    return 0;
}

第二题代码:

#include <bits/stdc++.h>
using namespace std;
char s[10005];
int n;
double cnt=0;
bool pd[4];
int main()
{
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
    scanf("%s",s);
    n=strlen(s);
    for(int i = 0;i < n;i++)
    {
        if(s[i]=='c')
        {
            cnt+=2.5;
            if(!pd[0])cnt+=2.5,pd[0]=1;
        }
        if(s[i]=='t')
        {
            cnt+=2.5;
            if(!pd[1])cnt+=2.5,pd[1]=1;
        }
        if(s[i]=='r')
        {
            cnt+=2.5;
            if(!pd[2])cnt+=2.5,pd[2]=1;
        }
        if(s[i]=='l')
        {
            cnt+=2.5;
            if(!pd[3])cnt+=2.5,pd[3]=1;
        }
    }
    printf("%.lf",cnt);
    if((long long)cnt==cnt&&(long long)cnt%25==0)printf("\nH");
    return 0;
}

第三题代码:

#include <bits/stdc++.h>
using namespace std;
char s[10000005];
int n;
long long I=0,K=0,U=0,N=0;
int main()
{
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
    scanf("%s",s);
    n=strlen(s);
    for(int i = 0;i < n;i++)
    {
        if(s[i]=='i')I++;
        else if(s[i]=='k')K+=I;
        else if(s[i]=='u')U+=K;
        else if(s[i]=='n')N+=U;
    }
    printf("%lld",N);
    return 0;
}

第四题代码:

#include <bits/stdc++.h>
using namespace std;
char s[10000005];
int n;
long long F=0,L=0,O=0,R=0,cnt=0;
int main()
{
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input0.txt","r",stdin);
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output0.txt","w",stdout);
    scanf("%s",s);
    n=strlen(s);
    for(int i = 0;i < n;i++)
    {
        if(s[i]=='f')F++;
        else if(s[i]=='l')L+=F;
        else if(s[i]=='o')O+=L;
        else if(s[i]=='r')
        {
            if(cnt<1)cnt++;
            else R+=O;
        }
    }
    printf("%lld",R);
    return 0;
}

第五题代码:

#include <bits/stdc++.h>
using namespace std;
int n;
long long a[1000005],q[1000005];
long long merge_sort_res(int l,int r)
{
    if(l>=r)return 0;
    int mid=l+r>>1;
    long long res=merge_sort_res(l,mid)+merge_sort_res(mid+1,r);
    int i=l,j=mid+1,t=1;
    while(i<=mid&&j<=r)
    {
        if(a[i]<=a[j])q[t++]=a[i++];
        else
        {
            q[t++]=a[j++];
            res+=mid-i+1;
        }
    }
    while(i<=mid)q[t++]=a[i++];
    while(j<=r)q[t++]=a[j++];
    for(i=l,j=1;i<=r;i++,j++)a[i]=q[j];
    return res;
}
int main()
{
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
    scanf("%d",&n);
    for(int i = 1;i <= n;i++)scanf("%lld",&a[i]);
    printf("%lld",merge_sort_res(1,n));
    return 0;
}

第五题代码:

#include <bits/stdc++.h>
using namespace std;
long long a[10000010];
unordered_map<long long, int> pos;
long long read() {
    long long 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 << 3) + (x << 1) + (c ^ 48);
        c = getchar();
    }
    return x * f;
}
int main() {
    int n, i, j = 1, ans = 1;
    n = read();
    for (i = 1; i <= n; i++)
        a[i] = read();
    for (i = 1; i <= n; i++) {
        pos[a[i]]++;
        while (pos[a[i]] > 1) {
            pos[a[j]]--;
            j++;
        }
        ans = max(ans, i - j + 1);
    }
    printf("%d", ans);
}

第二场比赛:

第一题代码:

#include <bits/stdc++.h>
using namespace std;
int n;
long long a[1000005],q[1000005];
long long merge_sort_res(int l,int r)
{
    if(l>=r)return 0;
    int mid=l+r>>1;
    long long res=merge_sort_res(l,mid)+merge_sort_res(mid+1,r);
    int i=l,j=mid+1,t=1;
    while(i<=mid&&j<=r)
    {
        if(a[i]<=a[j])q[t++]=a[i++];
        else
        {
            q[t++]=a[j++];
            res+=mid-i+1;
        }
    }
    while(i<=mid)q[t++]=a[i++];
    while(j<=r)q[t++]=a[j++];
    for(i=l,j=1;i<=r;i++,j++)a[i]=q[j];
    return res;
}
int main()
{
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
    scanf("%d",&n);
    for(int i = 1;i <= n;i++)scanf("%lld",&a[i]);
    printf("%lld",merge_sort_res(1,n));
    return 0;
}

第二题代码:

#include <bits/stdc++.h>
using namespace std;
char s1[10005],s2[10005];
int n,m;
long long a[10005];
int main()
{
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input0.txt","r",stdin);
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output0.txt","w",stdout);
    scanf("%s%s",s1,s2);
    n=strlen(s1);
    m=strlen(s2);
    for(int i = 0;i < n;i++)
    {
        for(int j = 0;j < m;j++)
        {
            if(s1[i]==s2[j])
            {
                if(j==0)a[j]++;
                else a[j]+=a[j-1];
            }
        }
    }
    printf("%lld",a[m-1]);
    return 0;
}

第三题代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input0.txt","r",stdin);
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output0.txt","w",stdout);
    for(int i = 1;i <= 114514;i++)printf("admin orz orz orz tql tql\n");
    return 0;
}

第四题代码:

#include <bits/stdc++.h>
using namespace std;
void pd(string s)
{
    string x="";
    int i,j;
    j=0;
    for(i=s.size()-1;i>=0;)
    {
        if(s[i]<0)
        {
            x+=s[i-1];
            x+=s[i];
            j+=2;
            i-=2;
        }
        else 
        {
            x+=s[i];
            j++;
            i--;
        }
    }
    if(s==x)cout << "Yes";
    else cout << "No";
}
int main()
{
    string s;
    getline(cin,s);
    pd(s);
    return 0;
}

第五题代码:

#include <bits/stdc++.h>
using namespace std;
int n,cnt=0,a=0,b=0;
int main()
{
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input0.txt","r",stdin);
//  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output0.txt","w",stdout);
    cin>>n;
    while(n)
    {
        cnt+=n;
        a+=n;b+=n;
        n=a/3+b/4;
        a%=3;b%=4;
    }
    printf("%d",cnt);
    return 0;
}

第六题代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    // freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
    // freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
    double n;
    scanf("%lf",&n);
    printf("%.3lf",sqrt(n));
    return 0;
}

1 条评论

  • 1