因为最近的生活太颓废总是不做题而被老师D了一番, 所以今天晚上到bzoj上去刷了几道水题。。。。。

 

bzoj 4320: ShangHai2006 Homework

题目大意

维护一个支持两个操作的集合:

1) 插入一个数x

2) 询问集合中所有数中 mod x 最小是多少

解题思路

似乎log家族没有什么好的办法解决这道题?

考虑 sqrt() 的方法。

当询问 x <= sqrt(m) 的时候, 直接存一下就可以了。

当询问 x > sqrt(m) 的时候,把n分成 n / x 块, 每一块单独考虑。

这时对于每一块, 我们需要求出的就是 >= (i * x) 的所有数中最小的那个。

填一个log会爆掉的。但是如果倒着处理, 每一次询问的就是 x 右面第一个没有被染色的点, 其实就是 疯狂的馒头这道题, 用并查集搞一搞就可以了。

,sq=;
     memset(tmp,     memset(ans,     ;i<=n;i++){
         ]; scanf(,&xx[i]);
         la[i]=s[]-                      bin[xx[i]]++;
             ;j<=sq;j++)tmp[j]=min(tmp[j],xx[i]%j);
         }     }
     ;i<=N;i++);
     fat[N+]=N+;
     ;i--){
                      ;
         }             ;j<=N;j+=xx[i])
                          }
     }
     ;i<=n;i++)     ;
 }

bzoj 4318:OSU!

题目大意

问一个长度为n, 第i为有pi的概率为1的01串期望的价值是多少。

一个01串的价值定义为它的所有极长子只含1串的长度的立方的和。

解题思路

尝试计算每一位对答案的贡献f(i)。 设li 为 i 前面的极长"1"串的长度

显然 f(i) = p[i] * (3 * li2 + 3 * li + 1)。

只要算出 li2 和 li 的期望, 就可以算出 f(i) 的期望了。

注意 li2 的期望并不等于 (li的期望)2 , 要单独存一个数来转移。

虽然恶意缩了缩空格,,但代码真的本来就很短很漂亮。。

#include <cstdio>
;i<=n;i++){
        scanf(*x2+*xx+);
        x2=x*(x2+*xx+);
        xx=x*(xx+);
    }
    printf(;
}

bzoj 4302: Hdu 5301 Buildings

题目大意

有n*m的一个矩形地面,要建公寓,现在要求公寓里的房间怎么划分,要求每间房屋都为一个矩形,而且要有一侧为矩形的边,除(x,y)位置外不能有空余,(x,y)位置不能建房间,要让房屋面积最大的那个的面积尽量的小,问最小会是多少 

(上面这段是copy下来的。。)

解题思路

构造题。首先旋转一下令 n <= m,显然, 最后答案中覆盖的块一定都是 1 * x 的

其实整个问题的答案就是覆盖了障碍点的 上, 下, 左, 右 四个点的四个块的长度。

这时候情况数就很少了, 分类讨论一下就好了。

1)(障碍物)上面的点向上, 下面的点向下, 这时候剩下的点分两种情况: 1, 全部按照 (n + 1) / 2的方式竖着排列 2, 所有左边的点向左连, 右边的点向右连(其实第2种情况更优当且仅当是一个边长为奇数的正方形且障碍点在中间)

2)(障碍物)上面的点和下面的点都向 左边和右边中更近的那一边连 , 这时候剩下的点(就是障碍物左边的所有点或者是右边的所有点)分两种情况: 1, 全部按照 (n + 1) / 2的方式竖着排列 2, 所有点都向左边/ 右边连。

好了, 其实一共只有四小类。

代码还是炒鸡短。。。

#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdio>
) / , max(y - , m - y - )), max(x - , n - x));
        ans = min(ans, max(min(y, m - y + ), min((n + ) / , max(y - , m - y))));
        printf(;
}

bzoj 4305: 数列的GCD

题目大意

给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N)。 
现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], b[2], ..., b[N],满足: 
(1)1<=b[i]<=M(1<=i<=N); 
(2)gcd(b[1], b[2], ..., b[N])=d; 
(3)恰好有K个位置i使得a[i]<>b[i](1<=i<=N)

1.  1≤bi≤m
2.  gcd(b1,b2,...,bn)=d
3.  ∑ni=1[ai≠bi]=k

解题思路

因为 300000 以内的数的因子个数最多也就140个, 所以这道题怎么搞一搞都可以。

然后就是一些基本数论知识也没什么好说的。对于每一个i ,只要求出a[]中有多少个数是i的倍数。对于不是i的倍数的那些数, 贡献的方案数是 数量(n/i) , 对于是i的倍数的那些数, 贡献的是 从那么多数中选取(n-k)个数, 选出来的数每个有1种取法,其它的每个有(n/i)-1种取法。

代码有点丑就不贴了(竟然比绝大多数代码都长简直不能忍!!!一定是我的算法太丑了QAQ)

bzoj 3884: 上帝与集合的正确用法

题目大意

