扰乱神器 题解

news/2025/10/25 8:39:42/文章来源:https://www.cnblogs.com/HirasawaYuii/p/19164568

扰乱神器 题解

链接

题意略

有一个很显然的性质,即对于一个块,其中的所有小块可能会变顺序,但不会变元素。

转化一下题意,对于单个块的单次翻转,对答案的变化即为原状态中的逆序对个数变为了顺序对个数,而顺序对个数其实就为总对数-逆序对个数-相等对个数。

我们通过归并排序的思想,以每一层左区间对右区间的逆序对数和相等对数,即可以 \(O(\log n)\) 计算单次翻转

如:\(3,4,2,1\),若使其长度为 \(4\) 的块翻转,即变为 \(1,2,4,3\),新的逆序对数即为 \(1,2\)\(4,3\) 间产生贡献加上 \(1\)\(2\) 间的贡献和 \(3\)\(4\) 间的贡献。我们实际处理时便为 \(3,4\)\(2,1\) 之间的总对数-顺序对+\(3,4\) 之间.....+\(1,2\) 之间.....

可以在 \(O(n\log n)\) 内求出单个块内每一层的逆序对数和相等对数,更合理的表达为每一层的跨块逆序、相等对数。

对于修改直接上线段树即可,复杂度为 \(O(n\log n+m\log^2n)\)

其实上面的我认为官方题解比我讲的更好,但本题的实现很麻烦,我细致讲解一下:

主函数:

void solve() {n = rd(), m = rd();for(ll i = 1; i <= (1ll<<n); i++) a[i] = rd();t.build(1, 1, 1ll<<n, n);while(m--) {ll q = rd(), l = rd(), r = rd(), siz = (1ll<<(n-q));ll ans = 0;t.modify(1, (l-1)*siz+1, r*siz, n-q, 1, 1ll<<n);for(ll i = 0; i <= n-1; i++) ans += t.inp[1][i];wr(ans);}
}

简单的读入建树输出,记录答案时直接在总块上累加每一层的贡献

线段树:

struct SegTre {ll ls[N<<1], rs[N<<1], lzy[N<<1], dep[N<<1];ll inp[N<<1][25], equ[N<<1][25];

分别为左儿子,右儿子,懒标记,深度,逆序对个数,相等对个数,开 \(N<<1\) 即可是因为本题为满二叉树,刚刚好;深度这里是以长度为 \(1\) 的块为 \(0\),往上递增;后两个数组的第二维存储的是该块下每层的贡献(如第 \(0\) 层即为两个长度为 \(1\) 的块间的跨块贡献)。

	void pushup(ll p) {for(ll i = 0; i < dep[p]-1; i++) {inp[p][i] = inp[ls[p]][i]+inp[rs[p]][i];equ[p][i] = equ[ls[p]][i]+equ[rs[p]][i];}}

显然的正常向上传递

	void update(ll p, ll v) {lzy[p] ^= v;for(ll i = 0; i < dep[p]; i++) {if((v>>i)&1) inp[p][i] = (1ll << dep[p]+i-1) - equ[p][i] - inp[p][i];}if(v&(1ll<<(dep[p]-1))) swap(ls[p], rs[p]);}

计算在一块中翻转的贡献,这里的 \(v\) 是类似状压的一个标记,第 \(i\) 位为 \(1\) 即第 \(i\) 位翻转,对于 \(1<<(dep[p]+i-1)\) 的理解,其实自己举个例子手模一下就可以了,如当深度为 \(3\) (长度为 \(8\)),\(i=1\) 时,实际上是两对跨两个长度为 \(2\) 的块之间的贡献,总对数即为 \(1<<3=8\)。而对于左右儿子的翻转,则直接交换即可,如下图:

	void pushdown(ll p) {if(lzy[p] == 0) return;update(ls[p], lzy[p]);update(rs[p], lzy[p]);lzy[p] = 0;}

