Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块

3289: Mato的文件管理

Time Limit: 40 Sec  Memory Limit: 128 MB
Submit: 1539  Solved: 665
[Submit][Status][Discuss]

Description

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

Input

第一行一个正整数n,表示Mato的资料份数。
第二行由空格隔开的n个正整数,第i个表示编号为i的资料的大小。
第三行一个正整数q,表示Mato会看几天资料。
之后q行每行两个正整数l、r,表示Mato这天看[l,r]区间的文件。

Output

q行,每行一个正整数,表示Mato这天需要交换的次数。

Sample Input

4
1 4 2 3
2
1 2
2 4

Sample Output

0
2


HINT

 

Hint

n,q <= 50000

样例解释:第一天,Mato不需要交换

第二天,Mato可以把2号交换2次移到最后。

 

Source

By taorunz

 

题解:

多次查询,不修改,一看就是莫队。。。

每次交换相邻的元素,这不是逆序对吗。。。

于是,直接胡搞一个莫队+逆序对。。。

逆序对可以用树状数组维护,可以看一下我的上一篇博客http://www.cnblogs.com/Var123/p/5300334.html

Poj 2299就是求逆序对。(可以先做一下)

1A了很开心。。。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define MAXN 50010
 4 int N,sz[MAXN],color[MAXN],BIT[MAXN],pos[MAXN],ans1[MAXN];
 5 struct node
 6 {
 7     int l,r,id;
 8 }q[MAXN];
 9 int read()
10 {
11     int s=0,fh=1;char ch=getchar();
12     while(ch<'0'||ch>'9'){if(ch=='-')fh=-1;ch=getchar();}
13     while(ch>='0'&&ch<='9'){s=s*10+(ch-'0');ch=getchar();}
14     return s*fh;
15 }
16 bool cmp(node aa,node bb)
17 {
18     if(pos[aa.l]==pos[bb.l])return aa.r<bb.r;
19     return aa.l<bb.l;
20 }
21 int Lowbit(int o){return o&(-o);}
22 void Update(int o,int o1)
23 {
24     while(o<=N)
25     {
26         BIT[o]+=o1;
27         o+=Lowbit(o);
28     }
29 }
30 int Sum(int o)
31 {
32     int sum=0;
33     while(o>0)
34     {
35         sum+=BIT[o];
36         o-=Lowbit(o);
37     }
38     return sum;
39 }
40 int main()
41 {
42     int L,R,Q,i,ans,block,wz,tot;
43     N=read();
44     for(i=1;i<=N;i++)sz[i]=read(),color[i]=sz[i];
45     sort(sz+1,sz+N+1);
46     tot=unique(sz+1,sz+N+1)-(sz+1);
47     block=(int)sqrt(N);
48     Q=read();
49     for(i=1;i<=Q;i++)
50     {
51         q[i].l=read();q[i].r=read();q[i].id=i;
52     }
53     for(i=1;i<=N;i++)pos[i]=(int)(i-1)/block+1;
54     L=1;R=0;memset(BIT,0,sizeof(BIT));
55     sort(q+1,q+Q+1,cmp);
56     ans=0;
57     memset(ans1,0,sizeof(ans1));
58     for(i=1;i<=Q;i++)
59     {
60         while(L<q[i].l)
61         {
62             wz=lower_bound(sz+1,sz+tot+1,color[L])-sz;
63             Update(wz,-1);
64             ans-=Sum(wz-1);
65             L++;
66             //Update(wz,-1);
67         }
68         while(L>q[i].l)
69         {
70             L--;
71             wz=lower_bound(sz+1,sz+tot+1,color[L])-sz;
72             ans+=Sum(wz-1);
73             Update(wz,1);
74         }
75         while(R<q[i].r)
76         {
77             R++;
78             wz=lower_bound(sz+1,sz+tot+1,color[R])-sz;
79             ans+=(Sum(N)-Sum(wz));
80             Update(wz,1);
81         }
82         while(R>q[i].r)
83         {
84             wz=lower_bound(sz+1,sz+tot+1,color[R])-sz;
85             ans-=(Sum(N)-Sum(wz));
86             Update(wz,-1);
87             R--;
88         }
89         ans1[q[i].id]=ans;
90     }
91     for(i=1;i<=Q;i++)printf("%d\n",ans1[i]);
92     return 0;
93 }
View Code

 

转载于:https://www.cnblogs.com/Var123/p/5300860.html

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

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

相关文章

vs2010创建和使用动态链接库(dll)

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 本文将创建一个简单的动态链接库&#xff0c;并编写一个应用台控制程序使用该动态链接…

magenta内核与linux,谷歌将推出新操作系统Fuchsia:Magenta语言为内核

谷歌现在研发出来并且推出使用的系统有Chrome OS、Android和Chromecasts&#xff0c;这三者在操作系统的市场中占得份额很高&#xff0c;但是好像谷歌对此并不满意&#xff0c;因为有相关消息显示&#xff0c;谷歌正在研发新的操作系统Fuchsia&#xff0c;该系统采用Magenta语言…

BZOJ 1968: [Ahoi2005]COMMON 约数研究 水题

1968: [Ahoi2005]COMMON 约数研究 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id1968 Description Input 只有一行一个整数 N&#xff08;0 < N < 1000000&#xff09;。 Output 只有一行输出&#xff0c;为整数M…

VC内存对齐准则(Memory alignment)

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 本文所有内容在建立在一个前提下&#xff1a;使用VC编译器。着重点在于&#xff1a;VC…

mysql 主主互备实现

今天星期天&#xff0c;么事就写个MYSQL的主主架构的博客&#xff0c;原理如下图&#xff0c;不是我画的网上找的。主机作用操作系统mysql版本对应IPvip数据库mysqlA(主)centos6.4mysql 5.5.48192.168.48.129192.168.48.126mysqlB(备)centos6.4mysql 5.5.48192.168.48.132一&am…

