[jzoj]3526. 【NOIP2013模拟11.7A组】不等式(solve)(类欧几里得)
来源:互联网 发布:飞跃淘宝店铺信息软件 编辑:程序博客网 时间:2024/05/22 12:11
https://jzoj.net/senior/#contest/show/2061/2
Problem
已知
Data constraint
30%的数据中保证有解并且答案小于等于10^6;
另外20%的数据中保证L=R;
100%的数据中T<=100,M、S、L、R<=10^9。
Solution
【拓展gcd解二元一次方程】
30%的数据我们可以直接暴力.
对于20%的
【分类讨论】
由原式
分类讨论:
①当式子满足有关于不等式
②当不满足①时,并满足有关于不等式
【类欧几里得】
即类似欧几里得递归求解的一种方法.
【一个重要性质】
观察可得知,
【标准化】
我们使要进行类欧几里得的四个变量
任何一个模上
保证
【第二个不等式范围解释】
因为
我们用
且如果有
【转化模型】
此时,我们再来转化一下式子,由②式我们可以转化成
进一步转化为以
因为在此不等式内,不含有
这一步是关键,理解也并不难.
你可以把模操作看成减去一个数,因为
故有
我们不需要
易证取模后可以保证边界为非负数.
【一个问题】
如何证明每次递归一定能使范围缩小.
其实我们只需证明每次的
而证明
【旧事重提】
现在我们终于可以用类似欧几里得的思想去递归求解.
先设函数
通过上述可以得出
【判断边界及回代】
注意判断边界的可行性.再已经产生解时直接返回.
并且在每次求出
这里是关键!
Code
var t,m,s,l,r,x:int64;function sxgcd(m,s,l,r:int64):int64;begin if r>=m then r:=m-1; s:=s mod m; if (l>r) or (l>=m) or ((s=0) and (l>0)) then exit(-1); if (l=0) then exit(0); //保证标准化 if ((l-1) div s+1)*s<=r then exit((l-1) div s+1); //可行解 sxgcd:=sxgcd(s,m,(-r mod s+s) mod s,(-l mod s+s) mod s); //类欧几里得 if sxgcd=-1 then exit(-1); x:=(m*sxgcd+l-1) div s+1; //回代可能的最小整数解x if s*x-m*sxgcd>=1 then exit(x) else exit(-1); //判负end;begin assign(input,'solve.in'); reset(input); assign(output,'solve.out'); rewrite(output); readln(t); while t>0 do begin dec(t); readln(m,s,l,r); writeln(sxgcd(m,s,l,r)); end; close(input); close(output);end.
- [jzoj]3526. 【NOIP2013模拟11.7A组】不等式(solve)(类欧几里得)
- JZOJ 3526. 【NOIP2013模拟11.7A组】不等式(solve)
- jzoj. 3526. 【NOIP2013模拟11.7A组】不等式(solve)
- 【NOIP2013模拟11.7A组】不等式(solve)
- JZOJ 3506. 【NOIP2013模拟11.4A组】善良的精灵
- JZOJ 3506. 【NOIP2013模拟11.4A组】善良的精灵
- jzoj. 3518. 【NOIP2013模拟11.6A组】进化序列(evolve)
- JZOJ 3518. 【NOIP2013模拟11.6A组】进化序列(evolve)
- jzoj. 3505. 【NOIP2013模拟11.4A组】积木(brick)
- JZOJ 3505. 【NOIP2013模拟11.4A组】积木(brick)
- jzoj. 3523. 【NOIP2013模拟11.7A组】JIH的玩偶(tree)
- [jzoj]3505. 【NOIP2013模拟11.4A组】积木(brick) (排列组合vsDP)
- jzoj 3520. 【NOIP2013模拟11.7B组】原根(math)
- jzoj. 3522. 【NOIP2013模拟11.7B组】迷宫花园(maze)
- jzoj. 3521. 【NOIP2013模拟11.7B组】道路覆盖(cover)
- 【NOIP2013模拟联考12】数数(数位dp||类欧几里得)
- jzoj[3521]. 【NOIP2013模拟11.7B组】道路覆盖(cover) (状压DP)
- [jzoj]3511. 【NOIP2013模拟11.5A组】cza的蛋糕(cake)(DP嵌套dfs【快】或DP【慢】)
- str_replace()、preg_replace()、strtr()三者的区别和用法
- 详解数据挖掘与机器学习的区别与联系
- 如何严格设置php中session过期时间
- Qt鼠标键盘事件
- python学习笔记(3)——循环
- [jzoj]3526. 【NOIP2013模拟11.7A组】不等式(solve)(类欧几里得)
- 面试题57:删除链表中重复的结点
- spring与redis整合(一)--采用原生的jedis(ShardedJedisPool)
- Andriod5.0新特性
- java-day05-Thread-基础知识以及运用API第一种方法使用Thread类
- 【Eternallyc】JAVA语法-instanceof运算符
- 深搜记录路径——部分和问题
- 生产者消费者问题的pthread模拟
- 类与对象