Codeforces 494C - Helping People】的更多相关文章

题意 有一个长度为 \(n\) 的数列 \(a\),有 \(m\) 个 操作,每个操作是给 \(a[l_i,r_i]\) 中的数都加一,一个操作有 \(p_i\) 的概率执行(否则不执行).一个性质是任意两个区间不相交或完全包含(可重叠).问执行完所有操作后 \(a\) 中最大值的期望. \(n\le 10^5,m\le 5000,a\le 10^9\) . 分析 想象一下多个不相交或完全包含的区间,他们的结构其实是一棵树.外层为父亲,内层为儿子. 要计算的是最大值的期望,而这个最大值是由多个操…
[Codeforces-div.1 494C] Helping People 试题分析 不难注意到题目所给的性质是一棵树,所以肯定是树形dp. 那么期望没有办法合并,我们还有一种最笨的方法就是求出概率然后直接乘上权值累加. 然后也不难得出朴素的dp:\(f_{i,j}\)表示区间\(i\),最大值为\(mx_i+j\)的概率. 也可以很轻松的写出一个\(O(nm^2)\)的dp,还需优化. 发现转移其中一维是一个前缀和乘积的形式,那么我们改变一下状态:\(f_{i,j}\)表示区间\(i\),最…
Helping Hiasat 题解: 如果我们把连续的2出现的人都相互连边的话, 题目就是问最大独立集的答案是多少. 求最大独立集可以将图变成反图, 然后求最大团. 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout); #…
Codeforces 1105 E 题意:给你m个事件,每个事件可能是以下两种之一: \(1\),代表此时可以更改用户名 \(2\) \(s\),代表\(s\)来查看是否用户名与其名字相符 一共有\(m\leq40\)个人,如果一个人每次看到用户名都与其名字相符,则他会开心,问怎么更改用户名使得开心的人最多? 思路:看每次\(1​\)后面连续的\(2​\),把其中的人两两连边,题目转化成求此图的最大独立集.看到\(m​\)的范围较小,且不能直接做,那么考虑折半搜索.把人分成前一半和后一半,枚举出…
E - Helping Hiasat 裸的最大团,写了一种 2 ^ (m / 2)  * (m / 2)的复杂度的壮压, 应该还有更好的方法. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII p…
CF 282 C Helping People 题解 [原题] time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Malek is a rich man. He also is very generous. That's why he decided to split his money between poor people.…
题目链接:https://codeforces.com/contest/1105/problem/E 题意:有 n 个事件,op = 1 表示我可以修改昵称,op = 2 表示一个名为 s_i 的朋友查询我当前的名字.一个朋友是高兴的当且仅当他每次查询我的名字都为 s_i,保证每个朋友至少查询一次我的名字,问最多可以有多少个朋友高兴. 题解:在我两次修改昵称之间,若出现不同的朋友,则他们是互斥的,可以在他们之间连一条边,然后求图的最大独立集,而原图的最大独立集等于补图的最大团,所以求补图的最大团…
\(\mathcal{Description}\)   Link.   给定序列 \(\{a_n\}\) 和 \(m\) 个操作,第 \(i\) 个操作有 \(p_i\) 的概率将 \([l_i,r_i]\) 内的元素 \(+1\).且保证任意两个区间要么不交,要么有包含关系.求所有操作完成后序列最大值的期望.   \(n\le10^5\),\(m\le5000\). \(\mathcal{Solution}\)   首先应当知道,\(E(\max\{a_i\})\not=\max\{E(a_i…
题目链接 题目大意: 给你一个有n个元素的数组a,你可以通过一下三种操作使数组的每一个值都为0: 选择一个下标i,然后让a[1],a[2]....a[ i ] 都减一; 选择一个下标i,然后让a[i],a[i+1]....a[n] 都减一; 让每一个值都加一 问让整个数组的值都为0的最小操作数. 题目思路: 我们观察所有操作,发现其都是让一个连续区间都减去一个相同的数,或者加上一个相同的数,这与差分十分相似,所以我们将其转化为差分操作: 1.a[1]-1,a[i+1]+1 2.a[i]-1 3.…
Adieu l'ami. Koyomi is helping Oshino, an acquaintance of his, to take care of an open space around the abandoned Eikou Cram School building, Oshino's makeshift residence. The space is represented by a rectangular grid of n × m cells, arranged into n…