Educational Codeforces Round 130 (Rated for Div. 2) A~D 题解
每次想放松的时候 ,cf总是能及时给我一锤
A. Parkway Walk
题意
你要从1号地走到n号地,i到i+1的距离为 a i a_i ai , 走1m需要用1个能量,初始你有m个能量,并且你可以在每个地方休息获得能量,每秒获得一个能量
问你需要最少还需要休息多久才能从1号地走到n号地
做法
贪心,能量能走完为0秒,否则算需要的总能量与现有能量的差值
AC代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
typedef long long ll;
ll A[N],n;
int main(){
ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int T;
cin>>T;
while(T--){
ll sum = 0;
ll k;
cin>>n>>k;
for(int i = 0;i<n;i++){
ll t;
cin>>t;
sum+=t;
}
if(k>=sum) cout<<0<<endl;
else cout<<sum-k<<endl;
}
return 0;
}
B. Promo
题意
有n件商品,q次询问,每次询问给出最少需要买的商品数a,能免费的最大商品数b,当你购买超过x件商品时,能够免去前y件最便宜的商品
做法
排序,前缀和处理商品总价,能免费的商品就是n-a+1到n-(a-b),前缀和记得要减一
AC代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
typedef