BZOJ 3289 Mato的文件管理 [ 离散化+莫队算法+线段树 ]

Vast.ai GPU服务器租用与SSH密钥连接实战指南 本文详细介绍了如何在Vast.ai平台租用GPU服务器并通过SSH密钥安全连接的全流程。从注册、选配GPU型号到SSH密钥生成与配置,再到实战中的端口转发和文件传输技巧,帮助用户高效利用云端GPU资源进行深度学习等计算密集型任务。 阅读详情

题意:给出N个数,以及Q个询问区间,每次询问你需要输出:令这个区间变为有序的最小步数。其中,每一步你可以让两个相邻的数交换。

范围:N,Q<=5W 

解法:由于不知道每个数的范围,直接离散化,且分析最后答案不会暴int。

  然后进一步分析,可以较容易的发现:

  每次我在原有的有序序列最右端添加一个数X的话,增加的步骤数是:原序列中比X大的数。

  每次我在原有的有序序列最右端删除一个数X的话,减小的步骤数是:原序列中比X大的数。

  每次我在原有的有序序列最左端添加一个数X的话,增加的步骤数是:原序列中比X小的数。

  每次我在原有的有序序列最左端删除一个数X的话,减小的步骤数是:原序列中比X小的数。

故而可以考虑莫队算法,每次转移的复杂度为 logN (用线段树求解原序列中比X大或者小的数目),整体复杂度为 O( N*sqrt(N)*log(N))。

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<bitset>
#pragma comment(linker, "/STACK:1024000000,1024000000")
template <class T>
bool scanff(T &ret){ //Faster Input
    char c; int sgn; T bit=0.1;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&c!='.'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    if(c==' '||c=='\n'){ ret*=sgn; return 1; }
    while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
    ret*=sgn;
    return 1;
}
#define inf 1073741823
#define llinf 4611686018427387903LL
#define PI acos(-1.0)
#define lth (th<<1)
#define rth (th<<1|1)
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define drep(i,a,b) for(int i=a;i>=b;i--)
#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)
#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)
#define mem(x,val) memset(x,val,sizeof(x))
#define mkp(a,b) make_pair(a,b)
#define findx(x) lower_bound(b+1,b+1+bn,x)-b
#define pb(x) push_back(x)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int NN =50050;

int a[NN],b[NN],bn,belong[NN],ans[NN];
int n,qn,m,sum;
struct query{
    int l,r,idx;
}q[NN];
bool cmp(query x,query y){
    if(belong[x.l]==belong[y.l])return x.r<y.r;
    else return x.l<y.l;
}
struct node{
    int val;
}t[270000];
void built(){
    for(m=1;m<n+2;m<<=1);
    rep(i,1,m<<1)t[i].val=0;
}
void add(int pos,int v){
    for(pos=m+pos;pos>0;pos>>=1)
        t[pos].val+=v;
}
int query(int l,int r){
    int ans=0;
    if(r<l)return 0;
    for(l=l+m-1,r=r+m+1;l^r^1;l>>=1,r>>=1){
        if(~l&1) ans+=t[l^1].val;
        if(r&1)  ans+=t[r^1].val;
    }
    return ans;
}
void init(){
    bn=n;
    sum=0;
    built();
    rep(i,1,n)scanff(a[i]),b[i]=a[i];
    sort(b+1,b+1+bn);
    bn=unique(b+1,b+1+bn)-b-1;
    rep(i,1,n)a[i]=findx(a[i]);
    int block=sqrt(n);
    rep(i,1,n)belong[i]=(i-1)/block+1;
    scanff(qn);
    rep(i,1,qn){
        scanff(q[i].l);
        scanff(q[i].r);
        q[i].idx=i;
    }
    sort(q+1,q+1+qn,cmp);
}
void updater(int val,int add){
    if(add==1)sum+=query(val+1,bn);
    else sum-=query(val+1,bn);
}
void updatel(int val,int add){
    if(add==1)sum+=query(1,val-1);
    else sum-=query(1,val-1);
}
void solve(){
    int l=1,r=0;
    rep(i,1,qn){
        for(;r<q[i].r;r++)add(a[r+1],1),updater(a[r+1],1);
        for(;r>q[i].r;r--)add(a[r],-1),updater(a[r],-1);
        for(;l<q[i].l;l++)add(a[l],-1),updatel(a[l],-1);
        for(;l>q[i].l;l--)add(a[l-1],1),updatel(a[l-1],1);
        ans[q[i].idx]=sum;
    }
    rep(i,1,qn)printf("%d\n",ans[i]);
}
int main(){
    while(scanf("%d",&n)!=EOF){
        init();
        solve();
    }
    return 0;
}




