又是一道思路特别清奇的题qwq...(瞪了一上午才发现O(1)的结论...差点还想用O(n)解决)

问题可以转化为是否能够由\(f_{1}=a\)通过\(\pm x \in[c,d]\)得到\(f_{n}=b\),于是考虑用数学方法解决

证明比较简单...就是...能想到这一点就很毒瘤了qwq...让我来随手拿一个样例举例qwq

输入样例2:4 7 6 4 5
输出样例2:NO

丝毫不想画图...太乱惹qwq

为了能看的更明白我还是画吧qwq(感谢GeoGebra)

注:横坐标表示框内数值,纵坐标表示编号(宽屏没办法qwq...看不清就保存图片放大...还是能看清楚一点的...实在不行下面会放坐标)

下面的图片可以在新的标签页中打开放大...经测试清晰度可以接受

做出上图后发现,绿色线段对应位置是可以到达的,此时问题转化为点\(B\)是否在某一条绿色线段(含端点)上

取所有线段中点后发现,在纵坐标为奇数时,所有线段中点到点\(A\)的横坐标距离为\(2k \times \frac{c+d}{2}(k \in N)\),在纵坐标为奇数时,所有线段中点到A的横坐标距离为\((2k+1) \times \frac{c+d}{2}(k \in N)\),位于\(y=k\)上的最远的线段中点到点\(A\)的横坐标距离为\((k-1) \times \frac{c+d}{2}\),且长度为\((k-1) \times (d-c)\),也即点\(B\)与点\(A\)的横坐标距离\(\leq (n-1) \times \frac{c+d}{2}\)且与位于\(y=n\)上某条线段的中点距离\(\leq \frac{(n-1) \times (d-c)}{2}\)时由\(A\)可以到达\(B\),所以只需要按照\(n\)的奇偶性分类\(O(1)\)计算结果即可.

全都是数学推导...感性理解一下就好

下面放代码$\downarrow \downarrow \downarrow $

#include<cstdio>//AT2665
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<cstdlib> using namespace std; int n,a,b,c,d,delta,whole; double nxt,half=0.5,maxhalf,lft; int main(){
scanf("%d%d%d%d%d",&n,&a,&b,&c,&d);
nxt+=c+d;
nxt/=2;
half=nxt-c;
maxhalf=half*(n-1);
delta=abs(a-b);
if(delta>(n-1)*nxt+maxhalf){//超过最远距离
printf("NO\n");
return 0;
}
whole=(int)(delta/nxt);
lft=delta-nxt*whole;
if(n&1){//n%2==1
if(whole&1){
lft=nxt-lft;
if(lft<=maxhalf){
printf("YES\n");
return 0;
}
else{
printf("NO\n");
return 0;
}
}
else{
if(lft<=maxhalf){
printf("YES\n");
return 0;
}
else{
printf("NO\n");
return 0;
}
}
}
else{//n%2==0
if(whole&1){
if(lft<=maxhalf){
printf("YES\n");
return 0;
}
else{
printf("NO\n");
return 0;
}
}
else{
lft=nxt-lft;
if(lft<=maxhalf){
printf("YES\n");
return 0;
}
else{
printf("NO\n");
return 0;
}
}
}
return 0;
}

Atcoder | AT2665 【Moderate Differences】的更多相关文章

  1. Atcoder B - Moderate Differences

    http://agc017.contest.atcoder.jp/tasks/agc017_b B - Moderate Differences Time limit : 2sec / Memory ...

  2. 题解——ATCoder AtCoder Grand Contest 017 B - Moderate Differences(数学,构造)

    题面 B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Stat ...

  3. 【赛时总结】◇赛时·VII◇ Atcoder ABC-106

    [赛时·VII] ABC-106 一条比赛时莫名其妙发了半个小时呆的菜鸡&咸鱼得到了自己应有的下场……279th. Rating:1103(+) 终于AK,一次通过…… ◇ 简单总结 ABC还 ...

  4. AtCoder Beginner Contest 116 C题 【题意:可以在任意区间【L,R】上加1,求通过最少加1次数得到题目给定的区间】】{思维好题}

    C - Grand Garden In a flower bed, there are NN flowers, numbered 1,2,......,N1,2,......,N. Initially ...

  5. 【linux命令】setterm控制终端属性命令(中英文)

    [linux命令]setterm控制终端属性命令(中英文) 2018年03月23日 17:13:44 阅读数:489 标签: linux 更多 个人分类: linux 摘自:https://blog. ...

  6. 【Spring实战】----开篇(包含系列目录链接)

    [Spring实战]----开篇(包含系列目录链接) 置顶2016年11月10日 11:12:56 阅读数:3617 终于还是要对Spring进行解剖,接下来Spring实战篇系列会以应用了Sprin ...

  7. G1垃圾收集器官方文档透彻解读【官方解读】

    在前几次中已经对G1的理论进行了一个比较详细的了解了,对于G1垃圾收集器最权威的解读肯定得上官网,当咱们将官网的理解透了,那基本上网上对于G1的说明其实最终都是来自于官网,所以接下来会详细来解读Ora ...

  8. 【MM系列】SAP MM模块-移动类型全部列表

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-移动类型全部列表 ...

  9. 【AR实验室】mulberryAR : ORBSLAM2+VVSION

    本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 mulberryAR是我业余时间弄的一个AR引擎,目前主要支持单目视觉SLAM+3D渲染,并且支持iOS端,但是该引 ...

随机推荐

  1. 【学习总结】GirlsInAI ML-diary day-16-pip install XX

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day16 Pip pip是python 著名的包管理工具,在python开发过程必不可少. 本节带大家了解用pip实现的p ...

  2. Mongo安装与使用

    MongoDB[1]  是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. mongoDB MongoDB[2]  是一个介于关系数据库和非关系数 ...

  3. Chrome 离线安装插件的办法

    参考url 学习网址 https://blog.csdn.net/weixin_39068791/article/details/81411938 插件下载地址: http://www.lanfans ...

  4. 一个简单jpa例子

    package com.example.demo.entity; import javax.persistence.*; /*使用jpa注解配置映射关系*/ /*告诉jpa这是一个实体类和(数据表映射 ...

  5. python爬虫之git的使用(origin说明)

    1.首先我们回忆两个命令 #git remote add origin 远程仓库链接 #git push -u origin master 我们一起看看这个命令,git是git的一级命令,push就是 ...

  6. 布局管理器之BorderLayout(边界布局)

    边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENT ...

  7. linux不同终端的操作是如何在messages日志中区分的

    今天在定位一个问题时,查看message日志,需要知道message日志中的记录分别是哪个Xterm终端操作的.比较了半天才发现原来日志中可以通过pts来进行区分.如下所示: --12T15:::|n ...

  8. EmpireCMS的使用

    1.下载安装empirecms 下载完成后解压将upload目录整体上传到服务器,并更名为empirecms_test 更改目录文件的权限: chmod -R 777 empirecms_test 配 ...

  9. java 中的打印流

    package cn.zhou; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.F ...

  10. Java多线程之sleep方法阻塞线程-模拟时钟

    package org.study2.javabase.ThreadsDemo.status; import java.text.SimpleDateFormat; import java.util. ...