牛客练习赛64 红色的樱花 exgcd 贪心
LINK:The red sakura
暴怒狂樱 血染京都.
这题质量不咋地 这题也没啥营养.
不过还是存在值得学习的地方的。
一个trick n行 m列 第一行与第n行相连 第1列和第m列相连的时候。
考虑一个有意思的事情 x+k,y+k 在gcd(n,m)==1的时候 x+k,y+k为整个网格的通项。
更普遍的 x+k,y+k所代表的集合 %gcd(n,m)为等价类.
那么容易发现 一共存在gcd(n,m)个等价类 每个等价类的大小为LCM(n,m);
考虑这道题 出题人的题解上说 可以证明最多使用一次1操作。
我也不会证明 感觉是对的吧。
那么容易得到 使用1操作的时间无所谓.
考虑如果不使用1操作 就是解两个同余方程.
如果使用 就是能否直接到达的问题 如果可以 就结束了 如果不行再解两个同余方程.
值得一提的是 第二个同余方程比较有意思 用的就是上述的算是引理吧.
ll T;
ll xx,yy;
inline ll exgcd(ll a,ll b)
{
if(!b){xx=1;yy=0;return a;}
ll ww=exgcd(b,a%b);
ll zz=xx;xx=yy;yy=zz-a/b*yy;
return ww;
}
inline ll solve(ll a,ll b,ll c,ll v)
{
ll gcd=exgcd(a,b);
if(c%gcd)return INF;
b/=gcd;
return (c/gcd*xx%b+b)%b*v;
}
inline ll G(ll a,ll b){return b?G(b,a%b):a;}
signed main()
{
//freopen("1.in","r",stdin);
get(T);
while(T--)
{
ll get(n),get(m),get(d),get(sx),get(sy),get(ex),get(ey),get(a),get(b),get(c);
--sx;--sy;--ex;--ey;
if(sx==ex&&sy==ey){put(0);continue;}
ll ans=INF;ll gcd=G(n,m);
ans=min(ans,solve(d,n,(ex-sx+n)%n,b)+solve(d,m,(ey-sy+m)%m,c));
ll w1=a+solve(d,gcd,ex-sx-(ey-sy),b);
ll w2=a+solve(d,gcd,ey-sy-(ex-sx),c);
ans=min(ans,w1);ans=min(ans,w2);
if((sx-ex)%gcd==(sy-ey)%gcd)ans=min(ans,a);
putl(ans==INF?-1:ans);
}
return 0;
}
牛客练习赛64 红色的樱花 exgcd 贪心的更多相关文章
- 牛客练习赛64 D【容斥+背包】
牛客练习赛64 D.宝石装箱 Description \(n\)颗宝石装进\(n\)个箱子使得每个箱子中都有一颗宝石.第\(i\)颗宝石不能装入第\(a_i\)个箱子.求合法的装箱方案对\(99824 ...
- 牛客练习赛51 **E-数列** (二分,贪心,构造)
牛客练习赛51 E-数列 链接:https://ac.nowcoder.com/acm/contest/1083/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
- 牛客练习赛64 如果我让你查回文你还爱我吗 线段树 树状数组 manacher 计数 区间本质不同回文串个数
LINK:如果我让你查回文你还爱我吗 了解到了这个模板题. 果然我不会写2333... 考试的时候想到了一个非常辣鸡的 线段树合并+莫队的做法 过不了不再赘述. 当然也想到了manacher不过不太会 ...
- 牛客练习赛 26 C题 城市规划【贪心】
<题目链接> 题目描述 小a的国家里有n个城市,其中第i和第i - 1个城市之间有无向道路连接,特殊的,第1个城市仅与第2个城市相连为了减轻道路维护负担,城市规划局局长MXT给出了m个要求 ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
随机推荐
- Python优秀开源项目Rich源码解析
这篇文章对优秀的开源项目Rich的源码进行解析,OMG,盘他.为什么建议阅读源码,有两个原因,第一,单纯学语言很难在实践中灵活应用,通过阅读源码可以看到每个知识点的运用场景,印象会更深,以后写代码的时 ...
- Socket模拟Web服务器
效果如下: 源码下载地址:https://github.com/doyoulaikeme/DotNetSample/tree/master/DotNetSample3/SocketWebServer
- day70 django中间件
目录 一.django的七个中间件 二.如何自定义中间件 1 自定义中间件的创建方式 2 django提供自定制中间件的五个方法 2.1 必须掌握两个方法 2.2 了解方法 三.csrf跨站请求伪造校 ...
- day22 作业
1 统计文件夹大小 def get_filesize(file_path): count = 0 res=None files_sum = os.listdir(file_path) for file ...
- devtools 判断类数组的方法
var obj = { '2': 3, '3': 4, 'length': 2, 'splice': Array.prototype.splice, 'push': Array.prototype.p ...
- 批量删除当前文件夹下面的.svn文件夹
for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn 使用方法: 新建text文档,复制上面的文本 ...
- element-ui的upload组件的clearFiles方法的调用
element-ui使用中碰到的问题 <template> <div> <el-button @click="clearFiles">重新上传& ...
- MYSQL 之 JDBC(七):增删改查(五) DAO设计模式
Data Access Object,数据访问对象 what:访问数据信息的类.包含了对数据的CRUD(create.read.update.delete,增删改查)操作,而不包含任何业务相关的信息. ...
- 爬虫05 /js加密/js逆向、常用抓包工具、移动端数据爬取
爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 目录 爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 1. js加密.js逆向:案例1 2. js加密.js逆向:案例2 3 ...
- Static关键字的使用
Static关键字的使用 static关键字的作用: 用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用. 首先我们来介绍类变量 当static修饰 ...