1.  1≤bi≤m
2.  gcd(b1,b2,...,bn)=d
3.  ∑ni=1[ai≠bi]=k

解题思路

我们都知道欧拉定理: an ≡ an mod φ(p)  mod p (gcd(a, p) = 1)

然而它竟然还有一个拓展:

an ≡ an mod φ(p) +φ(p)   mod p  这个公式是始终通用的

然后这道题就可以随便做了。设答案为 f(x)

则 f(x) = 2f(phi(x)) + phi(x) mod x

于是就可以递归地解决啦

], prim[N], pp, f[N+], X[], mx;
 ];
      ;
              ) ret = (ll)ret * x % mod;
         x = (ll)x * x % mod; k >>= ;
     } }
      ) f[x] = mypow(, calc(phi[x]) + phi[x], x);
      }
      scanf(     ; i <= t; i ++) scanf(     ; i <= mx; i ++){
         ;
         ; j <= pp && (ll)i * prim[j] <= mx; j ++){
             isp[i * prim[j]] = ; phi[i * prim[j]] = phi[i] * (prim[j] - );
             ) {phi[i * prim[j]] = phi[i] * prim[j];          }
     }
     memset(f, -, (mx + ) * );
     f[] = ;
     ; i <= t; i ++) printf(    ;
 }

bzoj刷水的更多相关文章

  1. bzoj 刷水

    bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...

  2. [暑假的bzoj刷水记录]

    (这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...

  3. USACO 刷水

    BZOJ 1666 水.. BZOJ 1579 分层图最短路. BZOJ 1782 从一开始若某头牛停在U,那么U的子树的时间都会加一用BIT维护DFS序就行了 BZOJ 1572 贪心+堆 排序后查 ...

  4. [洛谷U22157]刷水题(数位dp)(hash)

    题目背景 做正经题是不可能做正经题的,这辈子都不可能做正经题的,毒瘤题又不会做毒瘤题,就是水题这种东西,才维持了蒟蒻的信心: 题目描述 这里有N+1 道水题,编号分别为0 ~N+1 ,每道水题都有它自 ...

  5. 【BZOJ】1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏(刷水严重)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1666 这种我就不说了.. #include <cstdio> #include < ...

  6. NOIP前刷水行动

    2016.11.15 BZOJ1009:DP+矩阵乘法+KMP BZOJ1898:矩阵乘法 BZOJ4101:贪心,考虑我们往右边撞的时候,我们会向左边冲 ,于是枚举答案点利用一个指针计算即可! 20 ...

  7. 【刷水】之USACO2008资格赛(Bzoj1599-1603)

    做之前真是没想到有这么水>.< 但做了还是发上来吧>.< 就当是刷一刷AC量&1A率什么的>.< Bzoj1599: [Usaco2008 Oct]笨重的石 ...

  8. BZOJ刷题指南(转)

    基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...

  9. Luogu USACO Training 刷水记录

    开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...

随机推荐

  1. 回车符(CR)与换行符(LF), '\r'和'\n'的区别

    回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下 ...

  2. CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation --读书笔记(2)CSS3利用图层叠加实现多背景

    CSS 3允许设置多个背景图片,每个背景图片占一层,层的上下按照在CSS中书写的顺序来定,最先写的背景在最上层,每层图片定义使用英文逗号隔开. 例如下面的代码: background:url(http ...

  3. jQuery如何判断元素是否是隐藏的?

    jQuery函数简介: is(expr) 用一个表达式来检查当前选择的元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true. 如果没有元素符合,或者表达式无效,都返回'false'. 注 ...

  4. JS实现图片预加载无需等待

    网站开发时经常需要在某个页面需要实现对大量图片的浏览;用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考 ...

  5. Collection接口

    Collection接口所定义的方法: clear:清空 retainAll 求一个Collection和另一个 Collection的交集. object[] toArray()  把里面的各个对象 ...

  6. 正则表达式工具RegexBuddy使用教程

    1. 界面介绍  (1)初始界面选项介绍 (2)如何使用匹配 (3)如何使用正则替换 (4)如何使用Debug http://www.cnblogs.com/tsql/p/5860893.html

  7. OOCSS的概念和思路

    <概念> <思路> 面向对象的CSS有两个原则: 独立的结构和样式 独立的容器和内容 以下几点是创建OOCSS的关键部分: 创建一个组件库 独立的容器和内容,并且避免样式来依赖 ...

  8. XmlException: 名称不能以“<”字符(十六进制值 0x3C)开头

    svn 版本冲突引起的: 产看config 文件里面的内容是否冲突,这个问题可能和代码无关

  9. UISearchController使用

    iOS8之前我们使用UISearchDisplayController做TableView的本地搜索 iOS8提供实现搜索功能的SDK:UISearchController(iOS8.0之后).UIS ...

  10. href使用 javascript:;与javascript:void(0)防跳到顶部

    有时候我们在编写js过程中,需要触发事件而不需要返回值,那么就可能需要这样的写法   href=”#”,包含了一个位置信息.默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢 ...