BZOJ 3744: Gty的妹子序列 【分块 + 树状数组 + 主席树】

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx 政府科技管理者如何提升科技成果转化项目进场交易的备案效率? 立即下载

任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3744

3744: Gty的妹子序列

Time Limit: 20 Sec  Memory Limit: 128 MB
Submit: 2571  Solved: 746
[Submit][Status][Discuss]

Description

我早已习惯你不在身边,
 
人间四月天 寂寞断了弦。
 
回望身后蓝天,
 
跟再见说再见……
 
 
某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现
 
她们排成了一个序列,每个妹子有一个美丽度。
 
Bakser神犇与他打算研究一下这个妹子序列,于是Bakser神犇问道:"你知道区间
 
[l,r]中妹子们美丽度的逆序对数吗?"
 
蒟蒻Autumn只会离线乱搞啊……但是Bakser神犇说道:"强制在线。"
 
请你帮助一下Autumn吧。
 
 
给定一个正整数序列a,对于每次询问,输出al...ar中的逆序对数,强制在线。

 

Input

第一行包括一个整数n(1<=n<=50000),表示数列a中的元素数。
 
第二行包括n个整数a1...an(ai>0,保证ai在int内)。
 
接下来一行包括一个整数m(1<=m<=50000),表示询问的个数。
 
接下来m行,每行包括2个整数l、r(1<=l<=r<=n),表示询问al...ar中的逆序
 
对数(若ai>aj且i<j,则为一个逆序对)。
 
l,r要分别异或上一次询问的答案(lastans),最开始时lastans=0。
 
保证涉及的所有数在int内。

 

Output

对每个询问,单独输出一行,表示al...ar中的逆序对数。

 

Sample Input

4
1 4 2 3
1
2 4

Sample Output

2

 

 

解题思路:

如果是可以离线的话,直接莫队啦。

但是这里强制在线,就需要分块了。

用 f [ j ][ i ] 维护 第 j 到 第 i 块的右端的答案,这样就省去了 处理块前的那些情况了(论前缀和的美妙)。

预处理 f[ j ][ i ] 的方法就是树状数组直接暴力。

如果 当前区间 【L,R】的 R刚好是某一块的右端点,那么 答案 就是 f [ L ][ pos[ R ] ];

如果不是,那么我们还要处理一下 R 到 前一块右端点的 区间 逆序数,

这里分两部分,第一部分是这一区间与前面的的逆序数,用主席树维护。

       第二部分就是这一区间的逆序数了,直接树状数组暴力。

 

