zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 103 (Rated for Div. 2)B. Inflation

    地址:http://codeforces.com/contest/1476/problem/B

    题意:

    从a2开始,每个值的计算方式为:pi=ai/(a0+a1+a2+...+ai-1)

    使得每个pi都<=k的最少修改值

    解析:

    变形一下,ai*100<=k*sum(sum为ai之前的前缀和)

    由于a1并没有(代码从1开始)算到p值里面,它只充当了一个分母的作用

    所以每次加,都加在它头上即可,如果加在其他ai上,可能会使得p值变大

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<map>
    using namespace std;
    const int maxn  = 3e5+50;
    const int inf=99999999;
    typedef long long ll;
    ll a[111];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            ll n,k;
            cin>>n>>k;
            for(int i=1;i<=n;i++)
                cin>>a[i];
            ll sum = a[1] ;
            ll ans = 0 ;
            for(int i =2 ;i<=n;i++)
            {
                if(a[i]*100<=k*sum)
                {
                    sum+=a[i];
                }
                else
                {
                    ll md =a[i]*100 / k ;
                    if(a[i]*100%k!=0)    
                        md++;
                    ans+=md-sum;
                    sum=md;
                    sum+=a[i];
                }
            }
            cout<<ans<<endl;
        }
    }
    //9
    //1 4 1 1 4 1 4 1 4
  • 相关阅读:
    dota监测
    R0:前瞻
    Python基础
    c++成员函数
    异步IO简介
    使用自定义类型做qmap,qhash的key
    c++ primer 7 函数
    c++ primer 6 语句
    c++ primer 5 表达式
    c++ primer 4 数组和指针
  • 原文地址:https://www.cnblogs.com/liyexin/p/14355429.html
Copyright © 2011-2022 走看看