• QFNU-ACM 2020.10.16 Trating


    A - Juggling Letters

    给定n个字符串,统计每个字母出现的次数,判断能不能均匀分到每个字符串,让它们变成一样的字符串

    #include <bits/stdc++.h>
    #define p123 printf("123
    ");
    #define pn printf("
    ");
    #define pk printf(" ");
    #define ll long long
    #define re(n,a) memset(n,a,sizeof(n));
    #define len(a) strlen(a)
    #define eps 1e-6
    using namespace std;
    int main()
    {
        int t,n,i,j;
        cin>>t;
        while(t--){
            cin>>n;
            string s;
            int a[30]={0};
            for(i=0;i<n;i++){
                cin>>s;
                for(j=0;j<s.length();j++){
                    a[s[j]-'a']++;
                }
            }
            for(i=0;i<26;i++){
                if(a[i]%n!=0){
                    cout<<"NO"<<endl;
                    break;
                }
            }
            if(i==26){
                cout<<"YES"<<endl;
            }
        }
        return 0;
    }

    B - Power Sequence

    有一个长度为n的序列,你每次可以对序列重新排序,然后花费1使某个元素加减1,多次操作后使得新序列是等比数列,求最小花费.

    枚举,公比 。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define ture true
    const int N = 500010;
    int n;
    int a[N];
    int main() {
        scanf("%d",&n);
        for(int i=1;i<=n;++i){
            scanf("%d",&a[i]);
        }
        ll mi=1e18;
        sort(a+1,a+1+n);
        for(int i=1;i<=100000;++i){
            ll cnt=0;
            ll tmp=1;
            for(int j=1;j<=n;++j){
                cnt+=abs(tmp-a[j]);
                if(cnt>mi) break;
                tmp*=i;
            }
            if(cnt<mi) mi=cnt;
        }
        printf("%lld
    ",mi);
        return 0;
    }

    D - Drinks Choosing

    给出n个学生,k个饮料,每个学生想要的饮料,记录每种饮料的需求个数,算出要买多少份饮料才能满足所有学生的需求sum

    由于买饮料的分数不能超过n/2,如果sum<n/2所有人都可以被满足,否则输出n-(sum-n/2)

    #include <bits/stdc++.h>
    #define p123 printf("123
    ");
    #define pn printf("
    ");
    #define pk printf(" ");
    #define ll long long
    #define re(n,a) memset(n,a,sizeof(n));
    #define len(a) strlen(a)
    #define eps 1e-6
    using namespace std;
    int main()
    {
        int n,k,a[1010]={0},i,b;
        cin>>n>>k;
        for(i=0;i<n;i++){
            cin>>b;
            a[b]++;
        }
        int sum=0,flag=0;
        for(i=1;i<=k;i++){
            if(a[i]%2!=0){
                sum+=a[i]/2+1;
                flag++;
            }else{
                sum+=a[i]/2;
            }
        }
        int x=n/2+n%2;
        if(sum>x){
            cout<<n-(sum-x)<<endl;
        }else{
            cout<<n<<endl;
        }
        return 0;
    }

    E - Sport Mafia

    Alya可以选择在箱子内放入i个糖果(i等于放入糖果的次数),或吃掉一个糖果

    给出放入或吃掉糖果的次数 和 最终剩余糖果的数量

    求出一个吃了几次糖果

    当箱子里的糖果小于等于最终剩余的糖果数,就添加糖果,否则就吃糖果

    当次数用完后跳出循环,输出一共吃了几个糖果

    #include <bits/stdc++.h>
    #define p123 printf("123
    ");
    #define pn printf("
    ");
    #define pk printf(" ");
    #define ll long long
    #define re(n,a) memset(n,a,sizeof(n));
    #define len(a) strlen(a)
    #define eps 1e-6
    using namespace std;
    int main()
    {
    
        int n,k,dq=0,eat=0,a;
        int flag=0;
        cin>>n>>k;
        while(n>0){
            if(dq<=k){
                dq+=++flag;
                n--;
                //cout<<dq<<"**1"<<endl;
            }
            if(dq>k){
                eat+=dq-k;
                n-=dq-k;
                //cout<<dq<<"**2"<<endl;
                dq=k;
            }
        }
        cout<<eat<<endl;
        return 0;
    }
  • 相关阅读:
    Java对ArrayList进行排序
    Android app Splash页的替代方案
    算法
    Android动画 三种动画
    oracle连接-会话-进程
    spring使用Redis自定义前缀后缀名(去掉SimpleKey []+自定义)
    Redis(RedisTemplate)运算、算法(incr、decr、increment)
    Redis(RedisTemplate)使用hash哈希
    Redis(RedisTemplate)使用list链表
    Redis(RedisTemplate)使用string字符串
  • 原文地址:https://www.cnblogs.com/a-specter/p/13875339.html
Copyright © 2020-2023  润新知