(为了方便,以下除$V$外都改为小写字母)

结论1:若$a+b\le m+1$,则答案为$m+1$(即任意$x$都可以被得到)

任取$y\in [0,m]$,由$\gcd(a,b)=1$存在$y-V=pa+qb$,且不妨假设$p\in [0,b)$

不断对$x+a$直至加了$p$次或无法再加,对两种情况分别处理:

1.若为前者,此时再通过若干次$\pm b$一定可以得到$y$

2.若为后者,由$a+b\le m-1$一定可以将$x-b$,进而重复此过程即可

注意到$-b$后一定可以$+a$($a<b$),因此该过程有限,即可以得到$y$

特判此情况后,即有$a+b\ge m+2$

考虑某次$+a$操作后,其不能$-a$(显然无意义)或$+b$(根据$a+b\ge m+2$),那么只能$+a$或$-b$,而同样根据$a+b\ge m+2$,这两个操作中至多只有一个可以执行

类似地分析其余操作,实际上只有两种方案:

1.每一次使用$+a$和$-b$中可以执行的一种操作

2.每一次使用$-a$和$+b$中可以执行的一种操作

注意到是操作是确定的,因此可以看作两条从$V$开始的链

结论2:这两条链上除了$V$以外无公共点

先来证明一条链内部无公共点,不妨以第一条链为例:

注意到每一个点之后的状态是确定的,因此重复即出现循环,同时最小的循环节中不会出现重复的数

任取循环中的某个点$x$,假设其到下一次$x$一共执行了$p$次$+a$和$q$次$-b$,即有$pa=qb$

而$\gcd(a,b)=1$,因此有$a\mid q$且$b\mid p$,同时$p,q\in Z^{+}$,不难得到$p+q\ge a+b\ge m+2$,根据抽屉原理必然存在重复的数,矛盾

再来证明两条链中无公共点(除$V$以外),注意到前者总可以沿着后者的逆过程回到$V$,同时根据唯一性这必然就是该链本身,即重复经过$V$(注意一条链内也不允许重复经过$V$),与之前所述矛盾

综上,即得证

由此,答案即两链链长(指边数)和+1,根据对称性不妨仅考虑第一条链:

不妨考虑该链中$+a$的次数(假设有$p$次,不难推出链长为$p+\lfloor\frac{V+pa}{b}\rfloor$),此时$-b$即可以直接对$b$取模,因此即求最小的$p$使得$(V+pa)mod\ b+a>m$

令$V_{0}=V\ mod\ b$,特判$V_{0}+a>m$的情况,此时显然$p=0$

若$V_{0}+a\le m$,必然要有$V_{0}+pa\ mod\ b<b$,进而原式即为$V_{0}+pa\ mod\ b+a<m$

换言之,原式等价于$pa\ mod\ b\in [L,R]$(其中$L=m-a-V_{0}+1$且$r=b-V_{0}-1$)

不妨假设$b=ka+r$(其中$0\le r<a$)且$qb\le pa<(q+1)b$,那么限制即
$$
pa-qb=(p-qk)a-qr\in [L,R]\Longrightarrow qr\ mod\ a\in [L',R']
$$
(其中$L'$和$R'$即$(-R)mod\ a$和$(-L)mod\ a$,且若其包含0直接取$q=0$即可)

得到满足此条件最小的$q$后(递归),不难解得$p=\lceil\frac{qb+L}{a}\rceil$,且显然其也为最小

过程即为辗转相除,时间复杂度为$o(t\log m)$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define ll long long
4 int t,a,b,V,m;
5 int get(int a,int b,int L,int R){
6 if (!a)return 0;
7 int q=0;
8 if ((L-1)/a==R/a)q=get(b%a,a,(a-R%a)%a,(a-L%a)%a);
9 return ((ll)q*b+L+a-1)/a;
10 }
11 int calc(int a,int b,int V,int m){
12 int V0=V%b,p=0;
13 if (V0+a<=m)p=get(a,b,m-a-V0+1,b-V0-1);
14 return p+(V+(ll)p*a)/b;
15 }
16 int main(){
17 scanf("%d",&t);
18 while (t--){
19 scanf("%d%d%d%d",&a,&b,&V,&m);
20 if (a+b<=m+1)printf("%d\n",m+1);
21 else printf("%d\n",calc(a,b,V,m)+calc(b,a,V,m)+1);
22 }
23 return 0;
24 }

