首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
并不对劲的bzoj5340:loj2552:uoj399:p4564: [Ctsc2018]假面
】的更多相关文章
并不对劲的bzoj5340:loj2552:uoj399:p4564: [Ctsc2018]假面
题目大意 有\(n\)(\(n\leq200\))个非负整数\(m_1,m_2,...,m_n\)(\(\forall i\in[1,n],m_i\leq100\)),有\(q\)(\(q\leq2*10^5\))个操作,每个操作是以下两种之一: (1)给出位置\(x\),概率\(q\),若\(m_x\)大于0,则有\(q\)的概率将\(m_x\)减一:若\(m_x\)为0,则不进行任何操作 (2)给出一个数\(k\)和\(k\)个不重复的位置\(d_1,d_2,...d_k\),在\(m_{d…
洛谷 P4564 [CTSC2018]假面(期望+dp)
题目传送门 题意: 有 \(n\) 个怪物,第 \(i\) 个怪物初始血量为 \(m_i\).有 \(Q\) 次操作: 0 x u v,有 \(p=\frac{u}{v}\) 的概率令 \(m_x\) 减 \(1\),另外 \(1-p\) 的概率啥也不干.如果 \(m_x=0\),那么这个操作无效. 1 k x[1] x[2] ... x[k],在 \(x_1,x_2,\dots,x_k\) 这 \(k\) 个怪物中的血量不为 \(0\) 的怪物中,随机选择一个怪物.问对于 \(i=1,2,\d…
BZOJ5340: [Ctsc2018]假面
BZOJ5340: [Ctsc2018]假面 https://lydsy.com/JudgeOnline/problem.php?id=5340 分析: 背包,只需要求\(g_{i,j}\)表示强制活第\(i\)个人一共活了\(j\)个人的概率,\(f_j\)表示活了\(j\)个人的概率 . 这个东西有\(g_{i,j}=f_{j}-g_{i,j+1}\times p_i/(1-p_i)\) 转移即可,有小细节. \(p_i\)可能为\(0\)使得没有逆元,不过此时答案一定为\(0\). 在计算…
BZOJ5340 & 洛谷4564 & LOJ2552:[CTSC2018]假面——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5340 https://www.luogu.org/problemnew/show/P4564 https://loj.ac/problem/2552 (这送分题我写不出来……我退役吧) 也懒得写题解了,看https://kelin.blog.luogu.org/solution-p4564吧. 什么你说op=1的你没听懂,那你可能和我一样了(握手(大雾. 那么遵从原题解的命名,f[u][i]表示…
BZOJ5340 [Ctsc2018]假面 【概率dp】
题目链接 BZOJ5340 题解 我们能很容易维护每个人当前各种血量的概率 设\(p[u][i]\)表示\(u\)号人血量为\(i\)的概率 每次攻击的时候,讨论一下击中不击中即可转移 是\(O(Qm^2)\)的 现在考虑一下结界 如果我们设\(f[u][i]\)表示除了\(u\)还存活\(i\)个人的概率 那么 \[ans[u] = (1 - p[u][0]) \sum\limits_{i = 0}^{k - 1} \frac{f[u][i]}{i + 1}\] 所以我们只需计算\(f[u][…
BZOJ5340: [Ctsc2018]假面【概率+期望】【思维】
LINK 思路 首先考虑减血,直接一个dp做过去,这个部分分不难拿 然后是\(op=1\)的部分 首先因为要知道每个人被打的概率,所以需要算出这个人活着的时候有多少个人活着时概率是什么 那么用\(g_{i,j}\)表示第i个人还活着的时候还有其他的j个人活着的概率 这个东西暴力DP是\(n^3\)的 那么可以考虑优化,用\(f_{i,j}\)表示前i个人有j个人活着的概率 有转移:\(f_{i,j}=f_{i-1,j-1}*(1-p_i)+f_{i-1,j}*p_i\),其中\(p_i\)表示第…
并不对劲的bzoj5341:loj2553:uoj400:p4565:[Ctsc2018]暴力写挂
题目大意 有两棵\(n\)(\(n\leq366666\))个节点的树,\(T\)和\(T'\),有边权 \(dep(i)\)表示在\(T\)中\(i\)号点到\(1\)号点的距离,\(dep'(i)\)表示在\(T'\)中\(i\)号点到\(1\)号点的距离 \(lca(i,j)\)表示在\(T\)中\(i\)号点到\(j\)号点的简单路径上到\(1\)号点边数最少的点,\(lca'(i,j)\)表示在\(T'\)中\(i\)号点到\(j\)号点的简单路径上到\(1\)号点边数最少的点 求\(…
并不对劲的bzoj5342:loj2554:uoj401:p4566: [Ctsc2018]青蕈领主
题目大意 \(T\)(\(T\leq100\))组询问 有\(1\)到\(n\)(\(n\leq50000\))这\(n\)个整数组成的一个排列 定义这个排列的一个子区间是"连续"的,当且仅当这个子区间在位置上和在值域上都是连续的 分别给出这个排列以每个位置\(i\)为右端点的最长"连续"子区间的长度\(l_i\),问有多少个排列满足这个条件 题解 发现这些最长"连续"子区间一定是相互包含或相离的,不会相交 用反证法:假设有\(x<y\),…
UOJ399 CTSC2018 假面 期望、DP
传送门 \(Q \leq 200000 , C \leq 1000 , m_i \leq 100\)-- 先考虑如何维护最后一次操作时所有人的血量期望.不难发现我们需要的复杂度是\(O(Qm_i)\)的,所以不难想到一个Easy的DP:设\(f_{i,j}\)表示当前操作结束后第\(i\)个人血量为\(j\)的概率,转移考虑技能是否命中. 然后考虑结界的释放.注意到结界是否释放到每一个人只和TA和其他人是否存活有关,而和血量无关.所以考虑枚举每一个人,在TA存活的前提下再设一个DP:\(g_{i…
【loj2552】【CTSC2018】假面
题目 有\(n\)个敌方单位,初始生命值分别为\(m_1,\cdots,m_n\) : 假面可以释放\(Q\)个技能: $op = 0 , id , u , v $ 表示对\(id\)号敌人有\(\frac{u}{v}\)的概率造成\(1\)点伤害: $op = 1 , k , a_1,\cdots a_k $ 表示在这些位置中生命值为正的位置里随机选择一个位置释放结界: 你需要对每个\(op=1\),输出\(a_1,\cdots, \ a_k\)中结界的期望(\(op=1\)操作最…