不等式

题目大意:求解满足$L \leqslant(S×x)mod M\leqslant R$的x最小正整数解,无解输出-1

几种部分分:

$L==R$,就是$ex_gcd$;

解在$1e6$以内:搜索

但是卓越的我们一定是要写满分代码的,所以我们上迷一样的正解

观察这个式子:$L \leqslant(S×x)mod M\leqslant R$

我们把它化一下:$L \leqslant Sx-My\leqslant R$

以y为主元:$-L \leqslant My-Sx\leqslant -R$

化成取模的形式:$-L mod S \leqslant (M×y)mod S \leqslant -R mod S$

我们要保证L,R是正数,则-L变为(-L%S+S)%S,R同理

那我们就可以愉快的dfs了

设4个参数,S,M,L,R,判断边界:

$L==0,return 0$

$L>R||L>=M||S%M==0$ $return -1$

然后$S=S%M$,这时$x=\frac{L-1}{S}+1$,判断x是否满足

这是$y=dfs(M,S,-R,-L)$,如果$y==-1$,不合法

若合法,则$x=\frac{R+M×y}{S}$,判断是否合法,合法返回x,不合法返回-1。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define int long long
using namespace std;
int t,m,s,l,r;
int dfs(int m,int s,int l,int r){
if(l>r||l>=m||s%m==0) return -1;
if(l==0) return 0;
s%=m;
int x=(l-1)/s+1;
if(s*x<=r) return x;
int y=dfs(s,m,(-r%s+s)%s,(-l%s+s)%s);
if(y==-1) return -1;
x=(r+m*y)/s;
if(s*x-m*y>=l) return x;
return -1;
}
signed main(){
scanf("%lld",&t);
while(t--){
scanf("%lld%lld%lld%lld",&m,&s,&l,&r);
printf("%lld\n",dfs(m,s,l,min(r,m-1)));
}
return 0;
}

HZOI20190814 B 不等式的更多相关文章

  1. [学习笔记]四边形不等式优化DP

    形如$f[i][j]=min{f[i][k]+f[k+1][j]}+w[i][j]$的方程中, $w[\;][\;]$如果同时满足: ①四边形不等式:$w[a][c]+w[b][d]\;\leq\;w ...

  2. hiho #1223 不等式

    #1223 : 不等式 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定n个关于X的不等式,问最多有多少个成立. 每个不等式为如下的形式之一: X < C X ...

  3. hdu 3506 Monkey Party 区间dp + 四边形不等式优化

    http://acm.hdu.edu.cn/showproblem.php?pid=3506 四边行不等式:http://baike.baidu.com/link?url=lHOFq_58V-Qpz_ ...

  4. BZOJ 1010 玩具装箱toy(四边形不等式优化DP)(HNOI 2008)

    Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...

  5. Carath\'eodory 不等式

    (Carath\'eodory 不等式) 利用 Scharwz 引理及线性变换, 证明: 若函数 $f(z)$ 在圆 $|z|<R$ 内全纯, 在 $|z|\leq R$ 上连续, $M(r)$ ...

  6. 石子合并(四边形不等式优化dp) POJ1160

    该来的总是要来的———————— 经典问题,石子合并. 对于 f[i][j]= min{f[i][k]+f[k+1][j]+w[i][j]} From 黑书 凸四边形不等式:w[a][c]+w[b][ ...

  7. UVa 10003 (可用四边形不等式优化) Cutting Sticks

    题意: 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用. 分析: d(i, j)表示切割第i个切点到第j个切点这段所需的最小费用.则有d(i, j) = ...

  8. hihocoder #1223 : 不等式 水题

    #1223 : 不等式 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/problemset/problem/1223 ...

  9. 【无聊放个模板系列】HDU 3506 (四边形不等式优化DP-经典石子合并问题[环形])

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

随机推荐

  1. jupyter|魔法函数问题| UsageError: Line magic function `%` not found

    问题: jupyter notebook 使用魔法函数% matplotlib inline,报错:UsageError: Line magic function `%` not found 解决: ...

  2. kaptcha 实现验证码

    依赖 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha< ...

  3. day12 bash中的if、for

    bash 变量bash 定义:x= 作用:记录状态 规则:字母开头,后面可以接字母.数字.下划线 export args:将变量定义为全局变量 $$[]:括号中可以进行简单的数学整数运算,可以用ech ...

  4. DEDE采集时自动生成摘要和关键字

    1.修改 include/dedecollection.class.php //自动分析关键字和摘要 preg_match("/<meta[\s]+name=['\"]key ...

  5. delphi判断MDI窗体的子窗体是否存在

    转]delphi判断MDI窗体的子窗体是否存在//*************************************************************************** ...

  6. c#读取并异步写入文件,简单版,指定编码,保持原格式。

    1.同步读取和写入 StreamReader objReader = new StreamReader("E://workspace//zzz//read.txt", Encodi ...

  7. JS 拷贝传值和引用传值

    1.拷贝传值:基本数据类型都是“拷贝传值”. 拷贝传值,就是将一个变量的值“拷贝”一份,传给了另一个变量. 拷贝传值中,两个变量之间没有任何联系,修改其中一个变量的值,另一个不会改变. 这两个变量之间 ...

  8. day25-静态、组合、继承

    #!/usr/bin/env python # -*- coding:utf-8 -*- # ----------------------------------------------------- ...

  9. pycharm新建ini文件或创建ini文件失败

    1.pycharm创建ini格式的文件,没有对应的 ini 文件类型-------需要更新 Ini 2.setting–>marketplace 搜索 Ini ,然后进行安装,重启pycharm ...

  10. 大型SQL文件导入mysql方案

    一. 场景 现有俩个体积较大的单表sql文件,一个为8G,一个为4G,要在一天内完整导入到阿里云的mysql中,需要同时蛮子时间和空间这俩种要求. 二. 思路 搜索了网上一堆的方案,总结了如下几个: ...