[atARC127F]±AB的更多相关文章

  1. ab

     ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed ...

  2. 使用ab对nginx进行压力测试

    nginx以高并发,省内存著称. 相信大多数安装nginx的同学都想知道自己的nginx性能如何. 我想跟大家分享下我使用ab工具的压力测试方法和结果, ab是针对apache的性能测试工具,可以只安 ...

  3. apache的AB测试

    A/B测试A/B测试是一种新兴的网页优化方法,可以用于增加转化率注册率等网页指标..A/B测试的目的在于通过科学的实验设计.采样样本代表性.流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信 ...

  4. apache自带ab压测

    ./ab -k -n100000 -c100 http://localhost/index.php -k表示保持连接keep-alive -n表示请求数 -c表示并发数 (总结)Web性能压力测试工具 ...

  5. 压力测试相关之ab命令

    1. 短时压力测试工具 ab 命令(apache的工具) 关键指标: Requests per second:    98.52 [#/sec] (mean)      ###平均每秒的请求数 Tim ...

  6. 【转载】AB测试结果分析

    AB测试,200个请求,20个并发.这样的测试强度,CPU占了70-80%,w3p占用了70多M内存,本想多测几次,看看它的内存会不会涨上去,没 有测试机器没办法,开发机要干活.我估计CPU就有问题了 ...

  7. 使用Apache Server 的ab进行web请求压力测试

    参考:http://www.cnblogs.com/spring3mvc/archive/2010/11/23/2414741.html 自己写代码经常是顺着逻辑写下去,写完后run一下,ok就玩完事 ...

  8. apache ab测试命令详解

    这篇文章主要介绍了apache性能测试工具ab使用详解,需要的朋友可以参考下   网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种 ...

  9. 使用ab进行压力测试详解

    ab是apache自带的压力测试工具,非常好用.转载几篇对ab工具的详细使用的博文.猛击下面的链接地址 http://www.365mini.com/page/apache-benchmark.htm ...

随机推荐

  1. 梦幻西游H5游戏超详细图文架设教程

    前言 想体验经典Q版西游霸服快乐吗?想体验满级VIP的尊贵吗?想体验一招秒杀的爽快吗?各种极品装备.翅膀.宠物通通给你,就在梦幻西游! 本文讲解梦幻西游H5游戏的架设教程,想研究H5游戏如何实现,体验 ...

  2. luogu1081 开车旅行2012 D1T3 (倍增,set,O2)

    题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为Hi,城市 i ...

  3. SpringBoot使用注解进行分页

    分页使用可以说非常普遍了,有时候会需要非常灵活的方式去开启或关闭分页,尝试使用一下注解的方式来进行分页. 依赖安装 需要使用的依赖: Mybatis-Plus PageHelper SpringBoo ...

  4. 2021能源PWN wp

    babyshellcode 这题考无write泄露,write被沙盒禁用时,可以考虑延时盲注的方式获得flag,此exp可作为此类型题目模版,只需要修改部分参数即可,详细见注释 from pwn im ...

  5. 【UE4 C++】关卡切换、流关卡加载卸载

    切换关卡 基于 UGameplayStatics:: OenLevel UGameplayStatics::OpenLevel(GetWorld(), TEXT("NewMap") ...

  6. 【UE4 C++】解析与构建 XML 数据,XmlParser 与 tinyxml

    XmlParser 简单读取 XmlParser 为引擎自带模块 XML 文件 <?xml version="1.0" encoding="UTF-8"? ...

  7. 【c++ Prime 学习笔记】第16章 模板与泛型编程

    面向对象编程(OOP)和泛型编程(GP)都能处理在编写程序时类型未知的情况 OOP能处理运行时获取类型的情况 GP能处理编译期可获取类型的情况 标准库的容器.迭代器.算法都是泛型编程 编写泛型程序时独 ...

  8. 用例圖學習實例 / Learning Use Case Diagram by Examples

    什麼是用例圖? 用例描述了一個演員和感興趣的系統之間的一系列交互,以達到某種特定目標,並由某種觸發事件引發.用例滿足需求或為演員解決問題.用例圖包含一組用例,可以通過從每個角色的不同角度講述系統將如何 ...

  9. C语言基础资料,可以看看哦

    C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成.格式.以及良好的书写风格,使小伙伴对c语言有个初步认识. 例1:计算两个整数之和的c程序: #include main() { in ...

  10. 常用Java API:HashMap 和 TreeMap

    摘要 本文主要介绍Map接口下的HashMap和TreeMap. HashMap HashMap是基于哈希表的 Map 接口的实现,是无序的 clear()//清空. containsKey(Obje ...