括号树 noip(csp??) 2019 洛谷 P5658】的更多相关文章

洛谷AC通道 本题,题目长,但是实际想起来十分简单. 首先,对于树上的每一个后括号,我们很容易知道,他的贡献值等于上一个后括号的贡献值 + 1.(当然,前提是要有人跟他匹配,毕竟题目中要求了,是不同的子串.) 那么,如何记录是否有人跟他匹配??  也很好想...  用一个栈来维护(同时也方便我们记录上一个后括号所在的位置.) 那么,求总贡献值呢??  更好办了.  直接等于他爸爸 + 他自己的呗!! 结束了~~~ #include <bits/stdc++.h> using namespace…
洛谷AC通道! 多年过后,重新来看这道D1T1,20min不到AC,再回忆起当初考场三小时的抓耳挠腮,不禁感慨万千啊!! 发篇题解记录一下. 思路:直接dfs模拟即可(二进制找规律是不可能的, 这辈子也不会去找规律). #include <bits/stdc++.h> using namespace std; #define ll unsigned long long inline ll pow(ll x){ ll a = , temp = ; for(int i = ;i <= x;…
noip好难呀. 上一个感觉有点长了,重开一个. 36.Vigenère 密码 粘个Openjudge上的代码 #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include <cstdlib> #include <algorithm> #include <iomanip> using namespace std; char a[…
传送门 1.铺地毯 d1t1 模拟 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<vector> #include<ctime> typedef long long…
洛谷P3384 #include <bits/stdc++.h> #define DBG(x) cerr << #x << " = " << x << endl; const int maxn = 1e5+5; using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch < '0' || ch > '9'){if(c…
线段树分治 其实思想说起来是比较简单的,我们把这个题里的所有操作(比如连边删边查询balabala)全部拍到一棵线段树上,然后对着整棵树dfs一下求解答案,顺便把操作做一下,回溯的时候撤销一下即可.虽然有的操作需要以区间形式拍到树上,导致它可能会被拆成两个,但线段树的形态同样保证了操作最多只会被拆分\(log(区间长度)\)次,保障了复杂度. 洛谷P5227[AHOI2013]连通图 传送门 其实就是线段树分治+带撤销并查集,并查集写按秩合并,不能路径压缩(否则会破坏结构,就会撤销出奇怪的效果)…
(neng了好久好久才糊弄懂得知识点...) 一.李超线段树 在线动态维护一个二维平面直角坐标系, 支持插入一条线段, 询问与直线x = x0相交的所有线段中,交点y的最大/小值 (若有多条线段符合条件,输出编号最小的线段的编号) 洛谷板子题-Segment[HEOI2013]-洛谷T4097 二.add操作 整个李超线段树的核心就是add操作 1.特判 l == r 已经到了一个点 如果该点之前没有维护线段,直接维护现在的线段 如果该点已经维护过,选择纵坐标靠上的直线(点),纵坐标相同,选择编…
洛谷题目传送门 仍然是一个板子. 不过蒟蒻去学了一下BIT维护区间修改区间求和,常数果真十分优秀 设数列为\(a_i\),差分数组\(d_ i=a_ i-a_ {i-1}\),前缀和\(s_i=\sum\limits_ {j=1}^ia_ j\) 显然有\(a_ i=\sum\limits_ {j=1}^id_ j\) 于是大力展开得到 \[s_i=\sum\limits_{j=1}^i(i-j+1)d_j\] \[s_i=(i+1)\sum\limits_{i=1}^jd_j-\sum\lim…
题目: 题目链接:https://www.luogu.org/problem/P5658?contestId=24103 本题中合法括号串的定义如下: () 是合法括号串. 如果 A 是合法括号串,则 (A) 是合法括号串. 如果 A,B 是合法括号串,则 AB 是合法括号串. 本题中子串与不同的子串的定义如下: 字符串 S 的子串是 S 中连续的任意个字符组成的字符串.S 的子串可用起始位置 \(l\) 与终止位置 \(r\) 来表示,记为 \(S (l, r)\)(\(1 \leq l \l…
题面 一道简单的栈与\(\text{DP}\)的结合. 首先介绍一下序列上的括号匹配问题,也就是此题在序列上的做法: 设 \(dp_i\) 表示以 \(i\) 结尾的合法的括号序列个数, \(ss_i\) 表示 \(1\) 到 \(i\) 合法的括号序列字串个数. 维护一个栈,左括号 \(\text{push}\) 它的位置到栈中,右括号取出栈顶 \(dp_i = dp_{sta_{top} - 1} + 1\) , 然后 \(ss_i=ss_{i-1}+dp_{i}\). 答案即为 \((1\…