Codeforces 1139D(推式子+dp)】的更多相关文章

题目传送 推公式博客传送 推完式子就是去朴素地求就行了Orz const int maxn = 1e5 + 5; const int mod = 1e9 + 7; int m, mu[maxn], vis[maxn], primes[maxn], tot; ll dp[maxn]; vector<int> factor[maxn]; ll ksm(ll a, ll b) { ll ret = 1; for (; b; b >>= 1) { if (b & 1) ret =…
题意是模拟一个循环,一开始有一个空序列,之后每次循环: 1.从1到m中随机选出一个数字添加进去,每个数字被选的概率相同. 2.检查这个序列的gcd是否为1,如果为1则停止,若否则重复1操作直至gcd为1为止. 求这个序列的长度期望. 也是花了一晚上学习了一下期望dp. 设dp[i]表示当前gcd为i,到gcd为1时添加的元素个数期望. 然后就是传统的期望dp模型了: dp[i]=∑p[i→j]dp[j]+w[i→j] 此处w为1,因为每次是添加1个元素 初始化状态dp[1]=0,因为当gcd为1…
http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15655   Accepted: 5556 Description 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘.(每次切割都只能沿着棋盘格子的边进行) 原棋盘上每一格有一个分值,…
发现最近好少写博客啊(其实是各种摆去了) 更一点吧 这道题要求最小化均方差,其实凭直觉来说就是要使每个块分的比较均匀一点,但是单单想到想到这些还是不够的, 首先f[i][j][k][l][t]表示以(i,j)为左上角,(k,l)为右下角,一共分割的t次的矩形的最小xx, 其中xx是某个与最小均方差挂钩的东西, 通常这种要求推式子的题目都要从小的情况推广到所有情况. 这道题也是一样的, 对于一个被分为x1和x2的矩形而言(分割了一次),用X表示平均数, 那么X=权值和/块数, 那么方差为:[(X…
考试T2,考试时想到了40pts解法,即对于求b数组,随便瞎搞一下就oxxk,求a的话,很明显的高斯消元,但考试时不会打+没开double挂成10pts(我真sb),感觉考试策略还是不够成熟,而且感觉考试时间很不够用,一直在瞎yy+code,听讲题DeepinC 12min就打出了T150pts,这不仅是思维上的劣势,而且打代码的速度必须要加上来啊,不然就算有好想法也打不出来(也没啥好想法). 接下来就是正经八本的题解了: 首先我们可以来一波玄学复杂度分析,数据范围1e5,要么$O(nlogn)…
题面传送门 一道推式子题. 首先列出柿子,\(ans=\sum\limits_{T_2}|T_1\cap T_2|·2^{T_1\cap T_2}\) 这个东西没法直接处理,不过注意到有一个柿子 \(f(S)=\sum\limits_{T\subseteq S}\sum\limits_{T'\subseteq T}(-1)^{T-T'}f(T')\),证明可考虑计算每个 \(T'\) 的贡献,由于 \(T'\subseteq T\subseteq S\),\(T\) 必然是 \(T'\) 与 \…
Codeforces 题目传送门 & 洛谷题目传送门 神仙题,只不过感觉有点强行二合一(?). 首先考虑什么样的数组 \(a\) 符合条件,我们考虑一个贪心的思想,我们从前到后遍历,对于每一个 \(a_i\) 如果它已经在前面出现了就不断给它加 \(1\) 直到它没有出现过为止.如果某个 \(a_i\) 超过了 \(n\) 则不符合条件,正确性显然.这样看起来还是有点抽象,我们不妨把它转化成这样的模型:有一架飞机有 \(n\) 个位置,有 \(n\) 个乘客要登飞机,每个乘客都预定了一个位置 \…
题目链接:http://codeforces.com/problemset/problem/676/B 递推,dp(i, j)表示第i层第j个杯子,从第一层开始向下倒,和数塔一样的题.每个杯子1个时间能倒满,从上开始向下倒时间为t,那每个杯子不满的时候对下面的贡献一定是0,所以当dp[i][j]>=1的时候,计数倒满的杯子并且将溢出的酒向下平分. /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ mind! ┛┗┛┗┛┃\○/ ┓┏┓┏┓┃ / ┛┗┛┗┛┃ノ) ┓┏┓┏┓┃ ┛┗…
题意:有n位选手,已知n位选手之间两两获胜的概率,问主角(第一个选手)最终站在擂台上的概率是多少? 思路:一看数据范围肯定是状压DP,不过虽然是概率DP,但是需要倒着推:我们如果正着推式子的话,初始状态是不确定的,因为并不知道一开始把哪个人放在擂台上最后主角获胜的概率最大.所以我们可以假设主角最后获胜的概率是1,然后倒着推.设dp[i][j]表示现在站在擂台上的是i号选手,状态是j,主角获胜的最大概率,其中状态j的k位置是1代表第k - 1个选手还没有被淘汰.所以dp[i][j] = max(d…
sequence 考虑长度<=x的方案数F(x),然后(F(x)-F(x-1))*x贡献到答案里 n平方的做法可以直接DP, 感觉有式子可言, 就推出式子:类似coat,每个长度为i的计算i次. 再容斥下: F是方案数,还是求: 枚举分成的段数,枚举多少个超过i进行容斥: 突破口:有个n-i*k-1,意味着i*k<=n,这样的i和k暴力枚举一共nlogn复杂度! 提出来,考虑干掉j 强行推式子: 处理: (怎么看怎么也看不出什么道理的样子) 来找组合意义吧: 有n-ik个球,我们先从中选出j个…
洛谷题面传送门 hot tea. 首先注意到这个 \(\text{lcm}\) 特别棘手,并且这里的 \(k\) 大得离谱,我们也没办法直接枚举每个质因子的贡献来计算答案.不过考虑到如果我们把这里的 \(\text{lcm}\) 改为 \(\gcd\) 那么一遍莫比乌斯反演即可搞定,因此考虑将这里的 \(\text{lcm}\) 与 \(\gcd\) 联系在一起.那么什么能将这两个东西联系在一起呢?Min-Max 容斥,具体来说,考虑式子 \[\text{lcm}(S)=\prod\limits…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.php?id=3516 题解:http://blog.miskcoo.com/2014/06/bzoj-3157 没管 O(m) 的方法…… UPD(2019.2.20):这样构造的思想大概是想要用 \( f(j) \) (j<=i) 来表示出 \( f(i) \) . 考虑 \( f(m)=\sum…
这是在2016在长沙集训的第三天,一位学长讲解了“前缀和优化”这一技巧,并且他这一方法用的很6,个人觉得很有学习的必要. 这一技巧能使线性递推形DP的速度有着飞跃性的提升,从O(N2)优化到O(N)也不是不可能. 这一技巧的主要思想是使要加和的数据完全储存,并且在下一次计算中直接调用,所以你的对于DP当前项的查询无论是N还是logN,这一方法都能直接解决. 以一道题来作为我们的例子: openjudge9277    (cf 295D跟这题差不多,只是对比于这道题要加个高度,但不用优化) 分享出…
\(\color{#0066ff}{ 题目描述 }\) 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数n和一个整数p,你需要求出(\(\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j))~mod~p\),其中gcd(a,b)表示a与b的最大公约数. \(\color{#0066ff}{输入格式}\) 一行两个整数p.n. \(\color{#0066ff}{输出格式}\) 一行一个整数(\(\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j))~…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.php?id=3516 这篇博客写得太好:http://blog.miskcoo.com/2014/06/bzoj-3157 然而目前之会 \( O(m) \) 的做法: 感觉关键是设计 \( S_{i} \),把它设在 \( m \) 那一维上很妙,毕竟 \( i^{m} \) 不太好做: 然而推式…
要点 题目链接 1e18的数据无法\(O(n)\)的容斥,于是推式子,官解,其中式子有点小错误 不必预处理mu,直接按照素数的个数判断正负即可 #include <bits/stdc++.h> using namespace std; typedef long long ll; int T; ll k, q, n, m; int mark[25]; void pre() { mark[2] = mark[3] = mark[5] = mark[7] = mark[11] = mark[13]…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3240 n 和 m 太过巨大,不难想到应该用费马小定理什么的来缩小范围: 总之就是推式子啦,看博客:https://blog.csdn.net/jiangshibiao/article/details/24594825 还有:https://www.cnblogs.com/iiyiyi/p/5617598.html 其实也蛮好推的,也挺好写,但我调了很久很久啊... 要十分注意取 mod 时…
[Codeforces 1201D]Treasure Hunting(DP) 题面 有一个n*m的方格,方格上有k个宝藏,一个人从(1,1)出发,可以向左或者向右走,但不能向下走.给出q个列,在这些列上可以向上走,其他列不能向上走.可以重复经过同一个点.求从(1,1)出发,经过所有宝藏的最短路径长度 \(n,m,k,q \leq 2 \times 10^5\) 分析 贪心考虑,我们应该按照行一层一层的走.每一行应该从最左的宝藏走到最右的宝藏,或者从最右的宝藏走到最左的宝藏,然后找最近的一个可以向…
题目:https://www.luogu.org/problemnew/show/P1447 1.容斥原理 求 f [ i ] 表示 gcd==i 的对数,先 f [ i ] = (n/i) * (m/i),再考虑减去不合法的对数. 不合法就是不互质,也就是还有别的公因数,即还能再除.直接算会重复,不如限定求出 gcd==j 的对数. 利用更大的 f [ ] 即可.在 n/i 和 m/i 的基础上 gcd==j 的对数就是 f [ i*j ].所以要倒推. #include<iostream>…
LINK:数列求和 每次遇到这种题目都不太会写.但是做法很简单. 终有一天我会成功的. 考虑类似等比数列求和的东西 帽子戏法一下. 设\(f(k)=\sum_{i=1}^ni^ka^i\) 考虑\(af(k)\)这个式子 两式做差. \((a-1)f(k)=n^n\cdot a^{n+1}-a+\sum_{i=2}^n{a^i((i-1)^k-i^k)}\) 右边直接二项式展开 然后 交换求和顺序可得. \((a-1)f(k)=n^k\cdot a^{n+1}-a+\sum_{j=0}^{k-1…
题面传送门 首先根据我们刚学插值时学的理论知识,\(f(i)\) 是关于 \(i\) 的 \(k+1\) 次多项式.而 \(g(x)\) 是 \(f(x)\) 的前缀和,根据有限微积分那一套理论,\(g(x)\) 是关于 \(x\) 的 \(k+2\) 次多项式.注意到此题 \(k\) 数据范围不过 \(10^2\) 级别,因此我们可以考虑把 \(g\) 多项式的系数插出来.我们代入 \(k+3\) 个点值 \(1,2,3,\cdots,k+3\),预处理出 \(\prod\limits_{i=…
洛谷题面传送门 首先推式子: \[\begin{aligned} ans&=\sum\limits_{i=A}^B\sum\limits_{j=1}^i\{\dfrac{i}{j}\} \end{aligned} \] 考虑差分,设 \[f(n)=\sum\limits_{i=1}^n\sum\limits_{j=1}^i\{\dfrac{i}{j}\} \] 那么 \[ans=f(B)-f(A-1) \] 考虑如何计算 \(f(n)\): \[\begin{aligned} f(n)&=…
洛谷题面传送门 u1s1 这个推式子其实挺套路的吧,可惜有一步没推出来看了题解 \[\begin{aligned} res&=\sum\limits_{i=0}^ni^k\dbinom{n}{i}(\dfrac{1}{m})^i(\dfrac{m-1}{m})^{n-i}\\ &=\sum\limits_{i=0}^n\sum\limits_{j=1}^k\begin{Bmatrix}k\\j\end{Bmatrix}i^{\underline{j}}\dbinom{n}{i}(\dfra…
题目传送门 似乎我的解法和官方题解不太一样 纪念自己独立做出来的一道难度 2800 的题. 我们记 \(ans(x)\) 为 \([444...44,x]\) 的答案,显然答案为 \(ans(r)-ans(l)\) 其次我们考虑 \(a_i\) 与 \(a_{i+1}\) 之间有什么联系. 不难发现从 \(a_i\) 变到 \(a_{i+1}\),也就是把 \(a_i\) 末尾一系列 \(7\) 改为 \(4\),再把从右往左数第一个 \(4\) 改为 \(7\). 这样我们就可以枚举末尾 \(…
题目 神题.很多东西都不知道是怎么凑出来的,随意设置几个变量,之间就产生了密切的关系.下次碰到这种题应该还是不会做罢. 令\(E_x\)为最后结束时所有的饼干都在第x个人手中的概率*时间的和.\(ans=\sum E_x\). 令\(C\)为现在所有的饼干都在第x个人手中,要将它们全部转移到第y(\(x \neq y\))个人手中的期望步数.显然对于所有的x,y,C都是相同的. 令\(P_i\)为游戏结束时,所有饼干都在第i人手中的概率. 假设篡改游戏规则,饼干全在第x个人手中时游戏才结束.令此…
题意:有3个杯子,排放一行,刚开始钥匙在中间的杯子,每次操作,将左右两边任意一个杯子进行交换,问n次操作后钥匙在中间杯子的概率 分析:考虑动态规划做法,dp[i]代表i次操作后的,钥匙在中间的概率,由于每次操作独立,dp[i]=(1-dp[i-1)/2; 显然,dp[1]=0; 由刚才那个式子可以得出:dp[i]-1/3=(-1/2)*(dp[i-1]-1/3),这是高中数列知识 然后 设dp[i]=p/q; dp[i]=(2^(n-1)+(-1)^n)/(3*2^(n-1)) 它要求p/q是最…
Codeforces 题目传送门 & 洛谷题目传送门 神仙题 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 首先考虑最朴素的 \(dp\),设 \(dp_{z,i}\) 表示经过 \(z\) 次操作后剩下的数为 \(i\) 的概率,那么显然有 \(dp\) 转移方程 \(dp_{z,i}=\sum\limits_{j\ge i}dp_{z-1,j}·\dfrac{1}{j+1}\). 边界条件 \(dp_{0,i}=p_i\) 直接递推显然不行,考虑优化,我们记 \(F_z(x)…
题目链接 啊啊啊我在干什么啊.怎么这么颓一道题做这么久.. 又记错莫比乌斯反演式子了(╯‵□′)╯︵┻━┻ \(Description\) 给定\(n\).有一个初始为空的集合\(S\).令\(g\)表示S中所有数的\(\gcd\).每次随机选择一个\([1,n]\)中的数加到集合\(S\)中去,直到\(g=1\).求集合\(S\)的期望大小.(原题目描述为数列长度,\(n\)是指\(m\),我自己都看混了=-=) \(n\leq10^5\). \(Solution\) 首先不要想\(f[i][…
Solution 非常巧妙的建立DP方程. 据dalao们说题目明显暗示根号复杂度??(反正我是没看出来 因为每次分的块大小一定不超过$\sqrt n$,要不然直接每个位置开一个块答案都才为$n$. 于是大佬们想到用一个非常巧妙的数组$pos[j]$,表示顺推到当前位置$i$时,以$i$作为右端点,区间出现了$j$个颜色的左端点的位置. 于是每次转移就变成了$dp[i]=min(dp[pos[j]-1]+j*j)$,而不需要把之前全部枚举.$j$的范围就是$<=\sqrt n$的. 所以每次新到…
Codeforces 题目传送门 & 洛谷题目传送门 刚好看到 wjz 在做这题,心想这题之前好像省选前做过,当时觉得是道挺不错的题,为啥没写题解呢?于是就过来补了,由此可见我真是个大鸽子(( 跑题了跑题了-- 这里提供两种解法: Algorithm 1. 注意到"恰好"二字有点蓝瘦,因此套路地想到二项式反演,也就说我们钦定 \(k\) 条边必须与原树中的边重合,其余边可以随便连的方案数,我们假设这些与原树中的边重合的边构成的集合为 \(E'\),那么 \(E'\) 中显然包含…