1400*C. Computer Game

1400*C. Computer Game_第1张图片

Example

input

6
15 5 3 2
15 5 4 3
15 5 2 1
15 5 5 1
16 7 5 2
20 5 7 3

output

4
-1
5
2
0
1

 解析:

        k个电,

        第一种为 k>a 时,只玩游戏 k-a;

        第二种,k>b,一边玩一边充电 k-b

        问完成n轮游戏的情况下,优先第一种情况,问只玩游戏最多多少次。

完不成则-1.        

#include
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll t,k,n,a,b;
int main(){
	scanf("%lld",&t);
	while(t--){
		scanf("%lld%lld%lld%lld",&k,&n,&a,&b);
		if(k<=n*b){			//这里如果都 b 都不够,则肯定不符题意 
			puts("-1");		//上一行为什么等于,由于题目采用 b 必须严格大于 b 
			continue;		//所以如果相等,最后剩余一个 b ,无法继续了 
		}
		ll s=k-n*b;			//全部用 b 剩余多少电量 
		ll res=(s-1)/(a-b);	//将剩余的电量补到 a 中,康康能满足几个 a 的需求 
		res=min(res,n);		//取最小值,因为可能剩余很多,但是 n 很小 
		printf("%lld\n",res);
	}
	return 0;
} 

你可能感兴趣的:(codeforces,c语言,算法,开发语言,c++,数据结构)