当前位置: 首页 > news >正文

南京建设工程质量监督站网站凡客是什么意思

南京建设工程质量监督站网站,凡客是什么意思,网站代码编辑器,wordpress加上特效题意 传送门 Codeforces 1625E2 Cats on the Upgrade (hard version) 题解 首先利用栈将原始字符串转换为合法的 RBS,不能匹配的括号设为 ‘.’。根据匹配的括号序列构造树,具体而言,遇到左括号,则新建节点向下递归&#xff0c…
题意

传送门 Codeforces 1625E2 Cats on the Upgrade (hard version)

题解

首先利用栈将原始字符串转换为合法的 RBS,不能匹配的括号设为 ‘.’。根据匹配的括号序列构造树,具体而言,遇到左括号,则新建节点向下递归,遇到右括号则回溯。则对于括号树上某一结点 v v v,子节点为 c h i ch_i chi,其代表的合法括号序列 R B S v = ( R B S c h 0 ) ( R B S c h 1 ) ⋯ RBS_v = (RBS_{ch_0})(RBS_{ch_1})\cdots RBSv=(RBSch0)(RBSch1)

对于某棵子树的答案,为子树的贡献,加上 k ( k + 1 ) / 2 k(k+1)/2 k(k+1)/2,其中 k k k 为子树的数量,后一项贡献代表了连续的 R B S c h RBS_{ch} RBSch 的枚举。操作 1 仅删除叶子节点与其双亲节点的连边,那么使用 BIT 维护节点的贡献和,以及每个节点的子树数量即可。总时间复杂度 O ( ( n + q ) log ⁡ n ) O\Big((n + q)\log{n}\Big) O((n+q)logn)

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
template <typename T>
struct BIT {vector<T> a;BIT() {}void init(int n) {a.resize(n + 1);}void add(int i, T x) {while (i < (int)a.size()) {a[i] += x;i += i & -i;}}T get(int i) {T s = 0;while (i > 0) {s += a[i];i -= i & -i;}return s;}
};int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, q;cin >> n >> q;string s;cin >> s;{vector<int> stk;for (int i = 0; i < n; ++i) {auto c = s[i];if (c == '(') {stk.push_back(i);} else {if (stk.empty()) {s[i] = '.';} else {stk.pop_back();}}}while (!stk.empty()) {s[stk.back()] = '.';stk.pop_back();}}vector<vector<int>> g(1);vector<int> vs(n), idx(n);{int pos = 0;auto nxt = [&]() {while (pos < n && s[pos] == '.') {pos += 1;}return pos;};function<void(int)> get = [&](int v) {while (nxt() < n && s[pos] == '(') {int u = g.size();g.push_back({});g[v].push_back(u);vs[pos] = v;idx[pos] = (int)g[v].size() - 1;pos += 1;get(u);nxt();vs[pos] = v;idx[pos] = (int)g[v].size() - 1;pos += 1;}};get(0);}int m = vs.size();BIT<ll> bit;bit.init(m);vector<BIT<int>> v_bit(m);vector<int> left(m), right(m);{int tm = 0;function<void(int)> dfs = [&](int v) {left[v] = tm;tm += 1;int k = g[v].size();v_bit[v].init(k);for (int i = 0; i < k; ++i) {v_bit[v].add(i + 1, 1);}bit.add(left[v] + 1, (ll)(k + 1) * k / 2);for (int u : g[v]) {dfs(u);}right[v] = tm;};dfs(0);}while (q--) {int op, l, r;cin >> op >> l >> r;l -= 1;r -= 1;assert(vs[l] == vs[r]);int v = vs[l];int a = idx[l], b = idx[r];if (op == 1) {bit.add(left[v] + 1, -v_bit[v].get((int)g[v].size()));v_bit[v].add(a + 1, -1);} else {ll res = bit.get(right[g[v][b]]) - bit.get(left[g[v][a]]);int k = v_bit[v].get(b + 1) - v_bit[v].get(a);res += (ll)(k + 1) * k / 2;cout << res << '\n';}}return 0;
}
http://www.yayakq.cn/news/777014/

相关文章:

  • 福海网站制作如何做外贸业务
  • 营销型网站有哪些特点中国建设银行官网站周波
  • 保定网站建设公司排名小程序免费网站
  • 机关网站建设的请示手机端详情页
  • 网站建设汇报会html5 门户网站模版
  • 有什么网站帮做邀请函设计的河北省住房和城身建设厅网站
  • 宁波市网站排名优化杭州企业网站
  • 电商网店东莞关键词优化推广
  • 鄠邑区建设和住房保障局网站深圳贷款网站建设
  • 寺庙网站建设好玩的网页游戏排行榜2021
  • 雅虎网站提交入口网站建设设计视频
  • 大渡口区网站建设企业网站建设及运营现状分析
  • 建立网站所需的硬件和软件取消wordpress 注册邮箱验证
  • 北京南站是丰台站吗网站怎样免费推广
  • 怎样免费建立个人网站wordpress中文主题排行榜
  • 网站代运营做哪些建设一个视频网站己18
  • 网站的开发与维护有一个外国聊天网站 动画做的
  • 网站标题关键词描述深圳宝安区松岗
  • 网站建设方向论文提纲阿里云的网站建设花钱么
  • ppt的网站导航栏怎么做广州市建设企业网站报价
  • 网站防封链接怎么做写文章免费的软件
  • 深圳市做网站有哪些公司贵阳网站页面设计
  • 沧县官厅网站建设项目管理师pmp报考条件
  • 资产管理公司网站建设方案群晖nas 做网站
  • 云主机可以放多少网站wordpress挂载机制
  • 正规百度推广资阳优化团队平台
  • 微信商城和网站建设专业团队宣传语
  • 企业网站空间域名wordpress 劣势
  • 株洲网站seo优化价格13315全国征信系统
  • 景安服务器管理助手如何备份网站wordpress mysql5.5