地址:​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