B. Combinatorics Homework【1000 / 思维】

在这里插入图片描述
https://codeforces.com/contest/1574/problem/B
求一下可以凑出来的上下边界。
看m在不在区间里即可。
最大边界就是相同的都连在一块 即 a1-1+a2-1+a3-1
最小的边界就是 让最多的字符和其它的字符俩俩配对,这样就可以依次打乱,最后剩下的-1就是最小边界。

#include<bitsdc++.h>
using namespace std;
typedef long long int LL;
typedef pair<int,int> PII;
bool cmp(LL a,LL b) {return a>b;}
int main(void)
{
	int t; cin>>t;
	while(t--) 
	{
		LL a[3],m;
		cin>>a[0]>>a[1]>>a[2]>>m;
		sort(a,a+3,cmp);
		int cnt2=a[0]+a[1]+a[2]-3;
		int cnt1=a[0]-a[1]-a[2]-1;
		if(cnt2>=m&&cnt1<=m) puts("YES");
		else puts("NO");
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值