AC code:

  1 #include <cstdio>
  2 #include <algorithm>
  3 #include <cstring>
  4 #include <cmath>
  5 #define INF 0x3f3f3f3f
  6 #define LL long long
  7 using namespace std;
  8 const int MAXN = 5e4+10;
  9 int N, M, cnt, tot, ans;
 10 int c1[MAXN], c2[MAXN];
 11 int ch[MAXN*100][2], sum[MAXN*100], a[MAXN], d[MAXN];
 12 int siz, lim, bl[1001], br[1001], pos[MAXN];
 13 int f[MAXN][301], root[MAXN];
 14 
 15 void add1(int x, int val)       //维护小的值
 16 {
 17     while(x <= N){
 18         c1[x]+=val;
 19         x+=(x&(-x));
 20     }
 21 }
 22 
 23 void add2(int x, int val)       //维护大的值
 24 {
 25     while(x){
 26         c2[x]+=val;
 27         x-=(x&(-x));
 28     }
 29 }
 30 
 31 int query1(int x)
 32 {
 33     int res = 0;
 34     while(x){
 35         res+=c1[x];
 36         x-=(x&(-x));
 37     }
 38     return res;
 39 }
 40 
 41 int query2(int x)
 42 {
 43     int res = 0;
 44     while(x <= N){
 45         res+=c2[x];
 46         x+=(x&(-x));
 47     }
 48     return res;
 49 }
 50 
 51 void update(int x, int &y, int l, int r, int k)
 52 {
 53     y = ++tot;
 54     ch[y][0] = ch[x][0];
 55     ch[y][1] = ch[x][1];
 56     sum[y] = sum[x]+1;
 57     if(l==r) return;
 58     int mid = (l+r)/2;
 59     if(k<=mid) update(ch[x][0], ch[y][0], l, mid, k);
 60     else update(ch[x][1], ch[y][1], mid+1, r, k);
 61 }
 62 
 63 int getsum(int x, int y, int l, int r, int L, int R)
 64 {
 65     if(L > R) return 0;
 66     if(l >= L && r <= R) return sum[y]-sum[x];
 67     int mid = (l+r)/2, res = 0;
 68     if(L <= mid) res+=getsum(ch[x][0], ch[y][0], l, mid, L, R);
 69     if(R > mid) res+=getsum(ch[x][1], ch[y][1], mid+1, r, L, R);
 70     return res;
 71 }
 72 
 73 int main()
 74 {
 75     int i, j, x, L, R;
 76     scanf("%d", &N);
 77     for(int i = 1; i <= N; i++){
 78         scanf("%d", &a[i]);
 79         d[i] = a[i];
 80     }
 81     sort(d+1, d+1+N);
 82     siz = unique(d+1, d+1+N)-d-1;
 83     for(i = 1; i <= N; i++)
 84         a[i] = lower_bound(d+1, d+1+siz, a[i])-d;
 85 
 86     lim = sqrt(N);
 87     for(i = 1; i <= N; i+=lim){
 88         bl[++cnt] = i;br[cnt] = min(N, i+lim-1);
 89         for(j = bl[cnt]; j <= br[cnt]; j++)
 90             pos[j] = cnt;
 91     }
 92 
 93     for(i = 1; i <= cnt; i++){
 94         add1(a[br[i]], 1);
 95         for(j = br[i]-1; j >= 1; j--){
 96             f[j][i] = f[j+1][i]+query1(a[j]-1);
 97             add1(a[j], 1);
 98         }
 99         for(j = br[i]; j >= 1; j--){
100             add1(a[j], -1);
101         }
102     }
103 
104     for(i = 1; i <= N; i++)
105         update(root[i-1], root[i], 1, N, a[i]);
106 
107 
108     scanf("%d", &M);
109     ans = 0;
110     while(M--){
111         scanf("%d %d", &L, &R);
112         L^=ans;R^=ans;
113         ans = 0;
114         if(L > R) {puts("0"); continue;}
115         if(pos[L] == pos[R]){
116             for(j = L; j <= R; j++){
117                 ans+=query2(a[j]+1);
118                 add2(a[j], 1);
119             }
120             for(j = L; j <= R; j++)
121                 add2(a[j], -1);
122         }
123         else{
124             if(br[pos[R]] == R){
125                 ans = f[L][pos[R]];
126             }
127             else{
128                 ans = f[L][pos[R]-1];
129                 x = br[pos[R]-1];
130                 if(x){
131                     for(j = x+1; j <= R; j++){
132                         ans+= getsum(root[L-1], root[x], 1, N, a[j]+1, N);
133                     }
134                     for(j = x+1; j <= R; j++){
135                         ans+=query2(a[j]+1);
136                         add2(a[j],1);
137                     }
138                     for(j = x+1; j <= R; j++)
139                         add2(a[j], -1);
140                 }
141             }
142         }
143         printf("%d\n", ans);
144     }
145     return 0;
146 }
View Code

 

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md 【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。 立即下载

相关推荐

高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

[BZOJ]3744: Gty的妹子序列 分块+树状数组+主席树

分块+树状数组+主席树

TYB的博客 623

数学建模入门——数据预处理(全)

介绍了数据预处理的入门知识

n04j04h06的博客 4347

bzoj3744 Gty的妹子序列

分块+树状数组+可持久化线段树

AaronPolaris 4168

5分钟搞懂超分算法:从插值到深度学习的实战对比(附Python代码)

本文系统对比了从传统插值到深度学习的主流超分算法,包括最近邻、双线性、双三次插值,以及基于边缘、统计模型和SRCNN、ESPCN、SRGAN等深度学习模型。通过实战代码和决策框架,帮助开发者根据图像质量、速度、资源等需求,快速选择最合适的超分辨率算法,实现从低清到高清的有效转换。