动手实践 Linux VLAN - 每天5分钟玩转 OpenStack(13)

本节我们来看如何在实验环境中实施和配置如下 VLAN 网络 配置 VLAN 编辑 /etc/network/interfaces&#xff0c;配置 eth0.10、brvlan10、eth0.20 和 brvlan20。 下面用 vmdiff 展示了对 /etc/network/interfaces 的修改 重启宿主机&#xff0c;ifconfig 各个网络接口 用 brct…

Socket的3次握手链接与4次断开握手

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 连接握手&#xff1a; 1.客户端发送建立连接请求 &#xff08;发送请求&#xff09;2.…

Linux桌面需要强制访问控制,RHCSA 系列(十三): 在 RHEL 7 中使用 SELinux 进行强制访问控制...

RHCSA 认证&#xff1a;SELinux 精要和控制文件系统的访问尽管作为第一级别的权限和访问控制机制是必要的&#xff0c;但它们同样有一些局限&#xff0c;而这些局限则可以由安全增强 Linux(Security Enhanced Linux&#xff0c;简称为 SELinux)来处理。这些局限的一种情形是&am…

使用canvas实现擦玻璃效果

体验效果:http://hovertree.com/texiao/html5/25/效果图&#xff1a;代码如下&#xff1a; <!DOCTYPE html> <html> <head lang"zh"> <meta name"viewport" content"initial-scale1.0, maximum-scale1.0, user-scalableno, widt…

[转]opencv学习资料

转自&#xff1a;http://blog.csdn.net/poem_qianmo/article/details/20537737 1&#xff1a;Mat imread(const string& filename, intflags1 ); eg: Mat image0imread("dota.jpg",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);//载入最真实的图像 ge1i…

jQuery动态设置样式List item

前段时间&#xff0c;Insus.NET有修改一个功能《激活当前视图菜单高亮呈现》http://www.cnblogs.com/insus/p/5287093.html 今天Insus.NET想改用另外一个方法来实现&#xff0c;使用jQuery。在ASP.NET MVC 环境实现&#xff1a; 代码&#xff1a; <ul><li><a hr…

linux telnet 权限,允许telnet 通过root用户进行访问

允许telnet 通过root用户进行访问RHEL6:[rootclovem ~]# yum install telnet-server -y //安装telnet服务端[rootclovem ~]# cat /etc/xinetd.d/telnet //开启telnet的托管服务# default: on# description: The telnet server serves telnet sessions; it uses \#unencrypt…

TOUGHRADIUS 项目介绍

2019独角兽企业重金招聘Python工程师标准>>> TOUGHRADIUS 项目介绍 ToughRADIUS是一个开源的Radius服务软件&#xff0c;采用于 Apache License 2.0 许可协议发布&#xff0c;从创立之日起&#xff0c;他的宗旨就是服务于中小微ISP&#xff0c;让运营变得更简单。 T…

转:Jmeter 用户思考时间(User think time),定时器,和代理服务器(proxy server)...

在负载测试中需要考虑的的一个重要要素是思考时间&#xff08;think time&#xff09;&#xff0c; 也就是在两次成功的访问请求之间的暂停时间。 有多种情形挥发导致延迟的发生&#xff1a; 用户需要时间阅读文字内容&#xff0c;或者填表&#xff0c;或者查找正确的链接等。未…

linux sql语句传参数,Linux/Unixshell参数传递到SQL脚本

在数据库运维的过程中&#xff0c;Shell 脚本在很大程度上为运维提供了极大的便利性。而shell 脚本参数作为变量传递给SQL以及SQL脚本也是DB在数据库运维的过程中&#xff0c;Shell 脚本在很大程度上为运维提供了极大的便利性。而shell 脚本参数作为变量传递给SQL以及SQL脚本也…

Myeclipse5.5获取注册码

2019独角兽企业重金招聘Python工程师标准>>> import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class MyEclipseGen {private static final String LL "Decompiling this copyrighted software is a vi…

对互联网中常见地图的坐标系探讨

文章版权由作者李晓晖和博客园共有&#xff0c;若转载请于明显处标明出处&#xff1a;http://www.cnblogs.com/naaoveGIS/。 1.背景 目前项目中使用百度地图、高德地图、谷歌中国地图、天地图的需求越来越多&#xff0c;这里我跟大家一起对各地图使用的坐标系做一个简单的探讨。…

讯飞输入法有没有Linux,Debian testing 安装讯飞输入法 - Linux系统与应用 - LinuxApp - 水木社区...

突然发现Deepin发行版带有讯飞输入法&#xff0c;于是折腾了一会&#xff0c;安装好了这个输入法&#xff0c;现把安装过程分享如下&#xff1a;软件包的依赖&#xff1a;Package: iflyimeVersion: 0.9.962Section: develPriority: optionalArchitecture: amd64Depends: libboo…

HTTP必知必会

2019独角兽企业重金招聘Python工程师标准>>> HTTP消息HTTP请求消息HTTP响应消息消息首行请求行响应行消息头部请求头请求头消息正文请求正文响应正文Web服务器把接收到的HTTP请求消息封装成request对象&#xff0c;作为service的参数传入service函数&#xff0c;ser…

更新10_linux,时隔十年,QQ更新了Linux版本

昨天1024程序员节&#xff0c;QQ悄悄地更新了QQ for Linux&#xff0c;也许是给各位一个惊喜吧。官网及其的简陋。和一个Word文档似的。十年一更&#xff0c;有网友称&#xff0c;瞬间回到QQ2006&#xff0c;确实界面功能有些落后&#xff0c;相信QQ可以跟上潮流的&#xff0c;…