题意:给出最左和最右两个数,要求往中间填n-2个数,使得相邻数间差的绝对值$∈[L,R]$
思路:其实也是个水题,比赛中大脑宕机似的居然想要模拟构造一个数列,其实我们只要考虑作为结果的数,其结果必定是进行n-1次了+L -L +R -R 的其中一项,其最小值为$x*L-(n-1-x)*R$ 最大值则是$x*R-(n-1-x)*L$ 那么我们枚举x 其中只要有一种情况使b在区间中满足条件就行了
/** @Date : 2017-07-09 20:31:43
* @FileName: B.cpp
* @Platform: Windows
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version : $Id$
*/
#include <bits/stdc++.h>
#define LL long long
#define PII pair
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8;
int main()
{
LL n, a, b, l, r;
while(~scanf("%lld%lld%lld%lld%lld", &n, &a, &b, &l, &r)){
int flag = 1;
LL x, y;
for(LL i = 0; i <= n - 1; i++)
{
x = a + l * i - (n - i - 1) * r;
y = a + r * i - (n - i - 1) * l;
if(x <= b && b <= y)
flag = 0;
}
printf("%s
", flag?"NO":"YES");
}
return 0;
}