• codeforces 808


    A距离下一个lucky 年 还有多少年   lucky 定义是 数字只有一个位不为0

    第一位加上1  然后乘上好几个10就可以

    #include <iostream>
    #include<string.h>
    #include<stdio.h>
    using namespace std ;
    
    #define ll __int64
    
    int dig[15];
    ll  z[15];
    int main()
    {
        ll n;
        scanf("%I64d",&n);
        int cnt=0;
        ll a=n;
        z[0]=1;
        for(int i=1;i<=10;i++)
            z[i]=z[i-1]*10;
        while(a)
        {
            dig[cnt++]=a%10;
            a=a/10;
        }
        ll b=(dig[cnt-1]+1)*z[cnt-1];
        printf("%I64d
    ",b-n);
        return 0;
    }
    View Code

    B 求一下平均

    #include <iostream>
    #include<string.h>
    #include<stdio.h>
    using namespace std ;
    
    #define ll __int64
    #define MAXN 200100
    double z[MAXN];
    
    int main()
    {
        int k,n;
        while(scanf("%d%d",&n,&k)!=EOF)
        {
            z[0]=0;
            for(int i=1;i<=n;i++)
            {
                scanf("%lf",&z[i]);
                z[i]=z[i]+z[i-1];
            }
            double ans=0;
            for(int i=k;i<=n;i++)
                ans=ans+z[i]-z[i-k];
            printf("%.7lf
    ",ans/(n-k+1));
        }
        return 0;
    }
    View Code

    C n个茶杯 m是总共的水 然后n个茶杯的大小每个茶杯里至少有一半的水 然后就是杯子大的水不能比杯子小的水少

    1  每个至少有一半

    2 从大的杯子到小的杯子加水

    #include <iostream>
    #include<string.h>
    #include<stdio.h>
    #include<algorithm>
    using namespace std ;
    
    #define ll __int64
    #define MAXN 200
    
    int w[MAXN];
    struct node
    {
        int w,ind;
    }z[MAXN];
    bool cmp(node a,node b)
    {
        if(a.w==b.w)
            return a.ind<b.ind;
        return a.w>b.w;
    }
    int main()
    {
        int n,co;
        while(scanf("%d%d",&n,&co)!=EOF)
        {
            memset(w,0,sizeof(w));
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&z[i].w);
                z[i].ind=i;
            }
            sort(z+1,z+n+1,cmp);
            for(int i=1;i<=n;i++)
            {
                int ind=z[i].ind;
                w[ind]=(z[i].w+1)/2;
                co=co-w[ind];
            }
            if(co<0)
            {
                printf("-1
    ");
                continue;
            }
            int j=1;
            while(co>0)
            {
                int ind=z[j].ind;
                int c1=z[j].w-w[ind];
                if(co>c1)
                {
                    co=co-c1;
                    w[ind]=z[j].w;
                }
                else
                {
                    w[ind]=w[ind]+co;
                    co=0;
                }
                j++;
            }
            for(int i=1;i<n;i++)
                printf("%d ",w[i]);
            printf("%d
    ",w[n]);
        }
        return 0;
    }
    View Code

    D 移动一个数字到前面 或者移到后面  位子任意  或者不移动 求  前面的一部分 然后剩下的 他们的和相等


    列举每一个数 当作移动的    向前 二分x   sum[x]-w[i]==sum/2  向后二分...   sum[] 是前缀和

    nlog(n);    

  • 相关阅读:
    roughViz 一个可重用,功能强大的手绘图表组件
    sqlg rdbms 上实现的Apache TinkerPop
    golang 几个好用的cli package
    ent 基本使用十九 事务处理
    oracle查看表空间和物理文件大小
    Oracle备份的几种方式
    Oracle导出/导入数据库的三种模式
    Oracle 11g 数据库 expdp/impdp 全量导入导出
    Oracle查询数据库中所有表的记录数
    oracle 如何查看当前用户的表空间名称
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/6867176.html
Copyright © 2020-2023  润新知