正题

题目链接:https://www.luogu.com.cn/problem/CF346E


题目大意

给出a,n,p,ha,n,p,ha,n,p,h,在每个ax%p(x∈[0,n])ax\%p(x\in[0,n])ax%p(x∈[0,n])的位置有一个关键点,询问是否所有相邻关键点之间的距离都不超过hhh。


解题思路

没怎么写过类欧,这个题还是很坑的,需要考虑求一下hhh需要的最小值(相邻关键点直接距离的最大值)

首先第一个循环肯定都是axaxax的位置有关键点了,然后第二个循环开始是⌈pa⌉a−p+ax\lceil\frac{p}{a}\rceil a-p+ax⌈ap​⌉a−p+ax,然后每个循环的起点加一个⌈pa⌉a−p\lceil\frac{p}{a}\rceil a-p⌈ap​⌉a−p。好像就可以用类欧把一个大问题缩减成一个小问题了。

考虑一下细节,首先是末尾那一段,也就是a⌊pa⌋+1∼pa\lfloor\frac{p}{a}\rfloor+1\sim pa⌊ap​⌋+1∼p这一段是没有用的,因为如果这一段无法到达最末尾处,那么一定存在某个kkk使得kakaka无法到达(k+1)a(k+1)a(k+1)a。

然后考虑有多少个可行的循环,简单的看是⌊anp⌋\lfloor\frac{an}{p}\rfloor⌊pan​⌋,但是这样可能会有某些周期没有跑完的情况,那么后面那些间隔是没有变小的,考虑到我们求的是最大间隔,肯定是取后面的,所以此时要减一。

然后当an≤pan\leq pan≤p的时候就可以取答案了。

时间复杂度O(log⁡n)O(\log n)O(logn)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
ll a,n,p,h,T;
ll solve(ll a,ll n,ll p){if(a*n<p)return max(a,p-a*n);ll z=a*n/p;if(a*n%p<p/a*a-a)z--;return solve((p+a-1)/a*a-p,z,a);
}
signed main()
{scanf("%lld",&T);while(T--){scanf("%lld%lld%lld%lld",&a,&n,&p,&h);a%=p;if(a<=h){puts("YES");continue;}if(a*n<=p){puts(h>=a?"YES":"NO");continue;}puts((solve(a,n,p)<=h)?"YES":"NO");}return 0;
}

CF346E-Doodle Jump【类欧】相关推荐

  1. [ZZOJ#31]类欧几里得

    [ZZOJ#31]类欧几里得 试题描述 这是一道模板题. 给出 \(a, b, c, n\),请你求出 \(\sum_{x=0}^n{\lfloor \frac{a \cdot x + b}{c} \ ...

  2. K. Easy Sigma(类欧几里得)

    K. Easy Sigma ∑i=1n(−1)⌊i×k⌋,(n≤109,k≤104)\sum_{i = 1} ^{n} (-1) ^{\lfloor i \times \sqrt k \rfloor} ...

  3. 类欧几里得(模板题推导)

    类欧几里得 设三个函数f(a,b,c,n)=∑i=0na×i+bc,g(a,b,c,n)=∑i=0ni×a×i+bc,h(a,b,c,n)=∑i=0n(a×i+bc)2f(a, b, c, n) = ...

  4. P5170 【模板】类欧几里得算法(类欧)

    P5170 [模板]类欧几里得算法 Description 要求在O(lgn)O(lgn)O(lgn)的时间内求出: ∑i=0n⌊ai+bc⌋\sum_{i = 0}^n{\lfloor\frac{a ...

  5. 牛客网暑期ACM多校训练营(第十场): H. Rikka with Ants(类欧几里得)

    链接:https://ac.nowcoder.com/acm/contest/148/H 来源:牛客网 题目描述 There are two small ants on Rikka's desk. I ...

  6. BJ模拟:超级绵羊抑或(类欧几里得)

    传送门 题意: 给定 n,a,b n , a , b n,a,b (n,a,b≤1e9) ( n , a , b ≤ 1 e 9 ) (n,a,b \le 1e9),求 ⊕n−1i=0(a+b∗i) ...

  7. 为什么蝙蝠一直显示无法连接服务器,Doodle Jump无法连接服务器是什么原因

    Doodle Jump中不少玩家反馈都会遇到Doodle Jump无法连接服务器是什么原因的问题,那么怎么解决这个问题呢,这边ourplay小编为大家分享几个解决方案. Doodle Jump游戏简介 ...

  8. cocos2d 高仿doodle jump 无源代码

    1. 游戏视频 主角眼熟吗?没错,上次跑酷游戏中的"30"来Jump了,有三种道具.主角光环,竹蜻蜓.翅膀: 有两种怪物,螃蟹和鸟: 有5种板子.点击屏幕,30会把它的嘴巴3给发射 ...

  9. (转载)类欧几里得(知识点整理+板子总结)

    思路来源 类欧几里得算法_wwx233的博客-CSDN博客 类欧几里得算法 - cyz666 - 博客园 类欧几里得算法总结_DZYO的博客-CSDN博客(证明清楚详细) 数数[数位DP||类欧]_以 ...

最新文章

  1. 【java】牛客网刷题
  2. 阿里巴巴发布《2015移动安全漏洞年报》
  3. ASP中关于全局页面的作用 asax文件
  4. java同时执行同一个方法吗_java 返回结果的同时执行另一个方法
  5. 【Java】6.5 抽象类
  6. 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目
  7. BZOJ2568 [国家集训队2012]比特集合
  8. ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Queue
  9. 经验总结03-dwr
  10. Android 集成微信支付详解
  11. echart 数据点可以加链接吗_地理可视化就这么简单、酷炫,蚂蚁金服AntV 空间数据可视化引擎 L72.0发布...
  12. c语言编程指法输入,C语言 课件 第一章引论.pdf
  13. 诸葛亮的十堂课:在变局中安身立命,在逆境中找到力量
  14. 辽宁工业大学计算机复试经验,辽宁工业大学车辆工程考研经验
  15. Go语言使用protobuf快速入门
  16. 发稿猫:5步分析钟薛高、东鹏特饮新品牌如何做营销
  17. 企业请专职SEO和外包给科技公司做优化,有什么不同?
  18. 高数笔记(四):导数概念,函数的求导法则,高阶导数,隐函数求导、参数方程求导
  19. 在未来时空中沉浸探索,体验引领时代的建筑节能展馆
  20. 王牌竞速服务器维护,《王牌竞速》更新公告

热门文章

  1. python搭建selenium_了解搭建selenium安装以及配置环境
  2. java基础变量_Java基础语法之变量和常量
  3. 修改图层的范围_【PS|第39期】数字绘画 使用填充图层
  4. lmbs PHP,PHP 清空 MySql 指定数据表中的所有数据
  5. qtabwidget设置tab高度_VC|富文本编辑框CRichEditCtrl的字体与段落设置
  6. tensorrt轻松部署高性能dnn推理_部署环境之:tensorRT的插件
  7. git push被拒绝_规范git项目提交并自动生成项目commit log
  8. java实用教程——组件及事件处理——对话框(消息对话框,输入对话框,确认对话框)
  9. C++中getline()和cin()同时使用时的注意事项
  10. 链表基础概念与经典题目(Leetcode题解-Python语言)