第三周比赛题解

第三周比赛题解

第一场比赛:

第一题代码:

#include <bits/stdc++.h>
using namespace std;
long long n,dp[35];
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("%lld",&n);dp[1]=1;dp[2]=2;
    for(long long i = 3;i <= n;i++)dp[i]=dp[i-1]+dp[i-2];
    printf("%lld",dp[n]);
    return 0;
}

第二题代码:

#include <bits/stdc++.h>
using namespace std;
long long n,dp[35];
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("%lld",&n);dp[1]=1;dp[2]=2;
    for(long long i = 3;i <= n;i++)dp[i]=dp[i-1]+dp[i-2]+1;
    printf("%lld",dp[n]);
    return 0;
}

第三题代码:

#include <bits/stdc++.h>
using namespace std;
int n,a[10000005],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);
    int n;
    scanf("%d",&n);
    for(int i = 1;i <= n;i++)scanf("%d",&a[i]);
    for(int i = 2;i < n;i++)cnt+=(a[i]>a[i-1]&&a[i]>a[i+1]||a[i]<a[i-1]&&a[i]<a[i+1]);
    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);
    int n;
    scanf("%d",&n);
    printf("%d",(int)sqrt(n));
    return 0;
}

第五题代码:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <vector>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <set>
#include <cstring>

using namespace std;

vector<int> e;
vector<int> res;
int n;
long long m;
long long fac[21];

int c_div(long long a, long long b){
    int res = 0;
    for(; b * res < a; res++);
    return res;
}

int main(){
    cin >> n >> m; fac[0] = 1;
    for(int i = 1; i <= n; i++) e.push_back(i);
    for(int i = 1; i <= n; i++) fac[i] = fac[i - 1] * (long long)i;
    long long r = m;
    for(int i = 1; i <= n; i++){
        int p = c_div(r, fac[n - i]);
        res.push_back(e[p - 1]);
        e.erase(e.begin() + p - 1);
        r -= (long long)(p - 1) * fac[n - i];
    }
    for(int i = 0; i < n; i++) cout << res[i] << " ";
    cout << endl;
    return 0;
}

第六题代码:

#include<bits/stdc++.h>
using namespace std;
int x,t=0,s=0;
int main(){
    for(int i=1;i<=12;i++)
    {
        cin>>x;
        t+=300;
        if(t<x)
        {
            cout<<-i;
            return 0;
        }
        t-=x,s+=t/100*100,t%=100;
    }
    cout<<s*1.2+t;
    return 0;
}

第二场比赛:

第一题代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
priority_queue<int,vector<int>,greater<int>> pr;
signed main() {
    int n, i, tem, cnt1 = 0, cnt2 = 0, ans = 0;
    scanf("%lld", &n);
    for (i = 1; i <= n; i++) {
        scanf("%lld", &tem);
        pr.push(tem);
    }
    for (i = 1; i < n; i++) {
        cnt1 = pr.top();
        pr.pop();
        cnt2 = pr.top();
        pr.pop();
        ans += cnt1 + cnt2;
        pr.push(cnt1 + cnt2);
    }
    printf("%lld",ans);
    return 0;
}

第二题代码:

#include <bits/stdc++.h>
using namespace std;
int a[10],h,cnt=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);
    for(int i = 0;i < 10;i++)scanf("%d",&a[i]);
    scanf("%d",&h);h+=30;
    for(int i = 0;i < 10;i++)cnt+=(h>=a[i]);
    printf("%d",cnt);
    return 0;
}

第三题代码:

#include<bits/stdc++.h>
using namespace std;
int a[10001],l,t,m,u,v;
int main(){
    cin>>l>>m;
    t=l+1;
    for(int i=1;i<=m;i++)
    {
        cin>>u>>v;
        for(int i=u;i<=v;i++)
        {
            if(a[i]==0)
            {
                a[i]=-1,t--;
            }
        }
    }
    cout<<t;
    return 0;
}

第四题代码:

#include<bits/stdc++.h>
using namespace std;
int x,y,maxi=0,maxd=0;
int main(){
    for(int i=1;i<=7;i++)
    {
        cin>>x>>y;
        if(x+y>8&&x+y>maxi)
        {
            maxi=x+y,maxd=i;
        }
    }
    cout<<maxd;
    return 0;
}

第五题代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,a[10001];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=m;i++)
    {
        next_permutation(a+1,a+n+1);
    }
    for(int i=1;i<=n;i++)
    {
        cout<<a[i]<<" ";
    }
    return 0;
}

第六题代码:

#include <bits/stdc++.h>
using namespace std;
int n,x,cnt=0;
string s,minn;
int main()
{
    //    freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
    //  freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    while(n--)
    {
        cin>>s>>x;
        if(x>=5)
        {
            cnt++;
            if(cnt==1)minn=s;
            else minn=min(minn,s);
        }
    }
    if(cnt)cout<<cnt<<endl<<minn;
    else printf("xzx orz orz orz!!!");
    return 0;
}

1 条评论

  • 1