pp12345的博客 429

ADS 2013安装教程

1.2013和2014安装过程是一样的,运行ads2013_06_shp_windows文件进行安装 2.点击“NEXT”。 3.选择I accept,然后点击“NEXT”。 4.选择“complete”,然后点击“NEXT”。 5.选择安装路径,最好默认安装路径,安装路径不要有中文,然后点击“NEXT”。 6.点击“NEXT”. 7.如下路径默认安装,然后点击“NEXT”。 8.点击“NEXT”。 ...

谢谢关注“小鱼教你模数电”,各平台同号 6009

BZOJ 3744 Gty的妹子序列 分块+树状数组+主席树

这个做法是O(nnlogn)O(n\sqrt nlogn)O(nn​logn)的主席树… (其实还有不用主席树,只用分块+树状数组的O(nnlogn)O(n\sqrt nlogn)O(nn​logn),因为常数小,快了一倍) CODE #include <cmath> #include <cstdio> #include <cstring> #include &...

Ark 398

CANdelaStudio实战:如何用19服务快速编辑DTC快照数据(附Excel模板)

本文详细介绍了在CANdelaStudio中利用19服务高效编辑DTC快照数据的进阶技巧。通过导出DTC池至Excel进行批量编辑,结合‘Copy from DTC Pool’功能实现配置复用,并分享了构建自定义Excel模板与字段映射的实用方法,帮助工程师将繁琐的手动配置转化为工程化的批量处理,大幅提升诊断数据库开发效率。

weixin_29230773的博客 192

BZOJ 3744 Gty的妹子序列 (分块+树状数组+主席树)

题面传送门 题目大意:给你一个序列,多次询问,每次取出一段连续的子序列$[l,r]$,询问这段子序列的逆序对个数,强制在线 很熟悉的分块套路啊,和很多可持久化01Trie的题目类似,用分块预处理出贡献,而这道题是用可持久化线段树罢了 首先对序列分块,设块大小为$S$ 再建出主席树,我们就能在$O(logn)$时间内查询某个点$i$与区间$[l,r]$内的点产生的逆序对数量 然后处理...

weixin_30384031的博客 105

Flutter + shorebird 热更新+自定义cdn下载

本文介绍了如何优化Flutter热更新方案Shorebird在国内网络环境下的使用体验。Shorebird默认使用海外CDN存在下载慢、连接不稳定等问题,建议将补丁包上传至国内CDN(如阿里云OSS)。文章详细讲解了Shorebird环境配置、项目集成、构建发布流程,并重点说明了如何修改客户端代码实现自定义补丁下载逻辑。通过替换默认下载器,将补丁下载地址指向国内CDN,可显著提升下载速度和稳定性。这种方案既保留了Shorebird的热更新能力,又解决了国内网络环境下的痛点,适合国内企业部署使用。

sir_Hu的博客 772

手把手教你学Simulink——基于核能发电系统的场景实例:核电站汽轮机与发电机协调控制仿真

在核电机组中,汽轮机-发电机系统是将核能最终转化为电能的关键环节。与火电机组不同,核反应堆的热惯性大、功率调节慢,因此汽轮机的控制策略需与反应堆特性相匹配,实现安全、稳定、高效的能量转换。维持发电机输出功率/频率稳定(响应电网调度)调节汽轮机进汽压力(匹配一回路蒸汽供应)实现“堆-机协调控制”保障机组在启停、变负荷、甩负荷等工况下的安全性本教程将带你使用构建一个核电站汽轮机与发电机协调控制系统汽轮机调速系统(调门控制)建模发电机与电网接口建模(同步机)

MHD0815的博客 212

BZOJ 3744: Gty的妹子序列 【分块求区间逆序对】

题目分析: nn lognn\sqrt n~lognnn​ logn的分块(+树状数组预处理)+ 主席树维护区间值求散块 nnlognn\sqrt {nlogn}nnlogn​的分块+树状数组处理前i块小于j(及大于j)的数有多少个,相当于用分块代替了主席树。 nnn\sqrt nnn​的分块,其实可以使上面的方法最后处理散块的时候用散块之间桶排归并,散块自身预处理前缀和/后缀...

