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

深圳微信分销网站制作国外对旅游网站建设的现状

深圳微信分销网站制作,国外对旅游网站建设的现状,淘宝的前100个关键词排名,做网站都有什么成本题意 传送门 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/669036/

相关文章:

  • 安徽省教育基本建设学会网站平面设计app推荐
  • 可以做兼职的网站推荐家装网站自己做的
  • 网站更换空间教程民宿网站开发数据流图
  • 重庆大学建设管理与房地产学院网站企业做官网
  • 建湖做网站需要多少钱asp.net网站改版 旧网站链接
  • 中国建设银行福州招聘信息网站做微网站公司名称
  • 专业的学校网站建设沈阳公司网站设计公司
  • 交通信用网站建设优惠券网站怎样做
  • 义乌做网站的电话wordpress目录权限设置
  • 连云港品牌网站建设百度域名值多少钱
  • 耐克运动鞋网站建设规划书框架零食网站源码
  • 网站制作公司费用谷歌seo需要做什么的
  • 如何建设淘宝网站小程序制作步骤
  • 网站开发相关技术2024前端就业形势
  • 在线学做网站东莞网站优化排名网站
  • 企业网站 php 免费陕西省国家示范校建设专题网站
  • 做好网站内能另外做链接吗如何进行主题网站的资源建设
  • 建设工程规范在哪个网站发布学生个人网页设计主题
  • 无锡地区做网站深圳网站建设 百度一下
  • 最好的网站建设公司简单网页
  • 青岛网站模板百度权重9的网站
  • 做网站 提要求网页设计与网站建设习题答案
  • 网站哪家公司好网站维护预算
  • 网站后台seo设置孝感高新区建设局网站
  • 网站排名软件包年92素材网
  • 查网站域名备案查询加强网络平台建设
  • 杭州 网站建设 哪家强沈阳哪里有教做网站的
  • 网站备案指的是什么我在wordpress
  • 温州企业网站seo网站策划方案目标
  • 充电宝网站建设策划书提供免费网站建设