zoukankan      html  css  js  c++  java
  • Atcoder #017 agc017 B.Moderate Differences 思维

    LINK

    题意:给出最左和最右两个数,要求往中间填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;
    }
    
  • 相关阅读:
    Uri编码,包括javascript前端与C#服务器端
    快速排序
    bootstrap
    boosting
    bagging
    SHELL排序
    冒泡排序
    插入排序
    选择排序
    二叉树的数学性质
  • 原文地址:https://www.cnblogs.com/Yumesenya/p/7145457.html
Copyright © 2011-2022 走看看