zoukankan      html  css  js  c++  java
  • [Codeforces Round #275 (Div. 2)]B

    最近一直在做 codeforces ,总觉得已经刷不动 BZOJ 了? ——真是弱喵

    你看连 Div.2 的 B 题都要谢谢题解,不是闲就是傻

    显然我没那么闲 ╮(╯_╰)╭

    我觉得这题的想法挺妙的~

    大意是你需要分别给 a 和 b cnt1 和 cnt2 个数字

    但是 a 不要被 x 整除的数 ,as well as,b 不要被 y 整除的数

    然后求需要给的最大数的最小值——

    最值的最值?那不是典型的二分吗?

    但是——坑爹的英文题导致我完全没有意识到这一点……

    二分答案 v ,因为 a 不要被 x 整除的数,所以我们可以

    先把 被 x 整除的数但不被 y 整除 给b,

    再把 被 y 整除的数但不被 x 整除 给a。

    然后剔除所有被 a*b 整除的数

    剩下的数与 a 和 b 都互素,判一下能不能好好的分配就可以了

    代码很好写哦

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 int cnt1, cnt2, x, y;
     5 inline int getint();
     6 inline void putint(long long);
     7 inline bool check(long long);
     8 
     9 int main()
    10 {
    11     long long l, r, m;
    12 
    13     cnt1=getint(), cnt2=getint(), x=getint(), y=getint();
    14     l=0, r=0x0FFFFFFFFFFFFFFFLL;
    15     while (l+1<r)
    16     {
    17         m=(l+r)>>1;
    18         if (check(m)) r=m;
    19         else l=m;
    20     }
    21     putint(r);
    22 
    23     return 0;
    24 }
    25 inline int getint()
    26 {
    27     register int num=0;
    28     register char ch;
    29     do ch=getchar(); while (ch<'0' || ch>'9');
    30     do num=num*10+ch-'0', ch=getchar(); while (ch>='0' && ch<='9');
    31     return num;
    32 }
    33 inline void putint(long long num)
    34 {
    35     char stack[22];
    36     register int top=0;
    37     for ( ;num;num/=10) stack[++top]=num%10+'0';
    38     for ( ;top;top--) putchar(stack[top]);
    39     putchar('
    ');
    40 }
    41 inline bool check(long long num)
    42 {
    43     long long u=num/x, v=num/y, w=num/(x*y);
    44     long long c1=cnt1, c2=cnt2;
    45     c1-=v-w; c2-=u-w;
    46     if (c1<0) c1=0; if (c2<0) c2=0;
    47     if (c1+c2>num-u-v+w) return false;
    48     return true;
    49 }
    本傻英文 SB 系列
  • 相关阅读:
    大数据【一】集群配置及ssh免密认证
    安卓测试【三】adb简单命令及monkey使用
    安卓测试【二】eclipse离线安装ADT
    初始化对象的知识细节
    安卓测试【一】android sdk环境变量配置
    自动化测试用例排序(三个算法随机、贪心、额外贪心)
    java实现文件复制粘贴功能
    Javsssist用InsertAt()方法对语句插桩
    Javassist进行方法插桩
    JUnit手动设计测试方法以及与Randoop的自动生成测试的比较
  • 原文地址:https://www.cnblogs.com/dyllalala/p/4052568.html
Copyright © 2011-2022 走看看