麻麻我会做*3100的计数了,我出息了

考虑朴素DP我们怎么做呢。

设\(f_{i,l,r}\)为第\(i\)层选择\(l,r\)的依旧不倒的概率。

\(q(l,r)\)表示经历了\(k\)天后,存活下来的区间为\([l,r]\)的概率。

发现其可以转为前缀后缀形式。

即前缀删掉了\(l - 1\)个,后缀删了\(m - r\)个。

而删掉的过程是独立的。

那么删掉\(i\)个的概率为\(d(i)\)

显然有\(d(i) = \binom{i}{k}p^{i} \times ({1 - p})^{k - i}\)

那么有\(q(l,r) = d(l - 1) * d(m - r)\)

那么有\(f_{i,l,r} = q(l,r) * (\sum f_{i - 1,li,ri} ([li,ri] 交于 [l,r]))\)

直接暴力枚举\([li,ri],[l,r]\)这样是\(O(nm^4)\)的

考虑我们并不需要枚举\([li,ri]\),此时我们考虑容斥。

设\(S(i) = \sum f_{i,l,r}\)

那么有不交\([l,r]\)的区间的和为\(S(i - 1) - \sum{f_{i,li,ri}(ri < li)} - \sum{f_{i,li,ri}(li > ri)}\)

那么不妨记录对\(r\)记录前缀和,对\(l\)记录后缀和。

那么设\(pre(i,j) = \sum (f_{i,l,r} (r <= j))\)

设\(fail(i,j) = \sum (f_{i,l,r} (l >= j))\)

那么改写原柿子,\(f_{i,l,r} = (d(l - 1) * d(m - r)) * (S(i - 1) - pre(i - 1,l - 1) - fail(i - 1,r + 1)\)

利用前缀后缀和,则可以做到\(O(nm^2)\)

考虑我们接着优化,因为我们发现,实际上我们并不关心每个\([l,r]\)的答案是什么。

我们只关心以\(l\)开头的,和以\(r\)结尾的dp值的和,以及全局答案。

那么启示我们枚举\(l\),并用某种后缀和计算一次性处理后缀\(r\)。

我们考虑拆项。

\((d(l - 1) * d(m - r)) * (S(i - 1) - pre(i - 1,l - 1) - fail(i - 1,r + 1) = d(l - 1) * S(i - 1) * d(m - r) - pre(i - 1,l - 1) * d(l - 1) * d(m - r) - fail(i - 1,r + 1) * d(m -r) * d(l - 1)\)

那么只要维护\(\sum pre(i - 1,l) * d(l),fail(i - 1,r + 1) * d(m - r),d(l),d(r)\)

即可。

CF708E Student's Camp的更多相关文章

  1. 【CF708E】Student's Camp 组合数+动态规划

    [CF708E]Student's Camp 题意:有一个n*m的网格,每一秒钟,所有左面没有格子的格子会有p的概率消失,右面没有格子的格子也会有p的概率消失,问你t秒钟后,整个网格的上边界和下边界仍 ...

  2. [Codeforces708E]Student's Camp

    Problem 一个n*m块砖的建筑,一共k天,每天风从两边吹,吹掉砖的概率为p,反之为1-p,求最终建筑没有倒塌的可能性(上层与下层有交集且每一层都有砖) Solution 首先,我们可以预处理出p ...

  3. [CodeForces-708E]Student's Camp

    题目大意: 一个n*m的墙,被吹k天风,每块靠边的砖都有p的概率被吹掉. 如果上下两行没有直接相连的地方,我们则认为这一堵墙已经倒塌. 问最后墙不倒塌的概率(模意义). 思路: 动态规划. 用f[i] ...

  4. Student's Camp CodeForces - 708E (dp,前缀和优化)

    大意: $n$行$m$列砖, 白天左侧边界每块砖有$p$概率被摧毁, 晚上右侧边界有$p$概率被摧毁, 求最后上下边界连通的概率. 记${dp}_{i,l,r}$为遍历到第$t$行时, 第$t$行砖块 ...

  5. Codeforces 708E - Student's Camp(前缀和优化 dp)

    Codeforces 题目传送门 & 洛谷题目传送门 神仙 *3100,%%% 首先容易注意到 \(\forall i\in[1,m]\),第 \(i\) 行剩余的砖块一定构成一个区间,设其为 ...

  6. Codeforces Round #588 (Div. 2) D. Marcin and Training Camp(思维)

    链接: https://codeforces.com/contest/1230/problem/D 题意: Marcin is a coach in his university. There are ...

  7. java.io.NotSerializableException: test.io.file.Student

    java.io.NotSerializableException: test.io.file.Student    at java.io.ObjectOutputStream.writeObject0 ...

  8. 使用java反射机制编写Student类并保存

    定义Student类 package org; public class Student { private String _name = null; ; ; public Student() { } ...

  9. 参加MVP OpenDay 和2015 MVP Community Camp社区大课堂

    微软MVP Openday 1月30日在北京召开,到时全国上百位 MVP 专家将齐聚北京.当然还有亚太的其他国家地区的MVP 也会来北京,1月31日微软 MVP 项目组主办的年度微软技术社区分享大会- ...

随机推荐

  1. TypeError: module() takes at most 2 arguments (3 given)

    1. 错误提示 2. 代码 class Parent: """定义父类""" def __init__(self): print(" ...

  2. TreeSet和TreeMap中“相等”元素可能并不相等

    TreeSet和TreeMap元素之间比较大小是借助Comparator对象的compare方法. 但有些时候,即便compare()返回0也不意味着这两个元素直观上相同. 比如元素是二元组[a,b] ...

  3. Idea Maven auto Import

  4. 谜语人队 Scrum Meeting 博客汇总

    项目 内容 课程主页 2021春季软件工程(罗杰 任健) 作业要求地址 Alpha阶段:团队项目-每日例会报告Beta阶段:团队项目-每日例会报告 团队博客主页 谜语人队 一.Alpha阶段 第一次例 ...

  5. 第五次Alpha Scrum Meeting

    本次会议为Alpha阶段第五次Scrum Meeting会议 会议概要 会议时间:2021年4月30日 会议地点:线上会议 会议时长:15min 会议内容简介:本次会议以主要围绕卡牌对接的诸多问题与对 ...

  6. Scrum Meeting 5.26

    Scrum Meeting Beta 1 日期:2021年5月23日&2021年5月24日 会议主要内容概述:汇报工作 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作 ...

  7. 【二食堂】Beta - Scrum Meeting 10

    Scrum Meeting 10 例会时间:5.25 18:30~18:50 进度情况 组员 当前进度 今日任务 李健 1. 继续文本导入.保存部分的工作issue 2. 完成了技术博客 1. 继续文 ...

  8. 极简实用的Asp.NetCore框架再新增商城模块

    概述 关于这个框架的背景,在前面我已经交代过了.不清楚的可以查看这个链接 1.极简实用的Asp.NetCore模块化框架决定免费开源了 2.极简实用的Asp.NetCore模块化框架新增CMS模块 算 ...

  9. 零基础入门stm32基本定时器详解

    一.基本定时器介绍 在STM32中,基本定时器有TIM6.TIM7等.基本定时器主要包含时基单元,提供16位的计数,能计数0~65535.基本定时器除了计数功能以外,还能输出给DAC模块一个TRGO信 ...

  10. 洛谷 P3147 [USACO16OPEN]262144 P

    链接: P3147 P3146双倍经验 前言: 今天发现的一道很有意思的DP题 分析: 第一眼以为是区间DP,于是设f[i][j]为从第i个数到第j个数可以合出的最大值,但思考后发现并不能简单合并,并 ...