武汉大学2020年新生程序设计竞赛(同步赛)

武汉大学2020年新生程序设计竞赛(同步赛)

A 仓鼠与饭堂

using namespace std;

#include <bits/stdc++.h>

#define int long long


signed main() {
    
    
    int t;
    cin>>t;
    while (t--){
    
    
        double n,m;
        int flag=0;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
    
    
            double x;
            cin>>x;
            if(m>=x) m-=x*0.7;
            else flag=1;
        }
        if(flag) cout<<"no";
        else cout<<"yes";
        cout<<"\n";
    }
}

C 仓鼠很有精神

using namespace std;

#include <bits/stdc++.h>

#define int long long


signed main() {
    
    
    int t;
    cin>>t;
    while (t--){
    
    
        string s;
        cin>>s;
        int flag=0;
        int max_=0;
        for(int i=0;i<s.size();i++){
    
    
            if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
                flag++;
            else max_=max(max_,flag),flag=0;
        }
        max_=max(max_,flag);
        cout<<max_<<"\n";
    }
}

D 仓鼠更有精神

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=5e6+5;
int a[26]={
    
    0};
int b[maxn];
int c[maxn];
void init()
{
    
    
    a[0]=1;
    a['o'-'a']=1;
    a['e'-'a']=1;
    a['u'-'a']=1;
    a['i'-'a']=1;
}
void solve()
{
    
    
    b[0]=0;
    int max_=0;
    int k;
    string s;
    cin>>s>>k;
    int kk=k;
    int f=-1;
    int flag=0;
    int pre=-1;
    int cnt=0;
    int bnt=0;
    for(int i=0;i<s.size();i++)
    {
    
    
        if(a[s[i]-'a']==1)
        {
    
    
            if(f==0)
            {
    
    
                if(pre!=-1)
                {
    
    
                    c[bnt]=i-pre;
                    bnt++;
                }
            }
            f=1;
            flag++;
        }
        else
        {
    
    
            if(f==1)
            {
    
    
                b[cnt]=flag;
                cnt++;
                pre=i;
            }
            flag=0;
            f=0;
        }
    }
    if(flag!=0)
    {
    
    
        b[cnt]=flag;
        cnt++;
    }
    int sum=b[0];
    max_=b[0];
    int l=0;
    for(int i=1;i<cnt;)
    {
    
    
        if(k>=c[i-1])
        {
    
    
            k-=c[i-1];
            sum+=b[i];
            i++;
        }
        else
        {
    
    
            if(l<i-1&&k<c[i-1])
            {
    
    
                k+=c[l];
                sum-=b[l];
                l++;
                if(sum>max_)
                    max_=sum;
            }
            if(l==i-1&&k<c[i-1])
            {
    
    
                k=kk;
                l=i;
                sum=b[i];
                i++;
            }
            /*if(k<c[i-1])
            {
                sum=b[i];
                l++;
                k=kk;
            }
            else
            {
                k-=c[i-1];
                sum+=b[i];
            }*/
        }
        //cout<<l<<" "<<sum<<endl;
        if(sum>max_)
            max_=sum;
    }
    int sz=s.size();
    cout<<min(max_+kk,sz)<<endl;
}
signed main()
{
    
    
    int _=1;
    cin>>_;
    init();
    while(_--)
        solve();
    return 0;
}

F 仓鼠的完美算术教室

#include <bits/stdc++.h>

#define int long long
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 5;
const int N = 2e7 + 5;
int mm[N];
int cnt[21];
bool vis[maxn];

void init() {
    
    
    for (ll i = 2; i * i < maxn; i++) {
    
    
        if (!vis[i])
            for (ll j = i * i; j < maxn; j *= i)
                vis[j] = true;
    }
}

void solve() {
    
    
    memset(mm, 0, sizeof(mm));
    int a, b;
    cin >> a >> b;
    int sum = 0;
    for (int i = 1; i <= (int) log2(a); i++) {
    
    
        for (int j = 2; j <= b; j++) {
    
    
            if (mm[i * j] == 0) {
    
    
                mm[i * j] = 1;
                sum++;
            }
        }
        cnt[i] = sum;
    }
    int res = 0;
    for (int i = 2; i <= a; i++) {
    
    
        if (vis[i])
            continue;
        int xx = log2(a) / log2(i);
        res += cnt[xx];
    }
    cout << res << "\n";
}

signed main() {
    
    
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int _ = 1;
    cin >> _;
    init();
    while (_--)
        solve();
    return 0;
}

J 仓鼠不玩炉石传说

#include <bits/stdc++.h>

using namespace std;
#define int ll
typedef long long ll;
typedef long long LL;

void solve() {
    
    
    int n,a,k;
    cin>>n>>a>>k;
    int sum=0;
    int flag=1;
    int flag2=1;
    for(int i=0;i<n;i++){
    
    
        int x;
        cin>>x;
        if(x<k) {
    
    
            sum++;
            continue;
        }
        else if(x==k) {
    
    
            if(flag2) 
                sum++,flag2=0;
            else if(flag) 
                sum++,flag=0;
            else break;
        }
        if(x>k){
    
    
            if(flag) sum++,flag=0;
            else break;
        }
    }
    cout<<sum;
}

signed main() {
    
    
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int _=1;
//    cin >> _;
    while (_--)solve();
}

猜你喜欢

转载自blog.csdn.net/weixin_45436102/article/details/109964990