B. Combinatorics Homework1000 / 思维
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B. Combinatorics Homework1000 / 思维相关的知识,希望对你有一定的参考价值。
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;
}
以上是关于B. Combinatorics Homework1000 / 思维的主要内容,如果未能解决你的问题,请参考以下文章
Google Maps API v3 Combinatorics:多人、多地点的最短路线
Codefoces 382E Ksenia and Combinatorics - 动态规划