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

本地电脑如何做网站服务器网站建设全部流程包括备案

本地电脑如何做网站服务器,网站建设全部流程包括备案,住房与建设注册中心网站,青岛制作企业网站的公司题意 传送门 AtCoder 265G 012 Inversion 题解 直接维护逆序对数量比较困难&#xff0c;考虑到元素值域很小&#xff0c;直接将不同数值对解耦进行维护。具体而言&#xff0c;线段树维护区间 0 , 1 , 2 0,1,2 0,1,2 的数量&#xff0c;以及满足 i < j i<j i<j 时…
题意

传送门 AtCoder 265G 012 Inversion

题解

直接维护逆序对数量比较困难,考虑到元素值域很小,直接将不同数值对解耦进行维护。具体而言,线段树维护区间 0 , 1 , 2 0,1,2 0,1,2 的数量,以及满足 i < j i<j i<j a [ i ] = x , a [ j ] = 1 a[i]=x,a[j]=1 a[i]=x,a[j]=1 的数对数量 n u m [ x ] [ y ] num[x][y] num[x][y]。总时间复杂度 O ( d 2 n log ⁡ n ) O(d^2n\log n) O(d2nlogn),其中, d d d 是数组取值的规模。

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct ST {struct LzNode {vector<int> p;LzNode() : p(3) {reset();}void reset() {iota(p.begin(), p.end(), 0);}void update(vector<int> &f) {vector<int> tmp(3);for (int i = 0; i < 3; ++i) {tmp[i] = f[p[i]];}swap(tmp, p);}};struct Node {vector<int> cnt;vector<vector<ll>> num;Node() : cnt(3), num(3, vector<ll>(3)) {}Node operator+(const Node &o) {Node res;for (int i = 0; i < 3; ++i) {res.cnt[i] = cnt[i] + o.cnt[i];}for (int i = 0; i < 3; ++i) {for (int j = 0; j < 3; ++j) {res.num[i][j] = num[i][j] + o.num[i][j];}}for (int i = 0; i < 3; ++i) {for (int j = 0; j < 3; ++j) {res.num[i][j] += (ll)cnt[i] * o.cnt[j];}}return res;}void update(vector<int> &p) {Node res;for (int i = 0; i < 3; ++i) {res.cnt[p[i]] += cnt[i];}for (int i = 0; i < 3; ++i) {for (int j = 0; j < 3; ++j) {res.num[p[i]][p[j]] += num[i][j];}}swap(*this, res);}};vector<Node> dat;vector<LzNode> lz;ST(vector<int> &a) {int n = a.size();int k = 1;while (k < n) {k *= 2;}k *= 2;dat = vector<Node>(k);lz = vector<LzNode>(k);function<void(int, int, int)> init = [&](int p, int l, int r) {if (r - l == 1) {dat[p].cnt[a[l]] += 1;return;}int m = (l + r) / 2;int chl = p * 2 + 1, chr = p * 2 + 2;init(chl, l, m);init(chr, m, r);dat[p] = dat[chl] + dat[chr];};init(0, 0, n);}void pushdown(int p, int l, int r) {int chl = p * 2 + 1, chr = p * 2 + 2;auto &f = lz[p].p;lz[chl].update(f);lz[chr].update(f);dat[chl].update(f);dat[chr].update(f);lz[p].reset();}void change(int a, int b, vector<int> &f, int p, int l, int r) {if (r <= a || b <= l) {return;}if (a <= l && r <= b) {lz[p].update(f);dat[p].update(f);return;}int m = (l + r) / 2;int chl = p * 2 + 1, chr = p * 2 + 2;pushdown(p, l, r);change(a, b, f, chl, l, m);change(a, b, f, chr, m, r);dat[p] = dat[chl] + dat[chr];}Node query(int a, int b, int p, int l, int r) {if (r <= a || b <= l) {return Node();}if (a <= l && r <= b) {return dat[p];}int m = (l + r) / 2;int chl = p * 2 + 1, chr = p * 2 + 2;pushdown(p, l, r);return query(a, b, chl, l, m) + query(a, b, chr, m, r);}
};
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, q;cin >> n >> q;vector<int> a(n);for (int i = 0; i < n; ++i) {cin >> a[i];}ST tr(a);while (q--) {int op;cin >> op;if (op == 1) {int l, r;cin >> l >> r;l -= 1;auto nd = tr.query(l, r, 0, 0, n);ll res = 0;for (int i = 0; i < 3; ++i) {for (int j = 0; j < i; ++j) {res += nd.num[i][j];}}cout << res << '\n';} else {int l, r;vector<int> b(3);cin >> l >> r;l -= 1;for (int i = 0; i < 3; ++i) {cin >> b[i];}tr.change(l, r, b, 0, 0, n);}}return 0;
}
http://www.yayakq.cn/news/988365/

相关文章:

  • 想要做个公司网站整站采集wordpress
  • 新网站做外链谢馥春网站建设的优势
  • 昆明网站运营公司有哪些网站建设前的市场分析怎么写
  • 公司宣传片广告网站优化外链
  • 宁波网站优化公司哪家好网站推广主要用的软件
  • 网站里面如何做下载的app网站建设公司圣辉友联
  • 网站建设查看框架的源代码建网站和做微信哪个好
  • linux版网站开发秦皇岛视频优化推广
  • 在线做ppt模板下载网站网站建设问题
  • 资阳建设局网站手机广西网
  • 建设部166号令住建部网站建设网站的程序
  • wordpress免费建站教程wordpress破解主题
  • 泉州最专业微信网站建设公司下载网址
  • 安徽华建建设工程公司网站wordpress网站打包app
  • 湘潭网站开发公司威龙电子商务做的网站
  • 这几年做哪些网站能致富wordpress没了
  • 本地58同城招聘网找工作外贸seo建站
  • 在线字体设计网站常平小学网站建设
  • 电商网站建设 教学总结建设银行网站优点
  • 织梦网站logo怎么换修改wordpress中附件上传大小
  • 国贸行业 网站建设wordpress 头像上传路径
  • 网站签到的作用兰州网站优化公司
  • 建设游戏网站济南市住建局官方网站
  • 松阳建设局网站学校网站建设开发项目计划报告
  • 网站建设公司发展个人网站 程序
  • 沙河高端网站建设网站开发专业主修课程
  • 厦门跨境建站平台wordpress添加广告位插件
  • 网站网站制作网微信定制开发多少钱
  • 怎样做境外网站ppt模板免费下载图片
  • 微官网是网站吗广告联盟官网