	void build(ll p, ll l, ll r, ll d) {dep[p] = d;if(l == r) return;ls[p] = (p<<1), rs[p] = (p<<1|1);ll mid = (l+r) >> 1;build(ls[p], l, mid, d-1); build(rs[p], mid+1, r, d-1);for(ll i = l; i <= mid; i++) cnt[a[i]]++;for(ll i = mid+1; i <= r; i++) equ[p][d-1] += cnt[a[i]];for(ll i = l; i <= mid; i++) cnt[a[i]]--;ll i = l, j = mid+1, k = 0;while(i <= mid && j <= r) {if(a[i] <= a[j]) tmp[++k] = a[i], i++, inp[p][d-1] += j-mid-1;else tmp[++k] = a[j], j++;}while(i <= mid) tmp[++k] = a[i++], inp[p][d-1] += j-mid-1;while(j <= r) tmp[++k] = a[j++];for(ll i = l; i <= r; i++) a[i] = tmp[i-l+1];pushup(p);}

在建树时,我们需要处理出来每一块每一层的跨块逆序对相等对数,逆序对直接采用了归并排序求法

	void modify(ll p, ll l, ll r, ll x, ll L, ll R) {if(l <= L && R <= r) {update(p, (1ll<<x)-1);return;}pushdown(p);ll mid = (L+R) >> 1;if(l <= mid) modify(ls[p], l, r, x, L, mid);if(mid < r) modify(rs[p], l, r, x, mid+1, R);pushup(p);}
}t;

修改中的 \((1<<x)-1\) 即为如要翻转深度为 \(3\) 的块(长度为 \(8\)),\(v=7\)\(0,1,2\) 层都要翻转,类似于上面的那个图。在修改时必须通过在函数中传递值域(即 \(L,R\)),因为这时的左右儿子只是编号,类似于动态开点。

