zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 77

    Educational Codeforces Round 77

    C.Infinite Fence

    • 题意:现有 $ 10^{100}$ 块木板需要涂漆,第 (x) 块如果 (x)(r) 的倍数,则涂上红色,是 (b) 的倍数,则涂蓝色。如果既是 (r) 又是 (b) 的倍数,那么两种颜色都可以涂;如果连续有 (k​) 块板的颜色是一样的,则输出REBEL,否则输出OBEY。问是否能避免被处死.

    • 分析:

    • 若规定 (r<b) ,一开始就很简单的以为只要 (b ge k imes r​) 就可以。主要是错误地理解所有间隔都是固定的,等于开头的间隔,其实间隔是会变化的。

    • 对于这种有一定数学规律的题,不要一直去想具体的例子。

    • 抽象出 (nb........(n+1)b) 的一段,为满足题意,它们中间 (b-1) 的距离最多只能放 (k-1) 个红色木板。故设第k个红木板相对 (nb) 的距离为 (d_{k}​)

      [d_{k}>b-1 \ \ t+(k-1) imes r >b-1\ \k>frac{(b-1)-t}{r}+1 ]

      所以只要满足(3)式就输出OBEY

    • 求t:t是第一个红木板相对 (nb) 的距离。有如下关系

      [n_{1}b+t=n_{2}r ]

      当t最小时,(d_{k}) 也最小,是最坏的情况。根据exgcd,当 (gcd(r,b) | t) 时有解,t最小值为 (gcd(r,b))

    • 代码:

      #include<bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      const int MA=1e5+5;
      
      int main()
      {
          int T;
          scanf("%d",&T);
          while(T--){
              ll r,b,k;
              scanf("%lld%lld%lld",&r,&b,&k);
              if(r>b) swap(r,b);
              ll g=__gcd(r,b);
              ll ans=((b-1)-g)/r+1;
              if(k<=ans) printf("REBEL
      ");
              else printf("OBEY
      ");
          }
          return 0;
      }
      
      
  • 相关阅读:
    LINUX下mysql的大小写是否区分设置 转
    在CentOS搭建Git服务器 转
    Idea实现WebService实例 转
    Intellij 中的git操作 转!
    Maven配置 settings.xml 转
    Maven使用第三方jar文件的两种方法 转
    Maven : 将Jar安装到本地仓库和Jar上传到私服 转
    maven 私服 配置 转
    Maven 私服配置 转
    Linux 下挂载硬盘的 方法
  • 原文地址:https://www.cnblogs.com/A-sc/p/12172501.html
Copyright © 2011-2022 走看看