Master.Yi的博客 571

智能车图像处理22-进阶篇14--小s的判断

这篇文章中主要讲述智能车图像处理中 : 小s的判断方法。

taiyuezyh的博客 2573

bzoj 3744: Gty的妹子序列

Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦。 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成了一个序列,每个妹子有一个美丽度。 Bakser神犇与他打算研究一下这个妹子序列,于是Bakser神犇问道:"你知道区间 [l,r]中妹子们美丽度的逆序对数...

aoanping0730的博客 211

PreScan快速入门到精通第三十九讲基于车道线识别传感器的车道保持辅助算法Demo讲解

车道保持辅助系统使用一个前置的摄像头,一般安装在车内后视镜附近,用来检测车辆前方的车道线,并监测车辆在其车道上的位置。在有电动助力转向EPS的车辆中,它轻轻地,但明显地反转向,以保持车辆在车道上。在简单车辆动力学的Simulink模型中,一个25%的油门开度常数被设定为输入,作为车辆行驶的纵向动力。首先是近似的角度α,它是传感器航向(=车辆航向)与右侧车道车道线的切线的近似角。一个配备了车道线传感器和简单动力学模型的车辆(MAZDA),将在没有任何规定轨迹的情况下跟随道路车道线行驶。3D浏览器中的多视图。

小明师兄的博客 1843

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【bzoj3744】GTY的妹子序列

大力分块+树状数组+主席树…… #include<bits/stdc++.h> #define N 50005 #define pa pair<int,int> #define fi first #define sc second using namespace std; int n,m,cnt,tot,size,t; int a[N],c[N...

di679520024669的专栏 109

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

bzoj3744:Gty的妹子序列 (分块+树状数组)

题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3744 题目分析:一看这数据范围:50000,铁定分块+数据结构。然后本人开始YY,先离散化。记录g[i]为每一块内的逆序对个数(每一个g[i]可以用sqrt(n)*log(n)的时间搞定)。然后我们记录f[i][j]为第i块到第j块中的逆序对个数,很明显f[i][j]=g[i]+f[i

KsCla 939

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

BZOJ 3744 Gty的妹子序列 做法集结

我只会O(nnlogn)O(n\sqrt nlogn)O(nn​logn)的…搬来博客 要看O(nn)O(n\sqrt n)O(nn​)的戳这里(貌似只有代码) 貌似把块大小开成根号要12500ms,但是开成100只要9500ms… …常数问题 CODE #include <cmath> #include <cstdio> #include <cstring> ...

Ark 408

【bzoj3744】Gty的妹子序列 分块+树状数组+主席树

题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦。 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成了一个序列,每个妹子有一个美丽度。 Bakser神犇与他打算研究一下这个妹子序列,于是Bakser神犇问道:"你知道区间 [l,r]中妹子们美丽度的逆序对数吗?" 蒟蒻Au...

weixin_30793643的博客 127

BZOJ 3744: Gty的妹子序列

3744: Gty的妹子序列 Time Limit:20 SecMemory Limit:128 MBSubmit:1483Solved:425[Submit][Status][Discuss] Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦。 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发...

weixin_30730053的博客 132

BZOJ P3744 Gty的妹子序列

分块+树状数组+可持久化线段树 如果是离线求区间逆序对数(bzoj3289),可以用莫队+树状数组解决,这道题强制在线显然不能这样做 先考虑分块,f[i][j]表示第i块的起始位置到第j个点的逆序对数,这个可以用树状数组在O(n*sqrt(n)*logn)的复杂度预处理。 然后对于每次询问,如果左右端点在同一块内,树状数组暴力计算。 否则找到左端点后面第一个完整的块t,f[t][r]直接统

mdnd1234的博客 438
上一篇: BZOJ 3289: Mato的文件管理 【莫队 + 树状数组】
下一篇: BZOJ 4028: [HEOI2015]公约数数列 【分块 + 前缀GCD】
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值