●洛谷P3687 [ZJOI2017]仙人掌】的更多相关文章

题链: https://www.luogu.org/problemnew/show/P3687题解: 计数DP,树形DP. (首先对于这个图来说,如果初始就不是仙人掌,那么就直接输出0) 然后由于本来图中就存在于环中的边,不可能再次被包含, 所以图中的环就把这个图分为的若干颗树. 那么答案就是分别求出每颗树的方案数并相乘. 现在问题变为了求:把一颗树通过连边使得仍然是仙人掌的方案数. 定义如下3个数组: f[u]:表示u这颗子树中没有一条从u到子树内某个的节点的路径可以向其它子树连边的方案数.…
P4244 [SHOI2008]仙人掌图 II 题目背景 题目这个II是和SHOI2006的仙人掌图区分的,bzoj没有. 但是实际上还是和bzoj1023是一个题目的. 题目描述 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus).所谓简单回路就是指在图上不重复经过任何一个顶点的回路.显然,仙人图上的每条边,或者是这张仙人图的桥(bridge),或者在且仅在一个简单回路里,两者必居其一.定义在图上两点之间的距离为这两点…
传送门 首先不考虑带环的仙人掌,如果只是一棵普通的树,可以通过dp求每棵子树中的最长链和次长链求树的直径. 那么如果dfs的时候遇到了环,应该用环上的两点挂着的最长链加上两点间的距离来更新树的直径,并用环上一点的最长链加上它到环的根的距离来更新环的根的最长链. 选择环上两点来更新直径,为了考虑到所有选择,将环断开并拷贝一份新的衔接在后面,形成长为二倍的串.用dp[i]+dp[j]+j-i(i.j为在串中位置)更新直径,单调队列维护单调递减的dp[i]-i,并且如果当前点和队头的距离超过半个环就队…
题链: https://www.luogu.org/problemnew/show/P3688题解: 二维线段树. 先不看询问时l=1的特殊情况. 对于一个询问(l,r),如果要让错误的程序得到正确答案, 显然应该满足l-1位置的值=r位置的值(或者说两个位置的异或值为0). 那么定义二元组函数f(x,y)表示x位置与y位置的异或值为0的概率. 如果可以维护出所有这样的二元组的函数值, 对于一个询问的话,就可以很方便的回答了. 现在看看,怎样维护这样的二元组的函数值. 假设现在给出了一个操作1:…
传送门 显然求出每一个环的大小. Ans=∏i(siz[i]+1)Ans=\prod_i(siz[i]+1)Ans=∏i​(siz[i]+1) 注意用高精度存答案. 代码: #include<bits/stdc++.h> using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar(); while(isdigit(ch))ans=(ans<<3…
题面 传送门 题解 为什么大佬们全都是乱搞的--莫非这就是传说中的暴力能进队,乱搞能AC-- 似乎有位大佬能有纯暴力+玄学优化\(AC\)(不算上\(uoj\)的\(Hack\)数据的话--这要是放到考场上就是切题的啊--) 整体思路呢,就是我们开一个线段树,线段树上的每一个区间维护"以这个区间右端点为结尾有可能成为后缀最小值的位置" 怎么合并呢 首先右儿子的所有节点都是可以加入的,因为它们后面也没有加上什么东西 然后对于左儿子来说它们相当于后面被整体怼了一个串,我们就要考虑它们是不是…
题面传送门 首先学过树状数组的应该都知道,将树状数组方向写反等价于前缀和 \(\to\) 后缀和,因此题目中伪代码的区间求和实质上是 \(sum[l-1...n]-sum[r...n]=sum[l-1...r-1]\),我们要求 \(sum[l...r]=sum[l-1...r-1]\) 的概率,等价于求 \(a_{l-1}=a_r\) 的概率. 因此我们可将题目转化为,每次从 \([l,r]\) 中随机选择一个数将其状态翻转,并询问 \(a_x=a_y\) 的概率. 这个可以通过二维线段树解决…
传送门(uoj) 传送门(洛谷) 这里是题解以及我的卡常数历程 话说后面那几组数据莫不是lxl出的这么毒 首先不难发现这个东西把查询前缀和变成了查询后缀和,结果就是查了\([l-1,r-1]\)的区间和.因为模\(2\)意义下的加法就是异或,所以错误查询和正确查询相等就意味着\(a[l-1]\)和\(a[r]\)相等 我们不能简单的维护每个位置是什么值的概率,比方说一次修改了\([1,2]\),虽然这两个位置为\(1\)的概率都是\(\frac{1}{1}\),但它们的值绝对不相等 所以我们需要…
[BZOJ4784][ZJOI2017]仙人掌(Tarjan,动态规划) 题面 BZOJ 洛谷 题解 显然如果原图不是仙人掌就无解. 如果原图是仙人掌,显然就是把环上的边给去掉,变成若干森林连边成为仙人掌的方案数. 那么对于一棵树而言,考虑其变成仙人掌的方案数. 设\(a_i\)表示匹配\(i\)个儿子的方案数,显然转移时\(a_i=a_{i-1}+(i-1)*a_{i-2}\),即考虑新加入的儿子是匹配另外一个儿子还是不管. 设\(f_u\)表示节点\(u\)的子树匹配成仙人掌的方案数,这里要…
本文发布于洛谷日报,特约作者:tiger0132 原地址 分割线下为copy的内容 [洛谷日报第62期]Splay简易教程 洛谷科技 18-10-0223:31 简介 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树. 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: 若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值:若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值:左.右子树也分别为二叉排序树…