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

3340网站建设与管理做网站放广告收益

3340网站建设与管理,做网站放广告收益,seo公司哪家,箱包官方网站模板题意 传送门 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.bjxfkj.com.cn/article/107652.html

相关文章:

  • 网站建设合同属于承揽合同吗凭祥网站建设
  • 手机端网站开发页哪个网站做3d模型
  • 网站开发一般用什么数据库怎么注册公司名字
  • 上海网站建设seodian学校网站模板大全
  • 实用网站开发主页面设计
  • 中山建网站报价wordpress修改功能小工具栏
  • 代做毕业设计找哪个网站好免费试用网站 源码
  • 为女足世界杯创建一个网站上海网络营销品牌推广
  • 网站关键词排名很好的原因湖州网站设计
  • 龙岗网站建设费用大型做网站的公司有哪些
  • 玩具网站建设360识图
  • 免费ip地址网站楼市最新消息
  • 博物馆网站模版做网站运营工资是不是很低
  • 网络销售型网站有哪些内容好看的美食网站设计
  • 怎么样做销往非洲太阳能板的网站开发公司利用员工身份贷款买房子
  • 顺义区做网站公众号怎么制作流程
  • 宝塔网站建设教程建设网站项目总结
  • 怎么做自己的外卖网站网站的站点建设分为
  • 建立平台还是搭建平台长沙seo网络推广
  • 河南网站备案wordpress piklist
  • 崇信县门户网站留言首页如何制作自己的网站视频教程
  • 石家庄市网站建设哪里可以做网页
  • 广告制作公司网站建设模板网站建设合同的注意点
  • 个人网站建设策划书怎么写京东网站的建设与发展
  • 湛江模板建站定制网站河北自助建站系统平台
  • 免费网站站长推广衡水做网站哪家好
  • 集团门户网站建设方案自己建一个网站能过期吗
  • 做的网站错位怎么办搭建网站一般多少钱
  • 江门找人做网站排名wordpress怎么给网站设置几种语言
  • 做网站用asp和html用国旗做专利的是哪个网站