【BZOJ2969】矩形粉刷

Description

为了庆祝新的一年到来,小M决定要粉刷一个大木板。大木板实际上是一个W*H的方阵。小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形全部刷好。小M乐坏了,于是开始胡乱地使用这个工具。
假设小M每次选的两个格子都是完全随机的(方阵中每个格子被选中的概率是相等的),而且小M使用了K次工具,求木板上被小M粉刷过的格子个数的期望值是多少。

Input

第一行是整数KWH

Output

一行,为答案,四舍五入保留到整数。

Sample Input

1 3 3

Sample Output

4
【样例解释】
准确答案约为3.57
【范围】
100% 的数据满足:1 ≤ W, H ≤ 1000, 0 ≤ K ≤ 100

题解:跟染色那题一样,由于期望可加,所以我们只需要统计每个点被刷到的概率。而每个点被刷到的概率=1-每个点没被刷到的概率,没被刷到的怎么算呢?维护个二位前缀和,然后容斥搞一搞就行了。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
int K,W,H;
double ans;
double pm(double x,int y)
{
double ret=1;
while(y)
{
if(y&1) ret=ret*x;
x=x*x,y>>=1;
}
return ret;
}
inline ll c(ll x)
{
return x*x;
}
int main()
{
int i,j;
scanf("%d%d%d",&K,&W,&H);
for(i=1;i<=W;i++)
{
for(j=1;j<=H;j++)
{
ans+=pm((double)(c((i-1)*H)+c((j-1)*W)+c((W-i)*H)+c(W*(H-j))-c((i-1)*(j-1))-c((i-1)*(H-j))-c((W-i)*(j-1))-c((W-i)*(H-j)))/c(W*H),K);
}
}
printf("%.0lf",W*H-ans);
return 0;
}

【BZOJ2969】矩形粉刷 概率+容斥的更多相关文章

  1. bzoj2969 矩形粉刷 概率期望

    此题在bzoj是权限题,,,所以放另一个oj的链接 题解: 因为期望线性可加,所以可以对每个方格单独考虑贡献.每个方格的贡献就为至少被粉刷过一次的概率×1(每个格子的最大贡献就是1...)每个方格至少 ...

  2. bzoj2969矩形粉刷

    题解: 和前面那个序列的几乎一样 容斥之后变成求不覆盖的 然后再像差分的矩形那样 由于是随便取的所以这里不用处理前缀和直接求也可以 代码: #include <bits/stdc++.h> ...

  3. LOJ 2541 「PKUWC2018」猎人杀——思路+概率+容斥+分治

    题目:https://loj.ac/problem/2541 看了题解才会……有三点很巧妙. 1.分母如果变动,就很不好.所以考虑把操作改成 “已经选过的人仍然按 \( w_i \) 的概率被选,但是 ...

  4. bzoj 2969: 矩形粉刷 概率期望

    题目: 为了庆祝新的一年到来,小M决定要粉刷一个大木板.大木板实际上是一个W*H的方阵.小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形 ...

  5. bzoj2969 矩形粉刷

    学习一波用markdown写题解的姿势QAQ 题意 给你一个w*h的矩形网格,每次随机选择两个点,将以这两个点为顶点的矩形内部的所有小正方形染黑,问染了k次之后期望有多少个黑色格子. 分析 一开始看错 ...

  6. bzoj 2969: 矩形粉刷 概率期望+快速幂

    还是老套路:期望图上的格子数=$\sum$ 每个格子被涂上的期望=$\sum$1-格子不被图上的概率 这样的话就相对好算了. 那么,对于 $(i,j)$ 来说,讨论一下上,下,左,右即可. 然后发现四 ...

  7. jzoj5987. 【WC2019模拟2019.1.4】仙人掌毒题 (树链剖分+概率期望+容斥)

    题面 题解 又一道全场切的题目我连题目都没看懂--细节真多-- 先考虑怎么维护仙人掌.在线可以用LCT,或者像我代码里先离线,并按时间求出一棵最小生成树(或者一个森林),然后树链剖分.如果一条边不是生 ...

  8. UOJ #214 合唱队形 (概率期望计数、DP、Min-Max容斥)

    9个月的心头大恨终于切掉了!!!! 非常好的一道题,不知为何uoj上被点了70个差评. 题目链接: http://uoj.ac/problem/214 题目大意: 请自行阅读. 题解: 官方题解讲得相 ...

  9. LOJ3124 CTS2019 氪金手游 概率、容斥、树形DP

    传送门 D2T3签到题可真是IQ Decrease,概率独立没想到然后就20pts滚粗了 注意题目是先对于所有点rand一个权值\(w\)然后再抽卡. 先考虑给出的关系是一棵外向树的情况.那么我们要求 ...

随机推荐

  1. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何配置虚拟轴 TC3

    在Motion上添加一个NC Task   在Axis上右击添加一个轴,类型为Continuous Axis   在PLC上右击添加新项,然后添加一个PLC项目   在引用中添加TC2_MC2的库引用 ...

  2. 怎样实现广度优先遍历(BFS)

    BFS过程: 一:訪问顶点V,并标记V为已经訪问 二:顶点V入队列 三:假设队列非空.进行运行,否则算法结束 四:出队列取得对头顶点u,假设顶点未被訪问,就訪问该顶点,并标记该顶点为已经訪问 五:查找 ...

  3. Android笔记:invalidate()和postInvalidate() 的区别及使用——刷新ui

    Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中 ...

  4. Objective-C(十七、KVC键值编码及实例说明)——iOS开发基础

    结合之前的学习笔记以及參考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,仅仅是作为參考,以苹果官方文档为准~ 十七.键值编码 K ...

  5. 【Python】self的用法扫盲

    在Python中,我们有两个重要的概念:类与实例 例如:我们在现实生活中人就是一个类,实例就是具体到某一个男人(张三.李四等) 1.类:定义人这个类 class People(object): pas ...

  6. c++ vector容器的使用,序列倒叙reverse(),容器底部插入一个数值push_back()

    问题:程序实现将que[i]添加到que2最后,再将que2反转输出. 例如: 输入 4 1 2 3 4 输出 4 2 1 3 #include<iostream> #include< ...

  7. Python解微分方程

    1.求解常微分方程的步骤: from sympy import * init_printing() #定义符号常量x 与 f(x) g(x).这里的f g还可以用其他字母替换,用于表示函数 x = S ...

  8. MaterialUp 官方client源代码

    Material Design MaterialUp 官方client源代码  https://github.com/jariz/MaterialUp

  9. excel单元格内插入选择项pass、fail、not support等

    1.点击菜单栏的数据—-->>数据验证 2.选择 序列 在 来源 选项中填入Pass,Fail,On Going,Not Support 3.在选中的单元格并在菜单栏选中 新建规则

  10. 使用 %matplotlib inline 出错?

    %matplotlib inline 是一个魔法函数(Magic Functions).官方给出的定义是:IPython有一组预先定义好的所谓的魔法函数(Magic Functions),你可以通过命 ...