图形引擎实战:镭射效果制作分享 该方案的优势1.遵循物理的2.可以使用少量的参数去调控镭射的效果。计算相对简单,缺点仍是颜色不能够自定义,还有一种常见的方案是采样一张镭射贴图来模拟,好处是颜色可以自定义同时性能上还很高效没有复杂的公式计算。我查阅了网上普遍的方案,常见的做法是制作一个Ramp图生成工具,然后将生成好的ramp图赋给材质。这两个方案的好处是美术同学可以手动的去控制镭射的颜色。最后就是Shader中对Ramp图的采样的部分,Ramp图的UV坐标是使用fresnel作为Ramp的U轴坐标,0.5作为V轴坐标。 阅读详情

相关推荐

视觉检测在激光打码字符检测上的检测案例

在机器视觉检测技术中,OCR识别是比较典型的应用,应用的场景也比较丰富,基本上在制造业,每个工厂或者印刷厂都会用到视觉OCR识别检测,OCR字符识别的原理很简单,通过图像分割后,对字符进行学习、命名。在工业相机拍摄图像后,软件进行处理,从而读取结果。 随着技术的发展,激光打标技术被更多的应用在生产过程中,由激光打标代替油墨进行字符印刷,速度更快、效果更好。 但是随之而来的是在视觉检测上带来的影响,目前市面上应用的字符检测设备大多是由集成商单独开发的软件,在检测油墨印刷时,图像上的字符没有断点,非常连贯,所需

视觉检测设备-视觉检测系统-单张检测设备-卷料印品检测 1463

HDU4358【离散化+DFS序+莫队算法】

思路: 这个DFS序还是蛮有意思的~然后就可以把以u为根的树的状态直接转化到区间(一维数组)上,而且数组是不大的。 然后就变成了区间处理,套一下莫队就好了。 Code:#include<bits/stdc++.h> using namespace std; typedef long long LL;#define mem(a, b) memset(a, b, sizeof(a)) const

ONE MORE TRY 612

ComfyUI 的 LoRA 训练:秋叶 LoRA-scripts 参数设置与测试方法详解

秋叶 LoRA-scripts 的参数设置需结合理论(如模型原理、优化器机制)和硬件条件(显存、算力),新手可先按推荐值起步,再逐步调整。测试时,loss 值帮你判断训练是否正常,XYZ 图表法帮你找到最佳使用参数。掌握这些知识,你就能避开 LoRA 训练的常见坑,从 “盲目调参” 变为 “精准训练”。

2301_78150483的博客 2402

[hdoj6483][莫队+线段树/ST]

A Sequence Game Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 712Accepted Submission(s): 114 Problem Description One day, WNJXYK f...

aiyuneng5167的博客 195

移动通信基础(13)TDL、CDL、信道相关性

参考《U型槽无线信道多径传播特性测量与建模方法的研究》、《5G信号源中的信道模拟与仿真研究》衰落衰落理解为信号幅度在时间和频率上的不断波动,是无线信道一个重要的恶化特性。信道幅度恶化的两个主要来源分别是加性噪声和信号衰落,高斯白噪声信道模型就是典型的加性噪声,信号衰落引起的是乘性的信号扰动,与加性噪声从原理上完全不同。信道的频率选择性衰落组为无线信道的重要特征之一,是人们进行无线系统设计考虑的重要因素,决定了导频隔间的大小。...

tybAly的博客 2万+

华为鸿蒙系统也能用!5分钟搞定谷歌三件套安装(附最新APK下载链接)

本文为华为鸿蒙系统用户提供了一份详尽的谷歌三件套(Google Play服务、商店及框架)手动安装指南。文章核心在于无需Root,通过ADB命令获取设备信息,并从可靠来源下载匹配版本的APK,按照正确顺序安装,从而解决海外应用依赖问题,实现5分钟快速部署。

