08 2017 档案
摘要:题意:某人掷骰子,数轴上前进相应的步数,会有瞬移的情况,求从0到N所需要的期望投掷次数。 解题关键:期望dp的套路解法,一个状态可以转化为6个状态,则该状态的期望,可以由6个状态转化而来。再加上两个状态的消耗即可。
阅读全文
摘要:题意:迷宫是一个R*C的布局,每个格子中给出停留在原地,往右走一个,往下走一格的概率,起点在(1,1),终点在(R,C),每走一格消耗两点能量,求出最后所需要的能量期望。 解题关键:概率dp反向求期望,令$dp[i][j]$表示从该位置走到终点的期望能量,$a$为留在该点的位置,$b$为向下走的概率
阅读全文
摘要:题意:一个软件有s个子系统,会产生n种bug,某人一天发现一个bug,这个bug属于一个子系统,属于一个分类,每个bug属于某个子系统的概率是1/s,属于某种分类的概率是1/n,问发现n种bug,每个子系统都发现bug的天数的期望。 解题关键:dp求期望入门题,一直说概率正推,期望逆推,为什么呢?今
阅读全文
摘要:解题关键:最短路模板一直没整理过,这里整理了一下spfa+链式前向星建图的最短路模板,以后网络赛省的打了。 spfa算法的关键就是松弛操作,只有进行松弛操作,其后的点距离才可能被更新。
阅读全文
摘要:题意:给出一棵树,每个点有权值,每次操作可以对一个联通子集中的点全部加1,或者全部减1,且每次操作必须包含点1,问最少通过多少次操作可以让整棵树每个点的权值变为0. 解题关键:自底向上dp,记录up,down两个数组 代表u被加的次数和减的次数,以1为根,则 $up[u] = \max (up[v]
阅读全文
摘要:解题关键:主要就是概率的推导以及至少的转化,至少的转化是需要有前提条件的。 转移方程:$dp[i][j][k] = dp[i][j - 1][k - 1]*p + dp[i][j - 1][k]*(1 - p)$ 其中$dp[i][j][k]$表示第$i$个人前j题恰好ac了$k$题.然后用前缀和处
阅读全文
摘要:题意:n支队伍两两进行比赛,求最有可能获得冠军的队伍。 解题关键:概率dp,转移方程:$dp[i][j] + = dp[i][j]*dp[i][k]*p[j][k]$表示第$i$回合$j$获胜的概率,原理为全概率公式。 如何判断相邻,通过位运算。 概率dp的过程就像是模拟的过程 复杂度:$O(n{2
阅读全文
摘要:题意:在一维空间上存在一些雷,求安全通过的概率。其中人有$p$的概率前进一步,$1-p$的概率前进两步。 解题关键:若不考虑雷,则有转移方程:$dp[i] = p*dp[i - 1] + (1 - p)*dp[i - 2]$ 由于雷的数量很少,所以可以以雷为界,将区域分开,在每个区域中,通过该段的概
阅读全文
摘要:题意: $\sum\limits_{\begin{array}{*{20}{c}}{a < = x < = b}\\{c < = y < = d}\end{array}} {\gcd (x,y) = = k} $ 解题关键: 现令$f(i)$表示有多少对${(x,y)}$满足 ${\gcd (x,y
阅读全文
摘要:解题关键:由容斥原理得,num=1的倍数的数量−一个质数平方数(9,25,49...)的倍数的数量+两个质数的积平方数(36,100,225...)的数量−三个质数...... 这道题用莫比乌斯的正向函数表达式理解较容易 此题让自己理解了只要与倍数相关即可用mobius。 此题还需要注意的一点,是平
阅读全文
摘要:解题关键:dfs序将树映射到区间,然后主席树求区间第k小,为模板题。
阅读全文
摘要:题意:求两个排列的最长公共子序列n<=1e5 解题关键:转化为LIS。 最长公共子序列 的 nlogn 的算法本质是 将该问题转化成 最长增序列(LIS),因为 LIS 可以用nlogn实现,所以求LCS的时间复杂度降低为 nlogn。 1. 转化:将LCS问题转化成LIS问题。 假设有两个序列 s
阅读全文
摘要:解题关键:1001=7*11*13,模数非常小,直接暴力lucas。递归次数几乎为很小的常数。最后用中国剩余定理组合一下即可。 模数很小时,一定记住lucas定理的作用 http://acm.xidian.edu.cn/problem.php?id=1227
阅读全文
摘要:解题关键:了解转移方程即可。 转移方程:$dp[l][r] = dp[l + 1][r - 1] + 2$ 若该区间左右端点成功匹配。然后对区间内的子区间取max即可。 nyoj15:求需要添加的最少的括号数量,用总数减去$dp[0][s.size()-1]$即可。
阅读全文
摘要:题意:有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。 解题关键:区间dp,首先枚举区间,再枚举分割点,区间由小到大更新。 转移方程:$dp[l][r]
阅读全文
摘要:题意:给出一棵带权无向树,以及给定节点1,总约束为$m$,找出切断与所有叶子节点联系每条边所需要的最小价值约束。 解题关键:二分答案,转化为判定性问题,然后用树形dp验证答案即可。 dp数组需要开到ll,如果用设inf的解法。
阅读全文
摘要:题意:给出一棵树,带有向边,找出某个点到达所有点需要反转的最少的边。 解题关键:和求树的直径的思路差不多,将求(父树-子树)的最大值改为求特定值。依然是两次dfs,套路解法。 对树形dp的理解:树形dp其实就是将树进行暴力搜索,只是需要理解状态的概念。那些状态已经完成,需要从底还是从顶开始搜索。
阅读全文
摘要:题意:切掉树上的某条边,使分开的两棵树上各点的权值和差值最小。 与hdu2196不同的是,此题是点权,其他无太大差别,注意数据范围。 先求出每个节点的子树权值和,然后自底向上dp即可。取$\min (abs(sum - 2*dp[u]))$
阅读全文
摘要:题意:求树的重心(删除该点后子树最大的最小) 解题关键:想树的结构,删去某个点后只剩下它的子树和原树-此树所形成的数,然后第一次dp求每个子树的节点个数,第二次dp求解答案即可。 此题一开始一直T,后来加了输入挂才过,第一次见卡cin+关同步的题目。 用scanf试了一下,也可以过,0.5s,看来c
阅读全文
摘要:题意:求树中距离每个节点的最大距离。 解题关键:两次dfs,第一次从下向上dp求出每个节点子树中距离其的最大距离和不在经过最大距离上的子节点上的次大距离(后序遍历),第二次从上而下dp求出其从父节点过来的最大距离(先序遍历). 如果vi不是u最长距离经过的节点,$d[{v_i}][2] = dist
阅读全文
摘要:题意:选出不含直接上下司关系的最大价值。 解题关键:树形dp入门题,注意怎么找出根节点,运用了并查集的思想。 转移方程:dp[i][1]+=dp[j][0];/i是j的子树 dp[i][0]+=max(dp[j][0],dp[j][1]);
阅读全文
摘要:整理一下,按边存储的结构都可以用此存储。 其中edge[i].to表示第i条边的终点,edge[i].next表示与第i条边同起点的下一条边的存储位置,edge[i].w为边权值. 另外还有一个数组head[],它是用来表示以i为起点的第一条边存储的位置,实际上你会发现这里的第一条边存储的位置其实
阅读全文
摘要:计算几何、网络流、数据结构加强基础知识的学习 bzoj3456多项式求逆,卷积做法 求ln做法 bzoj3643 phi的反函数 bzoj1799 莫队、分块算法的熟练 dag的拓扑序 tsp问题自己再写一遍 scc模板的inst数组是否有必要呢 floyd判圈算法 遇到一道题不要急着看题解,要先经
阅读全文
摘要:题意:一共$m$天,$n$门课程,每门课程花费$i$天得到$j$的价值,求最后获得的最大价值 解题关键:分组背包练习,注意循环的顺序不能颠倒 伪代码: $for$ 所有的组$k$ $for{\rm{ }}v = V..0$ $for$ 所有的$i$属于组$k$ $f[v] = \max (f[v],
阅读全文
摘要:解题关键:二维约束条件,只需加一维状态即可。 转移方程:$f[j][k] = \max (f[j][k],f[j - w[i]][k - 1] + v[i])$
阅读全文
摘要:题意:给定一个数列${a_i}$,若子序列长度为$k$,最大公约数为$gcd$,定义子序列的权值为$k*\gcd (\gcd > 1)$。求所有子序列的权值和。 答案对10^9+7取模。 解题关键:容斥原理求序列中各$gcd$的个数,亦可用莫比乌斯函数。 逆序求的话,前面直接减后面的个数,在后面一项
阅读全文
摘要:题意:(0,0)走到(k,0),每一部分有一条线段作为上界,求方案数。 解题关键:dp+矩阵快速幂,盗个图,注意ll 关于那条语句为什么不加也可以,因为我的矩阵C,就是因为多传了了len的原因,其他位置都是0,所以不需要加
阅读全文
摘要:题意:不可重叠最长重复子串 有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题。“主题”是整个音符序列的一个子串,它需要满足如下条件: 1.长度至少为5个音符。(只需最后加个判定即可,无影响) 2.在乐曲中重复出现。(可能经过转
阅读全文
摘要:解题关键: n的环排列的个数与n-1个元素的排列的个数相等。 首先可以肯定,无论从最左边还是从最右边看,最高的那个楼一定是可以看到的,从这里入手。 假设最高的楼的位置固定,最高楼的编号为n,那么我们为了满足条件,可以在楼n的左边分x-1组,右边分y-1组,且用每组最高的那个元素代表这一组,那么楼n的
阅读全文
摘要:解题关键:观察发现答案可进行二分,二分答案,将大于等于答案的数记为1,小于的记为0,从而可以使用线段树的区间赋值和区间求和解决。 复杂度:$O(nlog^2n)$
阅读全文
摘要:题意:要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。 解题关键:注意标志的作用,注意虽然存的是索引,但是线段树的范围是天数的范围,也就是线段树是依据天数建的树 复杂度:$
阅读全文
摘要:题目链接:http://www.tyvj.cn/p/1860 解题关键:模板题。贴一个代码详解 http://www.cnblogs.com/staginner/archive/2012/02/02/2335600.html 注意:一个字符串中的所有子串都必然是它的后缀的前缀 da算法,必须保证字符
阅读全文
摘要:解题关键:rmq模板题,可以用st表,亦可用线段树等数据结构 log10和log2都可,这里用到了对数的换底公式 类似于区间dp,用到了倍增的思想 $F[i][j] = \min (F[i][j - 1],F[i + 1 < < (j - 1)][j - 1])$
阅读全文
摘要:解题关键:莫队最重要的是区间之间以$O(1)$的复杂度进行转化,由于电脑原因,后续补上公式推导。
阅读全文
摘要:hdu1007 http://acm.hdu.edu.cn/showproblem.php?pid=1007 解题关键:分治算法求解,注意学习分治算法的写法 树上分治和数列分治待补。
阅读全文
摘要:hdu1166,点修改,区间查询sum形式,最简单形式的线段树 1 #include<cstdlib> 2 #include<cstring> 3 #include<algorithm> 4 #include<cstdio> 5 #include<cmath> 6 #include<iostream
阅读全文
摘要:解题关键:离线求区间第k小,主席树的经典裸题; 对主席树的理解:主席树维护的是一段序列中某个数字出现的次数,所以需要预先离散化,最好使用vector的erase和unique函数,很方便;如果求整段序列的第k小,我们会想到离散化二分和线段树的做法, 而主席树只是保存了序列的前缀和,排序之后,对序列的
阅读全文
摘要:#include #include #include #include #include #include #include using namespace std; typedef long long ll; #define pi acos(-1.0) const int mod=1e9+7; const int maxn=1000007; bool is_prime[maxn]; in...
阅读全文

浙公网安备 33010602011771号