两题是类似的,这里说一下bzoj1853

首先我们求出所有的幸运号码,注意如果存在x是y的倍数则x不算在内,避免之后重复计算

下面我们就要统计幸运号码的倍数了,这显然是要用到容斥原理的

但是幸运号码很多,如果直接暴力找几个幸运号码的公倍数做容斥原理弄会TLE的;

因此我们想到在搜索中剪枝,如果几个幸运号码的公倍数已经大于r,

那么我们一定不会再用这几个幸运号码和别的幸运号码求公倍数了

为了体现这个剪枝的威力,我们穷举幸运号码的时候应该从大往小搜索;

 var b:array[..] of int64;
    a:array[..] of longint;
    m,t,k,i:longint;
    s,x,l,r,ans:int64;
    f:boolean; function gcd(a,b:int64):int64;
  begin
    if b= then exit(a)
    else exit(gcd(b,a mod b));
  end; procedure dfs(j,t:longint;x:int64);
  var y:int64;
  begin
    if j= then
    begin
      if t mod = then ans:=ans+r div x-(l-) div x  //容斥原理
      else if t> then ans:=ans-r div x+(l-) div x
    end
    else begin
      dfs(j-,t,x);
      y:=x div gcd(b[j],x);
      if double(b[j])*double(y)<=r then  //double是防止爆int64
        dfs(j-,t+,b[j]*y);
    end;
  end; begin
  readln(l,r);
  t:=;
  x:=r;
  while x<> do
  begin
    inc(t);
    x:=x div ;
  end;
  fillchar(a,sizeof(a),);
  m:=;
  while a[]=- do
  begin
    s:=;
    for i:= to t do
      if a[i]= then s:=s*+
      else if a[i]= then s:=s*+;
    if s>r then break
    else if s<> then
    begin
      f:=true;
      for i:= to m do
        if s mod b[i]= then
        begin
          f:=false;
          break;
        end;
      if f then
      begin
        inc(m);
        b[m]:=s;
      end;
    end;
    k:=t;
    while a[k]= do
    begin
      a[k]:=;
      dec(k);
    end;
    inc(a[k]);
  end;
  dfs(m,,);
  writeln(ans);
end.

bzoj1853 bzoj2393的更多相关文章

  1. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  2. BZOJ刷题列表【转载于hzwer】

    沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...

  3. BZOJ1853:[SCOI2010]幸运数字 & BZOJ2393:Cirno的完美算数教室——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1853 https://www.lydsy.com/JudgeOnline/problem.php? ...

  4. 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 1817  Solved: 665[Submit][Status] ...

  5. 【bzoj1853】 Scoi2010—幸运数字

    http://www.lydsy.com/JudgeOnline/problem.php?id=1853 (题目链接) 今天考试考了容斥,结果空知道结论却不会写→_→ 题意 求区间中不含6,8两个数字 ...

  6. BZOJ1853 [Scoi2010]幸运数字 容斥原理

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1853 题意概括 求一个区间范围内,近似幸运数字的个数. 定义: 幸运数字:仅由6或者8组成的数字. ...

  7. 【BZOJ1853】幸运数字(搜索,容斥)

    [BZOJ1853]幸运数字(搜索,容斥) 题面 BZOJ 洛谷 题解 成功轰下洛谷rk1,甚至超越了一个打表选手 这题思路很明显吧,先搞出来所有范围内的合法数字,然后直接容斥, 容斥的话显然没有别的 ...

  8. BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】

    BZOJ1853 Scoi2010 幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号 ...

  9. 【bzoj1853】: [Scoi2010]幸运数字 数论-容斥原理

    [bzoj1853]: [Scoi2010]幸运数字 预处理出所有幸运数字然后容斥原理 但是幸运数字是2logn个数的 直接搞会炸 所以把成倍数的处理掉 然后发现还是会T 所以数字要从大到小处理会快很 ...

随机推荐

  1. Linux查看某个文件被哪些进程PID占用

    比如查看test.sh这个文件被哪些进程占用,可以用: lsof | grep test.sh 或者 fuser -v test.sh

  2. 【原创教程】鲸吞HTML

    首先,我们的angularJS课程分为三大模块: HTML/CSS/JS基础. angularJS详解. angualrJS的一些实用框架讲解. 其中,第一大模块的对象是对前端开发技术有点了解但不熟悉 ...

  3. 定位 position

    html结构是fixed包裹relative,relative包裹absolute position:relative;相对定位 a 不影响元素本身的特性 b 不使元素脱离文档流(元素移动之后原始位置 ...

  4. 前台添加jquery的引用

    注意引用的顺序. 以下两个引用,因为bxCarousel.js引用了jquery.js所以jquery.js必须在bxCarousel.js的前面.一般来说对jquery.js的引用放在前面. < ...

  5. SET NOCOUNT 的意义.

    SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息. 语法 SET NOCOUNT { ON | OFF } 当 SET NOCOUNT 为 ON 时, ...

  6. 如何快速的将Centos6.7快速升级3.10.9

    参考文档:http://www.xiexianbin.cn/linux/2015/10/15/quickly-upgrade-centos6.5-kernel-from-2.6.32-to-3.10. ...

  7. oracle插入数据报错ORA-26026

    今天进行数据清理时发现报错ORA-26026,主要是把从交易库提取数据并插入到归档库中. 检查一下发现是归档库的索引问题. 当时为了提高插入速度,所以删除了归档库的索引,可能对主键索引产生了影响. 解 ...

  8. Nginx 独立图片服务器的搭建

    为什么需要独立图片服务器? 如果你留心的话,可以发现,现在主流的网站都是有单独的图片服务器的,例如,人人网的为rrimg,淘宝的为taobaocdn,下面还有很多的二级域名. 独立的图片服务器有诸多好 ...

  9. jQuery EasyUI 1.4.4 Combobox无法检索中文输入的问题

    在项目里使用了EasyUI的Combobox,当ComboBox的item是英文时,都能正常检索出对应项,但是如果使用中文输入法输入几个字母然后通过按shift键输入时,奇怪的事情发生了,combob ...

  10. css sprites精灵技术:Html将所有图片放在一张图片上

    使用最近做的某项目常见页面作为联系素材: 分析:1.切图:步骤条可以切成四种图,即黄灰.红黄.红.灰. 2.html:需要五个li标签,每个包含一个图片及文字. 将要取得图片放到同一张图片上,从左到右 ...