bzoj2698 染色

2024-05-11 23:48
文章标签 染色 bzoj2698

本文主要是介绍bzoj2698 染色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:bzoj2698
题目大意:
有N个格子排成一排,初始时所有格子都是黑色的。现在进行M次染色操作,每次随机选取一段长度在[S,T]之间的连续段染成白色。随机选取就是所有合法的染色方案都是等概率的。求最后被染成白色的格子个数的期望值。

题解:
期望、概率
求最后被染成白色的格子个数的期望值,其实就是每个格子被染成白色的期望的和。
因为一个格子只要有一次被染成白色了就是白的了,所以一个格子被染成白色的概率就是1-没被染过的概率。
一次染色中总的染色方案为sum,第i个格子没被染到的方案数为num
所以有 ans=ni=11(numisum)m

要想什么正难则反,一开始在弄有多少种方案染到第i个格子,好麻烦。
但是如果是求有多少种方案没有染到第i个格子就简单很多,那么就可以在左边随便染,右边随便了,只是要求不跨过第i格而已。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;double qpow(double x,int t)
{double ret=1.0;while (t){if (t&1) ret*=x;x*=x;t>>=1;}return ret;
}
double getsum(int len,double s,double t)
//用长度为[s,t]的连续段染长度为len的区间的方案数
{double ls=(double)len;if (len<s) return 0;if (len<t) return (ls-s+2)*(ls-s+1)/2.0;return (ls*2-s-t+2)*(t-s+1)/2.0;
}
int main()
{int m,i,n;double s,t,ans=0,num;scanf("%d%d%lf%lf",&n,&m,&s,&t);num=(n*2-s-t+2)*(t-s+1)/2.0;for (i=1;i*2<=n+1;i++){double kk=(getsum(i-1,s,t)+getsum(n-i,s,t))/num;if (i*2<n+1) ans+=2-2*qpow(kk,m);else ans+=1-qpow(kk,m);}printf("%.3lf\n",ans);return 0;
}

这篇关于bzoj2698 染色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981003

相关文章

【HDU】5574 Colorful Tree【子树染色,询问子树颜色数——线段树+bit+lca+set】

题目链接:【HDU】5574 Colorful Tree 题目大意:对一个子树染色,询问一个子树的颜色数。 题目分析: set set维护每种颜色所在的 dfs dfs序区间,修改均摊 nlogn nlogn。 #include <bits/stdc++.h>using namespace std ;typedef long long LL ;typedef pair < int , i

HDU4185Oil Skimming(行列匹配||棋盘匹配||黑白染色||1X2矩形覆盖)

题意:找出最多的形如“##”横着竖着都可以,明显的1X2矩形覆盖,直接按坐标和的奇偶来分为二分图。 #include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stac

关于二分图染色的几点总结

二分图染色的概念: 二分图染色是一种用来判断给定图(有向图或无向图)是否是二分图的算法。在图上不断进行BFS或DFS,并在运行过程中不断对结点进行"染色","染色"保证相邻结点的颜色必然不同。如果无法保证,则这个图就是二分图. 二分图染色时的注意事项: 二分图染色的题常会结合DP进行考察,因此往往要注意推理状态转移方程二分图染色类型的题目也有可能结合类似DAG上的推论这种图上定理进行考察,这

三色染色问题

三色染色问题 有排成一行的n个方格,用红、黄、绿三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色。 求全部的满足要求的涂法种数。 代码 #include<iostream>#include<cstdio>using namespace std;long long dp[100]={0,3,6,6};int main(){int n;scanf("%d"

人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展|顶刊速递·24-06-23

小罗碎碎念 本期推文主题:人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展 这一期的推文是我发自内心觉得为数不多,特别宝贵的一篇推文,原因很简单——可参考的文献相对较少&方向非常具有研究意义&现在不卷。 数字病理方向的老师/同学应该清楚,不同中心提供的切片,染色方案是存在差异的,并且还存在各种质量问题,所以我们在数据预处理的时候,通常会先对切片的质量执行一遍筛选,然后再进行染

BZOJ 1006 神奇的国度 弦图最小染色 MCS算法

给定一个弦图,求最小染色 参考cdq的弦图与区间图论文 http://wenku.baidu.com/view/07f4be196c175f0e7cd13784.html http://tieba.baidu.com/p/2891159900 http://www.cnblogs.com/zhj5chengfeng/p/3279649.html

NOIP2010 关押罪犯 (二分答案+二分图染色)

题意:有两个监狱,N个犯人,M对关系,每对关系描述一对犯人如果在一个监狱将会产生一个冲突值。任意安排犯人的分配,使得产生的最大冲突值最小。 题解:最大值最小,先考虑二分。二分中最重要的环节就是判定猜测值可行性以及保证答案单调性。可行性判定:对于一个猜测的最大冲突值,判定时就要保证所有大于这个冲突值的两个人不能在一个监狱。只需要将需要满足不在同一监狱的两个人连上边,如果最后可以染成二分图,就存在分

二分图染色,CF1949I. Disks

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1949I - Codeforces 二、解题报告 1、思路分析 一种错误的判

算法学习笔记(二分图染色)

首先我们需要明确什么是二分图:如果无向图 G = ( V , E ) G = (V, E) G=(V,E)的所有点可以分为两个集合 V 1 、 V 2 V_1、V_2 V1​、V2​,所有的边都在 V 1 V_1 V1​和 V 2 V_2 V2​之间,而 V 1 V_1 V1​或 V 2 V_2 V2​的内部没有边,称 G G G是一个二分图。 直接说结论:如果一个图是二分图,那么它一定没有边数

HYSBZ - 2243染色——树链剖分+线段树建树技巧

【题目描述】 HYSBZ - 2243染色 【题目分析】 我一直没有看清楚题,以为求的是路径上出现颜色的种类,然后就写了一个区间染色的线段树进行维护,过样例的时候才发现题读错了,人家要求的是路径上出现的颜色段,所以颜色的种类不重要,重要的是每一段每一段。理所当然,我们应该用线段树维护所在区间有多少段。但是左右区间上传的时候如果边界颜色相同(左节点的右边界和右节点的左边界),那么区间个数应该减一。