c7d8e9的博客 6513

Codeforces 633H. Fibonacci-ish II (Mo's Algorithm(莫队算法) + 线段树 + 离散化)

题意: 给定一个长度最大为3万的序列,和最多3万个询问,每个询问问某区间[L,R]里的数,去掉重复然后排序之后,依次乘上斐波那契数列然后求和,结果对m取余的值。 区间优化用Mo's Algorithm(莫队算法),莫队算法的Add和Remove中使用线段树,所以整体复杂度是O(n*sqrt(n)*log2(n)). 这题一路TLE,从TLE26到TLE27到TLE29到TLE35都快绝

岩之痕 3136

openpi 入门教程(二)droid libero 训练、推理

OpenPI是由物理智能团队发布的机器人领域开源模型与软件平台,提供基于流扩散式(π₀)和自回归式(π₀-FAST)两类视觉-语言-动作模型。平台支持在DROID、ALOHA、UR5等多种机器人系统上部署,包含预训练检查点(1万+小时数据)和微调示例。文档详细说明了各平台部署流程:DROID需启动策略服务器并配置摄像头;ALOHA提供真实机器人任务(取吐司、叠毛巾等)的检查点和场景设置建议;UR5示例展示自定义数据转换方法。实验性验证显示π₀-FAST在LIBERO基准测试中平均得分85.5。平台强调模型适

2506_90492529的博客 1023

BZOJ3289【莫队算法+树状数组+离散化(附小模板)】

interesting~

ONE MORE TRY 837

GIS数据处理-使用PostGIS+QGIS

GIS数据处理1-使用PostGIS+QGIS 介绍 这里我遇到了一个需求,需要将SQLite的.db数据库中GIS数据导出成shapefile文件 数据库的表结构如下所示,这里存储的是wkt格式的矢量数据 WKT与WKB格式介绍 OpenGIS 规范定义了两种表示空间对象的标准方式:Well-Know Text (WKT) 形式和Well-Known Binary(WKB) 形式。WKT 和 WKB 都包含矢量几何要素的对象类型和构成对象的坐标的信息。WKT可读性强,更方便阅读识别,而在实际数据传输和存

孙霸天的专栏 2528

基于Matlab的磁力计校准(附源码)

磁力计沿传感器的 X、Y 和 Z 轴检测磁场强度。精确的磁场测量对于传感器融合以及确定航向和方向至关重要。为了用于航向和方向计算,需要校准典型的低成本MEMS磁力计,以补偿环境噪声和制造缺陷。一、理想磁力计理想的三轴磁力计沿正交 X、Y 和 Z 轴测量磁场强度。在没有任何磁干扰的情况下,磁力计读数测量地球磁场。如果在传感器通过所有可能的方向旋转时进行磁力计测量,则测量值应位于球体上。球体的半径是磁场强度。要生成磁场样本,请使用对象。出于这些目的,可以安全地假设每个方向的角速度和加速度为零。

珞瑜的博客 4520

nbut1457 Sona 【莫队算法+离散化】

map离散化会超时 答案会爆int,long long 输出控制为%I64d #include<algorithm> #include<iostream> #include<string.h> #include<stdio.h> #include<math.h> #include<map> using namespace std; typedef long long ll; const int N=

禅境花园 578

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

bzoj3289 Mato的文件管理

(http://www.elijahqi.win/2017/07/06/bzoj3289-mato%E7%9A%84%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86/) Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号。为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访...

Elijahqi 262

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC中sqlite的使用

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

bzoj 3289: Mato的文件管理

DescriptionMato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号。为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问。Mato每天随机选一个区间[l,r],他今天就看编号在此区间内的这些资料。Mato有一个习惯,他总是从文件大小从小到大看资料。他先把要看的文件按编号顺序依次拷贝出来,再用他写的排序程序给文件大小排序

Time_major 856

OV9734 DATASHEET,完整规格书

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

BZOJ 3289 Mato的文件管理(莫队+离散化求逆序数)

3289: Mato的文件管理 Time Limit:40 SecMemory Limit:128 MB Submit:2171Solved:891 [Submit][Status][Discuss] Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号...

weixin_30583563的博客 68

【BZOJ3289】Mato的文件管理-莫队算法+树状数组

测试地址:Mato的文件管理 做法:本题需要用到莫队算法+树状数组。 在想区间维护之前,首先要思考这个最小交换次数到底是个什么东西。实际上,答案就是这个区间中的逆序对数。我们现在证明一下这个结论。 我们知道排完序后逆序对数为000,而且只有这样的一个状态逆序对数才有可能为000,而其他状态都是有逆序对的。显然对于这些状态一定存在一个iii使得Ai&gt;Ai+1Ai&gt;Ai+1A_i>A...

Maxwei_wzj的OI世界 347

[Bzoj3289]Mato的文件管理(莫队 + 树状数组)

3289: Mato的文件管理 Time Limit:40 SecMemory Limit:128 MBSubmit:3681Solved:1496[Submit][Status][Discuss] Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号。为了防止他人偷拷,这...

weixin_30374009的博客 107

BZOJ 3289 Mato的文件管理(莫队+线段树/树状数组)

题意: 思路: 莫队+逆序数,思路还是很好想的,但是复杂度要纠结下。 对于[L,R]来说,向右边扩展,即变成了[L,R+1],就相当于只是在数组末端多了一个数,其他的操作也是同理,只要遵循,改变区间的时候,加上/减去比自己大的值即可 复杂度是莫队的o(nn‾√n\sqrt{n})乘以树状数组或者线段数查询的一个o(log(nn‾√)log(n\sqrt{n})) 错误及反思: 题目

Roll_Keyboard的博客 447

BZOJ3289 Mato的文件管理(莫队算法+树状数组)

题目是区间逆序数查询。 莫队算法。。左或右区间向左或右延伸时加或减这个区间小于或大于新数的数的个数,这个个数用树状数组来统计,我用线段树超时了。询问个数和数字个数都记为n,数字范围不确定所以离散化,这样时间复杂度就是$O(n^{\frac32}\log{n})$ 1 #include<cstdio> 2 #include<cstring> 3 #inclu...

weixin_30649641的博客 67

permu:莫队+线段树

这道题是几天前水过去的,现在快没印象了,水一发。 首先我们看到它让求解的是最长的值域 连续段长度,很好。 然后就想到了山海经,但但是我还没有做。 然后又想到了很久以前的一次考试的T3旅馆hotel(我是用暴力直接过的QAQ),正解也是线段树。 但是我还是想不到用线段树,因为我单纯的认为当前在学莫队就只会用到莫队。 后来还是问了同学。 然后就很简单了。 我们考虑询问区间的...

weixin_30670965的博客 280

NBUT 1457 (莫队算法 离散化)

题目链接:点击打开链接 [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the zither. Sona can't speak but she can make fancy music. Her mu

morejarphone~ 560

2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest G题: Garden Gathering [线段树/最小曼哈顿距离生成树]

在求解曼哈顿最小距离生成树的时候,有一个求解在曼哈顿距离意义下的最近点对的过程,和这个原理相同,可以求解在这张图意义下的最远点对。

Asuna_acmer 1704

FZU 2201 序列操作 [线段树]

维护差分序列,将成段更新转换为单点更新,如此就能维护并询问区间GCD

Asuna_acmer 913

2014-2015 ACM-ICPC, Asia Tokyo Regional Contest G題:Flipping Parentheses [线段树]

给出N个括号,一开始是匹配的,然后M次操作,每次操作会把某个位置Pi的括号换个方向,这样就不合法了,我们需要把它再变得合法,输出一个最左边的需要翻转的括号的位置,每一个操作都是在上一个操作基础上进行的。

Asuna_acmer 880

HDU 5293 Tree chain problem [树链剖分+线段树+树形DP]

给出N个点的树,M条树链,树链有权,问在取出的树链互不相交的情况下,权值和最大是多少。

Asuna_acmer 795

BZOJ 8843 染色 [树链剖分+区间线段树]

给出一个树,树上每个点有颜色,两种操作:1)将路径,<X,Y> 上的点颜色全部改成C ;2)询问路径<X,Y> 上的颜色段数,11221为3段。

Asuna_acmer 633
上一篇: HDU 5428 The Factor
下一篇: BZOJ 2038 小Z的袜子(hose)
GrassTreeFlower
博客等级 码龄11年 14粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值