题目

自己歪歪的做法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值,无解的情况。
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <cstdlib>
  5.  
  6. #define LL long long
  7.  
  8. using namespace std;
  9.  
  10. LL m,ans;
  11.  
  12. LL gcd(LL a,LL b){
  13. if(!b) return a;
  14. return gcd(b,a%b);
  15. }
  16.  
  17. /*
  18. since the f(x) be an fuction from a num x to y.
  19. so it may be a cricle.
  20. */
  21.  
  22. void solve(LL &ansv,LL &sumv){
  23. LL h,a,x,y,ans=;
  24. scanf("%I64d%I64d%I64d%I64d",&h,&a,&x,&y);
  25. for(int i=;i<=m;i++){
  26. h=(h*x%m+y)%m;
  27. if(h==a){
  28. ansv=(LL)i; //how many seconds it would take for us to arrive 'a' from 'h'
  29. goto L;
  30. }
  31. }
  32. puts("-1");
  33. exit();
  34. L:h=a;
  35. sumv=-;
  36. for(int i=;i<=m;i++){
  37. h=(h*x%m+y)%m; //how many seconds it would take for us to arrive 'a' from 'a'
  38. if(h==a){
  39. sumv=(LL)i;
  40. return;
  41. }
  42. }
  43. }
  44.  
  45. /*
  46. a1 + k1*a2 = b1 + k2*b2
  47.  
  48. ans = a1 (mod a2)
  49. ans = b1 (mod b2)
  50. */
  51.  
  52. int main(){
  53. scanf("%I64d",&m);
  54. LL a1,a2,b1,b2;
  55. solve(a1,a2);
  56. solve(b1,b2);
  57. if(a1==b1) ans=a1;
  58. else if(a2==-&&b2==-){
  59. puts("-1");
  60. return ;
  61. }
  62. else if(a2==-&&a1>b1&&(a1-b1)%b2==) ans=a1;
  63. else if(b2==-&&b1>a1&&(b1-a1)%a2==) ans=b1;
  64. else if(a2==-||b2==-){
  65. puts("-1");
  66. return ;
  67. }
  68. else{
  69. LL k1;
  70. for(k1=;k1<=m;k1++)
  71. if((a1+k1*a2-b1)%b2==){
  72. ans=a1+k1*a2;
  73. if(ans>=b1) break;
  74. }
  75. if(k1>m) ans=-;
  76. }
  77. printf("%I64d\n",ans);
  78. return ;
  79. }

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. navicat for mysql 快捷键(原创)

    navicat for mysql 快捷键(原创) 在谷歌,百度上基本搜索不出来这方面的内容,我总结了一下,方便新手,节省一些探索的时间. 1.ctrl+q           打开查询窗口2.ctr ...

  2. Android开发之实现锁屏功能

    锁屏须要引入设备超级管理员.在文档Android开发文档的Administration中有具体的说明. Android设备管理系统功能和控制訪问. 主要有一下几个步骤: 1  创建广播接收者,实现De ...

  3. quick-cocos2d-x教程12:实现文本和password输入界面

    用户输入账号和password输入是常见工能,如今用editbox来实现username和password输入.可是这个商业项目上常见功能,网上却没有找到教程.我就一步一步的实现.代码例如以下: fu ...

  4. 图像处理算法2——Otsu最佳阈值分割法http://blog.csdn.net/xiaqunfeng123/article/details/17121195

    http://blog.csdn.net/xiaqunfeng123/article/details/17121195Otsu法是1979年由日本大津提出的.该方法在类间方差最大的情况下是最佳的,即统 ...

  5. 错误 1 error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file

    问题:错误 1 error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file 解答:加入include路径:E:\env\Anaconda2x6 ...

  6. iOS 后台返回json解析出现的null的解决办法

    在后台返回值为Null为空时,我们代码没有判断时,程序就会崩溃.当时一直很疑惑是为啥,后来发现是数据问题,由于服务器的数据库中有些字段为空,然后以Json形式返回给客户端时就会出现这样的数据.当我们通 ...

  7. 【BZOJ4952】lydsy七月月赛 E 二分答案

    [BZOJ4952]lydsy七月月赛 E 题面 题解:傻题...二分答案即可,精度有坑. #include <cstdio> #include <cstring> #incl ...

  8. 2015年度新增开源软件排名TOP 100,EasyDarwin开源流媒体服务器排名第17

    本榜单包含 2015 年开源中国新收录的 5977 款开源软件中,根据软件本身的关注度.活跃程度进行排名前 100 名的软件.从这份榜单中或许可以了解到最新业界的趋势. 榜单详情:http://www ...

  9. Java多线程学习(吐血超详细总结)转自博主林炳文Evankaka

    文章由林炳文Evankaka原创.转载自http://blog.csdn.net/evankaka 写在前面的话:此文只能说是Java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果 ...

  10. 阿里Java开发手册学习 3 MYSQL规约

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...