总代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mst(x, y) memset(x, y, sizeof(x))
#define pii pair<ll, ll>
#define fi first
#define se second
#define mp(x, y) make_pair(x, y)
#define eb emplace_backinline ll rd(){ll x = 0, f = 1;char c = getchar();while(c < '0' || c > '9'){if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9'){x = (x<<1)+(x<<3)+(c^48);c = getchar();}return f*x;}
inline void writ(ll x){if(x < 0){putchar('-');x = -x;}if(x > 9) writ(x/10);putchar(x%10 | 0x30);return;}
inline void wr(ll x){writ(x);puts("");}
inline void wr_(ll x){writ(x);putchar(' ');}
const ll N = (1ll<<20)+5, inf = 0x3f3f3f3f;bool st;
ll n, m;
ll a[N], cnt[N], tr[N], tmp[N];
struct SegTre {ll ls[N<<1], rs[N<<1], lzy[N<<1], dep[N<<1];ll inp[N<<1][25], equ[N<<1][25];void update(ll p, ll v) {lzy[p] ^= v;for(ll i = 0; i < dep[p]; i++) {if((v>>i)&1) inp[p][i] = (1ll << dep[p]+i-1) - equ[p][i] -inp[p][i];}if(v&(1ll<<(dep[p]-1))) swap(ls[p], rs[p]);}void pushup(ll p) {for(ll i = 0; i < dep[p]-1; i++) {inp[p][i] = inp[ls[p]][i]+inp[rs[p]][i];equ[p][i] = equ[ls[p]][i]+equ[rs[p]][i];}}void pushdown(ll p) {if(lzy[p] == 0) return;update(ls[p], lzy[p]);update(rs[p], lzy[p]);lzy[p] = 0;}void build(ll p, ll l, ll r, ll d) {dep[p] = d;if(l == r) return;ls[p] = (p<<1), rs[p] = (p<<1|1);ll mid = (l+r) >> 1;build(ls[p], l, mid, d-1); build(rs[p], mid+1, r, d-1);for(ll i = l; i <= mid; i++) cnt[a[i]]++;for(ll i = mid+1; i <= r; i++) equ[p][d-1] += cnt[a[i]];for(ll i = l; i <= mid; i++) cnt[a[i]]--;ll i = l, j = mid+1, k = 0;while(i <= mid && j <= r) {if(a[i] <= a[j]) tmp[++k] = a[i], i++, inp[p][d-1] += j-mid-1;else tmp[++k] = a[j], j++;}while(i <= mid) tmp[++k] = a[i++], inp[p][d-1] += j-mid-1;while(j <= r) tmp[++k] = a[j++];for(ll i = l; i <= r; i++) a[i] = tmp[i-l+1];pushup(p);}void modify(ll p, ll l, ll r, ll x, ll L, ll R) {if(l <= L && R <= r) {update(p, (1ll<<x)-1);return;}pushdown(p);ll mid = (L+R) >> 1;if(l <= mid) modify(ls[p], l, r, x, L, mid);if(mid < r) modify(rs[p], l, r, x, mid+1, R);pushup(p);}
}t;
bool ed;void solve() {n = rd(), m = rd();for(ll i = 1; i <= (1ll<<n); i++) a[i] = rd();t.build(1, 1, 1ll<<n, n);while(m--) {ll q = rd(), l = rd(), r = rd(), siz = (1ll<<(n-q));ll ans = 0;t.modify(1, (l-1)*siz+1, r*siz, n-q, 1, 1ll<<n);for(ll i = 0; i <= n-1; i++) ans += t.inp[1][i];wr(ans);}
}signed main() {freopen("dr.in", "r", stdin);freopen("dr.out", "w", stdout);ll T = 1;while(T--) solve();cerr << "Time :" << 1.0*clock() / CLOCKS_PER_SEC << "s\n";cerr << "Memory :" <<( (&ed-&st) / (1ll<<20) ) << "MB\n";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年比较好的商业动画制作,工业产品动画制作公司

2025年比较好的商业动画制作与工业产品动画制作公司推荐 在数字化营销时代,商业动画和工业产品动画已成为企业品牌推广、产品展示的重要手段。优秀的动画制作公司不仅能提升品牌形象,还能通过视觉化表达增强信息传递…

2025年口碑好的MMA彩色防滑路面厂家最新TOP推荐榜:批发销售

2025年口碑好的MMA彩色防滑路面厂家最新TOP推荐榜:批发销售行业概述MMA彩色防滑路面作为现代城市建设和交通管理的重要组成部分,凭借其优异的防滑性能、耐久性和美观性,在市政道路、高速公路、停车场、人行道等领域…

2025年质量好的双层公寓床,组合公寓床厂家最新TOP推荐榜:批发销售

2025年质量好的双层公寓床,组合公寓床厂家最新TOP推荐榜:批发销售 行业概览 随着城市化进程加速和学生公寓、青年公寓需求的增长,双层公寓床市场迎来爆发式发展。2025年,高品质的组合公寓床不仅需要满足基础住宿功…

2025年评价高的台车炉厂家最新权威推荐榜:定制定做

2025年评价高的台车炉厂家最新权威推荐榜:定制定做在工业热处理设备领域,台车炉作为重要的热处理设备,广泛应用于机械制造、汽车零部件、航空航天、军工等多个行业。随着2025年中国制造业转型升级的深入推进,市场对…

2025年热门的智能无主灯商业照明,智能无主灯酒店民宿厂家最新推荐榜:批发销售

2025年热门的智能无主灯商业照明,智能无主灯酒店民宿厂家最新推荐榜:批发销售智能无主灯照明行业概述随着物联网技术和人工智能的快速发展,智能无主灯照明系统已成为2025年商业空间和酒店民宿设计的标配。这种照明方…

2025年热门的储罐重防腐涂料,脱硫重防腐涂料厂家推荐及选择指南:批发销售

2025年热门的储罐重防腐涂料,脱硫重防腐涂料厂家推荐及选择指南:批发销售行业概述随着工业发展对设备防护要求的不断提高,储罐重防腐涂料和脱硫重防腐涂料市场正迎来快速增长期。2025年,环保法规趋严、工业设备升级…

2025年靠谱的变径通风软管,可变直径通风软管厂家最新推荐排行榜:实力源头加工

2025年靠谱的变径通风软管厂家最新推荐排行榜:实力源头加工,专业认证保障 随着工业、航空、建筑等领域对通风系统灵活性和耐用性需求的提升,变径通风软管成为市场热门产品。这类软管可适应不同管径的连接需求,具备…

2025年知名的派克激光机头过滤器,RAYCEE高压精密过滤器厂家最新推荐榜:批发销售

2025年知名的派克激光机头过滤器,RAYCEE高压精密过滤器厂家最新推荐榜:批发销售在激光切割行业中,气体后处理系统的质量直接影响着切割精度、设备寿命和运行成本。派克激光机头过滤器和RAYCEE高压精密过滤器作为关键…

sunpinyin用上了谷歌的系统词库

sunpinyin的用户词典是~/.sunpinyin/userdict 〔 详情〕 〔 这里〕有(1010K):userdict 4,227,072字节 jiaci a.out jiaci.cpp Makefile gpydata.txt 来自libgooglepinyin0/datasqlite创建journal的速度不快,加48,06…

2025年知名的304不锈钢焊管,大口径不锈钢焊管最新TOP排名厂家:直销制造

2025年知名的304不锈钢焊管,大口径不锈钢焊管最新TOP排名厂家:直销制造行业概述不锈钢焊管作为现代工业的重要基础材料,在石油化工、食品加工、制药、建筑装饰、水处理等多个领域发挥着不可替代的作用。随着中国制造…

2025年评价高的帐篷自动化篷布设备,遮阳网篷布设备推荐TOP生产厂家:实力源头加工

2025年评价高的帐篷自动化篷布设备,遮阳网篷布设备推荐TOP生产厂家:实力源头加工行业概述随着户外休闲产业的蓬勃发展和现代农业、建筑业对遮阳防护需求的增长,帐篷自动化篷布设备和遮阳网篷布设备市场迎来了前所未有…

2025年比较好的印刷胶辊,罗兰印刷机胶辊最新TOP厂家推荐:直销制造

2025年比较好的印刷胶辊,罗兰印刷机胶辊最新TOP厂家推荐:直销制造 开篇介绍 在印刷行业中,胶辊作为核心配件之一,其质量直接影响印刷机的稳定性、印刷效果及生产效率。随着2025年印刷技术的不断升级,市场对高性能…

2025年正规极简家具,轻奢家具厂家最新推荐排行榜:实力源头加工

2025年正规极简家具,轻奢家具厂家最新推荐排行榜:实力源头加工开篇介绍在2025年家具行业发展趋势中,极简主义与轻奢风格的融合已成为主流消费选择。随着消费者对品质生活追求的不断提升,正规家具厂家凭借源头加工优…

2025年评价高的楼地面变形缝,楼顶变形缝厂家推荐及选择指南:批发销售

2025年评价高的楼地面变形缝,楼顶变形缝厂家推荐及选择指南:批发销售开篇介绍在建筑行业中,变形缝作为重要的结构组成部分,承担着吸收建筑物因温度变化、沉降或地震等因素产生的位移和变形的重要功能。随着建筑技术…

2025年口碑好的大型挤浆机,浆料浓缩挤浆机厂家推荐及选择建议:直销制造

2025年口碑好的大型挤浆机与浆料浓缩挤浆机厂家推荐及选择建议:直销制造行业概述在当今工业生产领域,浆料处理设备扮演着至关重要的角色,特别是在造纸、食品加工、生物质能源和环保等行业。大型挤浆机和浆料浓缩挤浆…

2025年口碑好的压滤机,板框压滤机厂家推荐及采购指南:定制定做

2025年口碑好的压滤机,板框压滤机厂家推荐及采购指南:定制定做 开篇介绍 在工业生产和环保处理领域,压滤机是不可或缺的关键设备,广泛应用于污水处理、污泥脱水、固液分离等工艺环节。随着环保政策的日益严格和工…

2025年口碑好的环保蹲便器,泡沫蹲便器品牌厂家排行榜:直销制造

2025年口碑好的环保蹲便器,泡沫蹲便器品牌厂家排行榜:直销制造环保蹲便器市场概述随着全球环保意识的不断提升和可持续发展理念的深入人心,2025年的环保卫浴市场迎来了爆发式增长。在众多环保卫浴产品中,泡沫蹲便器…

2025年靠谱的电子地磅,80吨地磅厂家最新推荐排行榜:实力源头加工

2025年靠谱的电子地磅,80吨地磅厂家最新推荐排行榜:实力源头加工电子地磅行业概述在工业称重领域,电子地磅作为重要的计量设备,广泛应用于物流、矿山、冶金、化工、粮食等行业。随着技术进步和市场需求增长,80吨级…

2025年口碑好的FD7B25ADM比例阀,RAYCEE比例阀厂家最新TOP推荐榜:批发销售

2025年口碑好的FD7B25ADM比例阀,RAYCEE比例阀厂家最新TOP推荐榜:批发销售在工业自动化与流体控制领域,比例阀作为关键元件,直接影响设备的精度、稳定性和效率。FD7B25ADM比例阀和RAYCEE比例阀因其高精度、快速响应和…

2025年评价高的三维家具滑轨,橱柜家具滑轨最新TOP厂家推荐:直销制造

2025年评价高的三维家具滑轨,橱柜家具滑轨最新TOP厂家推荐:直销制造行业概述随着现代家居设计对功能性与美观性要求的不断提升,三维家具滑轨作为橱柜、抽屉等家具的核心部件,其重要性日益凸显。2025年,市场上涌现出…