「日常训练」 Mike and Frog (CFR305D2C)
题意与分析 (Codeforces 548C)
我开始以为是一条数学题,死活不知道怎么做,无奈看题解,才知这是一条暴力,思维江化了- -
题意大概是这样的:
两个东西的初始高度分别为h1,h2" role="presentation">h1,h2h1,h2,每秒二者的高度分别变化为(x1h1+y1)%m1" role="presentation">(x1h1+y1)%m1(x1h1+y1)%m1与(x2h2+y2)%m2" role="presentation">(x2h2+y2)%m2(x2h2+y2)%m2,问几秒后二者高度达到各自的目标a1,a2" role="presentation">a1,a2a1,a2,如果不能输出-1。
实际上我看了题解还是不能明白为什么迭代2m" role="presentation">2m2m次,或者说2*…这个变量为什么是m。2这个系数能够理解,我们需要找出循环节;但是为什么是m看了半天还是不能明白。我去看看扩展gcd算法的相关题目来找找思路。
总而言之,迭代这么多次,如果他们不能达到各自的目标输出-1。否则一定有解。我们前面的系数2保证了至少能达到2次a" role="presentation">aa,然后找到其中的周期,之后暴力跑一段(取一个很大的数字,我这里有可能被hack),看能不能达到一致即可。
不能输出-1。
总而言之,这是用到了数学结论、披着数学外衣、但是本质是暴力的一道题目。希望自己能够将暴力和数学融会贯通。
代码
#include <bits/stdc++.h>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pi = pair<int,int>;
const int MAXN=500;
// After reading the editorial.
int main()
{
QUICKIO
ll m,h1,a1,x1,y1,h2,a2,x2,y2;
cin>>m>>h1>>a1>>x1>>y1>>h2>>a2>>x2>>y2;
ll start1=h1,start2=h2;
vector<ll> time1,time2;
rep(i,0,2*m) // why 2*m? we need a zhouqi!
{
if(start1==a1)
time1.PB(i);
if(start2==a2)
time2.PB(i);
start1=(start1*x1+y1)%m;
start2=(start2*x2+y2)%m;
}
if(time1.size()==0 || time2.size()==0)
{
cout<<"-1"<<endl;
return 0;
}
ll period1=time1[1]-time1[0],
period2=time2[1]-time2[0],
go1=time1[0],
go2=time2[0];
//cout<<period1<<" "<<period2<<" "<<go1<<" "<<go2<<endl;
rep(i,1,2*m) // I dont know why 2m O_O
{
if(go1==go2)
{
cout<<go1<<endl;
return 0;
}
if(go1<go2)
go1+=period1;
else go2+=period2;
}
cout<<-1<<endl;
return 0;
}
「日常训练」 Mike and Frog (CFR305D2C)的更多相关文章
- 「日常训练」 Mike and Fun (CFR305D2B)
题意(CodeForces 548B) 每次对01矩阵中的一位取反,问每次操作后,单列中最长连续1的长度. 分析 非常非常简单,但是我当时训练的时候WA了四次...无力吐槽了,人间 不值得.jpg 代 ...
- 「日常训练」Mike and Feet(Codeforces Round #305 Div. 2 D)
题意 (Codeforces 548D) 对一个有$n$个数的数列,我们要求其连续$x(1\le x\le n)$(对于每个$x$,这样的连续group有若干个)的最小数的最大值. 分析 这是一道用了 ...
- 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)
题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...
- 「日常训练」 Fire!(UVA-11624)
与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...
- 「日常训练」COMMON 约数研究(HYSBZ-1968)
题意与分析 感谢https://www.cnblogs.com/Leohh/p/7512960.html的题解.这题话说原来不在我的训练范围,正好有个同学问我,我就拿来做做.数学果然不是我擅长的啊,这 ...
- 「日常训练」「小专题·图论」 Frogger (1-1)
题意 分析 变形的dijkstra. 分析题意之后补充. 代码 // Origin: // Theme: Graph Theory (Basic) // Date: 080518 // Author: ...
- 「日常训练」Single-use Stones (CFR476D2D)
题意(Codeforces 965D) $w$表示河的宽度,$l$表示青蛙所能跳的最远的距离,第二行的$w-1$个元素表示离河岸为$i$的地方有$a[i]$个石头,一个石头被踩两次,问最多有多少只青蛙 ...
- 「日常训练」Common Subexpression Elimination(UVa-12219)
今天做的题目就是抱佛脚2333 懂的都懂. 这条题目干了好几天,最后还是参考别人的代码敲出来了,但是自己独立思考了两天多,还是有收获的. 思路分析 做这条题我是先按照之前的那条题目(The SetSt ...
- 「日常训练」Magic Stones(CodeForces-1110E)
题意 给定两个数组c和t,可以对c数组中的任何元素变换\(c_i\)成\(c_{i+1}+c_{i-1}-c_i\),问c数组在若干次变换后能否变换成t数组. 分析 这种魔法题目我是同样的没做过. ...
随机推荐
- Java从入门到放弃——01.Java 环境搭建
本文目标: 下载与安装JDK 配置Java环境 1.JDK9下载: 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jav ...
- 2017.9.12 初入HTML -----学习总结(二)
接上:..... (4)标记可分为: 4.1单标记:(单标记仅单独使用就可以表达完整的意思) 基本语法:<标记名称/> 例如:<br/>实现换行的功能.<hr/>实 ...
- java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content&q ...
- Spring8中lambda表达式的学习(Function接口、BiFunction接口、Consumer接口)
代码重构,为了确保功能的等效性,梳理代码时,发现如下代码: public SingleRespTTO fundI(SingleReqTTO request) throws Exception { re ...
- Oracle 差异性增量 和 累计增量 原理(转)
RMAN一个强大的功能是支持增量备份,增量备份中心思想就是减少备份的数据量,我们不需要在从头开始备份了,只需要备份自上次已备份之后的数据块即可. Oracle 9i 共有五种级别 0 1 2 3 ...
- CentOS7 64位下 MySQL5.7的安装与配置(YUM)
趁着11.11的时候在阿里云上弄了一云服务ECS(作为自己的节日礼物 > _ <) ,系统为CentOS的,打算弄一个人博客之类的,这些天正在备案当中(不知得多久). 忙里偷闲,在中午休息 ...
- 基于SpringBoot+SpringSecurity+mybatis+layui实现的一款权限系统
这是一款适合初学者学习权限以及springBoot开发,mybatis综合操作的后台权限管理系统 其中设计到的数据查询有一对一,一对多,多对多,联合分步查询,充分利用mybatis的强大实现各种操作, ...
- nginx 安装目录详解
rpm -ql nginx 路径 类型 介绍 /etc/logrotate.d/nginx 配置文件 Nginx 日志轮转,用于logrotate服务日志切割 /etc/nginx /etc/ng ...
- git中如何忽略文件上传?
使用原因:至于我们为什么要使用git忽略文件,原因很多.就比如我自己的情况吧!自己一个人多地方开发,为了代码同步,这样很方便.但是有个问题就是,我创建 的是开源项目,上面有一些服务器上面的配置信息,这 ...
- 记6种php 加密解密方法
<?php function encryptDecrypt($key, $string, $decrypt){ if($decrypt){ $decrypted = rtrim(mcrypt_d ...