首页 > TAG信息列表 > ZJOI2017
#树形dp#洛谷 3687 [ZJOI2017]仙人掌
题目 给定一个简单无向连通图,问有多少种加边方案使得这个图变成简单仙人掌。 分析 首先找到一棵生成树,考虑其它非树边所对应的树的路径上的边最多只能用一次, 这可以用树上差分做,如果一个点到其父节点的边被用了多次就一定无解。 否则没有被用过的部分将形成若干棵树,方案就是它们[做题记录-数据结构] Luogu5210 [ZJOI2017]线段树
很久没有过的对着题解抄的题了。( 手玩一下之后会发现我们的区间会在第一次向两边递归的时候分开, 然后剩下的就是对是右儿子的左链求和以及对左儿子的右链求和。那么应该可以用倍增之类的东西直接硬维护。 然后点开题解发现这玩意可以直接使用差分维护。具体来说就是把\(u\)点和\(l[做题记录-数据结构] P3688 [ZJOI2017] 树状数组
题意 Problem Link \(n \leq 5 \times 10^5\) 题解 第一条注意的就是这个是条件概率! 所以每个位置分开算概率是不对的, 所以这不是sb题。 所以得维护\((x, y)\)表示\(a_x = a_y\)的概率。 然后分类讨论一下就好了。 所以还是sb题 /* QiuQiu /qq ____ _ _P3688 [ZJOI2017] 树状数组 【二维线段树】
题目描述:这里有一个写挂的树状数组: 有两种共\(m\)个操作: 输入\(l,r\),在\([l,r]\)中随机选择一个整数\(x\)执行\(\text{Add}(x)\) 输入\(l,r\),询问执行\(\text{Query}(l,r)\)的答案正确的概率\(\text{mod} \ 998244353\)。 数据范围:\(n,m\leq 100000\) 首先,根据这个代码,我们知luogu3687-[ZJOI2017] 仙人掌
Description P3687 [ZJOI2017]仙人掌 - 洛谷 | 计算机科学教育新生态 Solution 我们先考虑只有一棵树如何处理. 仙人掌可以看做若干环的集合. 特别的, 对于一条没有环的边, 可以加上重边, 那么这个边和它的重边构成一个环. 对于树来说, 问题就可以转化为求加上若干条边, 使树上的每【做题】ZJOI2017仙人掌——组合计数
原文链接 https://www.cnblogs.com/cly-none/p/ZJOI2017cactus.html 给出一个\(n\)个点\(m\)条边的无向连通图,求有多少种加边方案,使得加完后得到一个仙人掌。 \(n \leq 5 \times 10^5, \ m \leq 10^6\) 首先,判定无解后,我们可以把每个环删掉,那么答案就是剩下的若干树的加边方案的【BZOJ4784】[ZJOI2017]仙人掌(Tarjan,动态规划)
【BZOJ4784】[ZJOI2017]仙人掌(Tarjan,动态规划) 题面 BZOJ 洛谷 题解 显然如果原图不是仙人掌就无解。 如果原图是仙人掌,显然就是把环上的边给去掉,变成若干森林连边成为仙人掌的方案数。 那么对于一棵树而言,考虑其变成仙人掌的方案数。 设\(a_i\)表示匹配\(i\)个儿子的方案数,显然转移[BZOJ]4785: [Zjoi2017]树状数组
题解:......推了一晚上的式子 ....zjoi签到题.....感觉自己废了啊 首先看懂题目代码在干啥 ...分析一下 他求的是后缀和 也就是对于查询[l,r]你需要看第l-1和第r位置 被修改次数和为偶数次的概率 然后用二维平面点表示 维护每个点出现偶数次的概率 对于l=1是需要考虑 整个序【ZJOI2017】树状数组
sts维护两个数不同的概率就可以了 #include<cstdio> #include<iostream> #include<algorithm> const int mod = 998244353; typedef long long ll; inline int pow(int x,int y,int ans=1){ for(;y;y>>=1,x=ll(x)*x%mod) if(y&1)ans=ll(ans)*x%mod