题目

自己歪歪的做法WA了好多发。
原题中每一秒都相当于
$x1 = f1(x1)$
$x2 = f2(x2)$
然后这是一个定义域和值域都在[0,m-1]的函数,显而易见其会形成一个环。
而且环长不超过m,所以实际上问题就分为了两部分:
1.x1变到a1,x2变到a2(h -> a的长度)
2.x1做循环,x2做循环直到同时为a1,a2。(a -> a的长度)
我们设第一步分别用了m1 s, m2 s,第二步用了 t1 s ,t2 s。
对于第一部分我们可以直接枚举吗,因为长度不超过m。
对于第二部分实际上是两个式子。
$ans =  △1 * t1 + m1$
$ans =  △2 * t2 + m2$
这个式子只需要枚举就行了。因为m1,m2最多相差不超过m,而在最优决策下△1或△2绝对值每变化1,m1,m2必然至少变化1,所以△最大为m
问题解决,注意各种特判,比如都没有t值,有一个有t值,无解的情况。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib> #define LL long long using namespace std; LL m,ans; LL gcd(LL a,LL b){
if(!b) return a;
return gcd(b,a%b);
} /*
since the f(x) be an fuction from a num x to y.
so it may be a cricle.
*/ void solve(LL &ansv,LL &sumv){
LL h,a,x,y,ans=;
scanf("%I64d%I64d%I64d%I64d",&h,&a,&x,&y);
for(int i=;i<=m;i++){
h=(h*x%m+y)%m;
if(h==a){
ansv=(LL)i; //how many seconds it would take for us to arrive 'a' from 'h'
goto L;
}
}
puts("-1");
exit();
L:h=a;
sumv=-;
for(int i=;i<=m;i++){
h=(h*x%m+y)%m; //how many seconds it would take for us to arrive 'a' from 'a'
if(h==a){
sumv=(LL)i;
return;
}
}
} /*
a1 + k1*a2 = b1 + k2*b2 ans = a1 (mod a2)
ans = b1 (mod b2)
*/ int main(){
scanf("%I64d",&m);
LL a1,a2,b1,b2;
solve(a1,a2);
solve(b1,b2);
if(a1==b1) ans=a1;
else if(a2==-&&b2==-){
puts("-1");
return ;
}
else if(a2==-&&a1>b1&&(a1-b1)%b2==) ans=a1;
else if(b2==-&&b1>a1&&(b1-a1)%a2==) ans=b1;
else if(a2==-||b2==-){
puts("-1");
return ;
}
else{
LL k1;
for(k1=;k1<=m;k1++)
if((a1+k1*a2-b1)%b2==){
ans=a1+k1*a2;
if(ans>=b1) break;
}
if(k1>m) ans=-;
}
printf("%I64d\n",ans);
return ;
}

Code

CF 345A Mike and Frog的更多相关文章

  1. CF #305 (Div. 2) C. Mike and Frog(扩展欧几里得&&当然暴力is also no problem)

    C. Mike and Frog time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  2. Codeforces Round #305 (Div. 1) A. Mike and Frog 暴力

     A. Mike and Frog Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/547/pr ...

  3. 数论/暴力 Codeforces Round #305 (Div. 2) C. Mike and Frog

    题目传送门 /* 数论/暴力:找出第一次到a1,a2的次数,再找到完整周期p1,p2,然后以2*m为范围 t1,t2为各自起点开始“赛跑”,谁落后谁加一个周期,等到t1 == t2结束 详细解释:ht ...

  4. cf#305 Mike and Foam(容斥)

    C. Mike and Foam time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  5. cf 547B. Mike and Feet dp

    题意: n个矩阵排成一排,n<=2e5,高度分别为hei[i],宽度为1 对于一些连续的矩阵,矩阵的size为矩阵的个数,矩阵的strength为这些矩阵中高度最低的那一个高度 求:for ea ...

  6. codeforces #305 A Mike and Frog

    挺简单的题目,但是有一堆恶心的边界 在刨去恶心的边界之后: 假定我们知道两边的循环节为b1,b2 其中h第一次到达目标的时间为a1,a2 又知道对于答案t t=a1+b1*t1=a2+b2*t2 不妨 ...

  7. codeforces 547A Mike and Frog

    近期都是这样的题呢. . .... 哎 開始想纯暴力(体如今跳出循环t>=那里.,,,)..,.随着数据变大.. ...(t=499981500166是能够的),,,..,,23333333 超 ...

  8. 「日常训练」 Mike and Frog (CFR305D2C)

    题意与分析 (Codeforces 548C) 我开始以为是一条数学题,死活不知道怎么做,无奈看题解,才知这是一条暴力,思维江化了- - 题意大概是这样的: 两个东西的初始高度分别为h1,h2&quo ...

  9. CF数据结构练习

    1. CF 438D The Child and Sequence 大意: n元素序列, m个操作: 1,询问区间和. 2,区间对m取模. 3,单点修改 维护最大值, 取模时暴力对所有>m的数取 ...

随机推荐

  1. php实现类似淘宝最近浏览商品的功能模型代码

    <?php //TempNum 显示临时记录数 $TempNum=5; //setcookie("RecentlyGoods", "12,31,90,39" ...

  2. PHP中的$_SERVER['PATH_INFO']

    PHP中的全局变量$_SERVER['PATH_INFO']是一个很有用的参数,众多的CMS系统在美化自己的URL的时候,都用到了这个参数. 对于下面这个网址: http://www.test.com ...

  3. [LeetCode]Insert Interval 考虑多种情况

    写太复杂了. 思想:确定带插入区间的每一个边界位于给定区间中的哪个位置,共同拥有5种情况 -1 |(0)_1_(2)|  (3) 当中.0,1,2这三种情况是一样的. 确定每一个带插入区间的两个边界分 ...

  4. selector模块使用

    #服务端 from socket import * import selectors sel=selectors.DefaultSelector() def accept(server_fileobj ...

  5. 区分拖曳(drag)和点击(click)事件

    假设页面上有一个a标签: <a href="http://www.google.com">google</a> 现在需要对这个标签进行拖放操作,会发现当拖曳 ...

  6. longestIncreasingSequence最长上升子序列问题

    package dp; /** * 最长上升子序列问题 */ public class LongestIncreasingSubsequence { /** * 原始dp * @param arr * ...

  7. java arraylist源码记录

    1. ArrayList 实现了RandomAccess接口, RandomAccess接口用于标记是否可以随机访问 2. 继承了AbstractList类, 因此获取了modcount , modc ...

  8. LeetCode(88)题解-- Merge Sorted Array

    https://leetcode.com/problems/merge-sorted-array/ 题目: Given two sorted integer arrays nums1 and nums ...

  9. 九度OJ 1104:整除问题 (整除、因式分解)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4142 解决:1346 题目描述: 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除. 输入: 两个整数n(2< ...

  10. Pipeline(netty源码)

    精进篇:netty源码死磕6  巧夺天工--Pipeline模式揭秘 1. 巧夺天工--Pipeline模式揭秘 1.1. Pipeline模式简介 管道的发名者叫,Malcolm Douglas M ...