vijos P1459车展
描述
遥控车是在是太漂亮了,韵韵的好朋友都想来参观,所以游乐园决定举办m次车展。车库里共有n辆车,从左到右依次编号为1,2,…,n,每辆车都有一个展台。刚开始每个展台都有一个唯一的高度h[i]。主管已经列好一张单子:
L1 R1
L2 R2
…
Lm Rm
单子上的(Li,Ri)表示第i次车展将要展出编号从Li到Ri的车。
为了更加美观,展览时需要调整展台的高度,使参展所有展台的高度相等。展台的高度增加或减少1都需花费1秒时间。由于管理员只有一个人,所以只好对每个展台依次操作。每次展览结束后,展台高度自动恢复到初始高度。
请告诉管理员为了举办所有展览,他最少需要花多少时间将展台调整好。
格式
输入格式
第一行为两个正整数n、m。
第二行共n个非负整数,表示第i辆车展台的高度h[i]。
接下来m行每行2个整数Li、Ri(Li≤Ri)。
输出格式
一个正整数,调整展台总用时的最小值。
限制
各个测试点1s
提示
对于50%的数据 n≤500,m≤1000;
对于80%的数据 n≤1000,m≤100000;
对于100%的数据n≤1000,m≤200000;
答案在2^64以内。
附上一组测试数据
输入
10 10
28 5 10 16 24 14 7 15 20 0
1 7
2 4
9 10
9 10
8 9
3 6
7 10
3 9
4 7
6 10
输出
222
AC代码1:
| 消耗时间 | 2762 ms |
| 消耗内存 | 572 KiB |
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define ll long long
using namespace std;
const int N=1e3+;
int n,m,a[N],d[N];
ll tot=;
inline const int read(){
register int x=,f=;
register char ch=getchar();
while(ch>''||ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
inline int abs(int x){
return x>?x:-x;
}
int main(){
n=read();m=read();
for(int i=;i<=n;i++) a[i]=read();
memcpy(d,a,sizeof a);
for(int i=,l,r,mid;i<=m;i++){
l=read();r=read();mid=l+r>>;
nth_element(a+l,a+mid,a+r+);
ll t1=;
for(int j=l;j<=r;j++) t1+=abs(a[j]-a[mid]);
tot+=t1;
memcpy(a,d,sizeof d);
}
cout<<tot;
return ;
}
AC代码2:
| 消耗时间 | 576 ms |
| 消耗内存 | 1564 KiB |
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int N=<<;
const int M=N*;
int sum[M],ls[M],rs[M];
int T[N],num[N],a[N],san[N],tot;
inline const int read(){
register int x=,f=;
register char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
void build(int &rt,int l,int r){
rt=++tot;
sum[rt]=;
if(l==r) return ;
int mid=(l+r>>);
build(ls[rt],l,mid);
build(rs[rt],mid+,r);
}
void updata(int &rt,int last,int p,int l,int r){
rt=++tot;
ls[rt]=ls[last];
rs[rt]=rs[last];
sum[rt]=sum[last]+;
if(l==r) return ;
int mid=(l+r>>);
if(p<=mid)
updata(ls[rt],ls[last],p,l,mid);
else
updata(rs[rt],rs[last],p,mid+,r);
}
int query(int l,int r,int x,int y,int k){
if(l==r) return l;
int mid=(l+r>>);
int cnt=sum[ls[y]]-sum[ls[x]];
if(k<=cnt)
return query(l,mid,ls[x],ls[y],k);
else
return query(mid+,r,rs[x],rs[y],k-cnt);
}
ll total;
int main(){
int n=read(),m=read();
for(int i=;i<=n;i++) san[i]=num[i]=a[i]=read();
stable_sort(san+,san+n+);
int cnt=unique(san+,san+n+)-(san+);
build(T[],,cnt);
for(int i=;i<=n;i++) num[i]=lower_bound(san+,san+cnt+,num[i])-san;
for(int i=;i<=n;i++) updata(T[i],T[i-],num[i],,cnt);
for(int i=;i<=m;i++){
int x=read(),y=read(),k=(y-x>>)+;
int id=query(,cnt,T[x-],T[y],k);
int smid=san[id];
ll t1=;
for(int j=x;j<=y;j++) t1+=abs(a[j]-smid);
total+=t1;
}
printf("%lld",total);
return ;
}
vijos P1459车展的更多相关文章
- vijos P1459 车展(Treap,中位数)
P1459车展 描述 遥控车是在是太漂亮了,韵韵的好朋友都想来参观,所以游乐园决定举办m次车展.车库里共有n辆车,从左到右依次编号为1,2,…,n,每辆车都有一个展台.刚开始每个展台都有一个唯一的 ...
- Vijos P1459 车展 treap求任意区间中位数
描述 遥控车是在是太漂亮了,韵韵的好朋友都想来参观,所以游乐园决定举办m次车展.车库里共有n辆车,从左到右依次编号为1,2,…,n,每辆车都有一个展台.刚开始每个展台都有一个唯一的高度h[i].主管已 ...
- Vijos P1459 车展 (treap 任意区间中位数)
题面: 描述 遥控车是在是太漂亮了,韵韵的好朋友都想来参观,所以游乐园决定举办m次车展.车库里共有n辆车,从左到右依次编号为1,2,…,n,每辆车都有一个展台.刚开始每个展台都有一个唯一的高度h[i] ...
- 车展(vijos P1459)
描述 遥控车是在是太漂亮了,韵韵的好朋友都想来参观,所以游乐园决定举办m次车展.车库里共有n辆车,从左到右依次编号为1,2,…,n,每辆车都有一个展台.刚开始每个展台都有一个唯一的高度h[i].主管已 ...
- Vijos——T1406 拉力赛
https://vijos.org/p/1460 描述 车展结束后,游乐园决定举办一次盛大的山道拉力赛,平平和韵韵自然也要来参加大赛. 赛场上共有n个连通的计时点,n-1条赛道(构成了一棵树).每个计 ...
- 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- vijos P1780 【NOIP2012】 开车旅行
描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
随机推荐
- Ubuntu安装gnome-shell桌面环境
1.sudo apt-get install gnome-shell 输入命令直接回车就行了 2.出现了这个问题 Unable to locate package ?? sudo apt-get up ...
- servlet的多线程并发问题
package gz.itcast.e_thread; import java.io.IOException; import javax.servlet.ServletException; impor ...
- [Windows Server 2008] IIS自带FTP配置方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:IIS自带FT ...
- CAD绘制一个箭头(com接口)
1 2 3 4 5 6 7 8 //绘制一个箭头 axMxDrawX1.PathMoveToEx(1000, 300, 10, 10, 0); //设置路径下一点 axMxDrawX1.Path ...
- Django - 模版语言循环字典
1.可以对传入字典参数做循环显示 views.py中代码: urls.py中代码: html中代码: 在模版语言中,可以对字典进行类似python中的操作(keys,values,items),需要注 ...
- Uedior上传大文件超时报错
出错原因: 1.php超时等待时间太短 2.uedior中设置了请求超时,提示信息: 上传失败,请重试 先解决第一个问题: 设置php.ini中的max_execution_time 为0 (意思是h ...
- HDU-4055 Number String 动态规划 巧妙的转移
题目链接:https://cn.vjudge.net/problem/HDU-4055 题意 给一个序列相邻元素各个上升下降情况('I'上升'D'下降'?'随便),问有几种满足的排列. 例:ID 答: ...
- js兼用性
1.document.formName.item("itemName") 问题 说明:IE下,可以使用document.formName.item("itemName&q ...
- Scrapy实战:使用IDE工具运行爬虫
一般我们运行爬虫程序都是使用命令行,比如:scrapy crwal sobook.不过这多少有些不方便,可以使用下面的方法使用IDE的方式运行爬虫 我这边使用的是pycharm软件,在pycharm里 ...
- Sessions共享技术设计
概述 分布式session是实现分布式部署的前提, 当前项目由于历史原因未实现分布式session, 但是由于在kubernets中部署多个pod时, 负载均衡的调用链太长, 导致会话不能保持, 所以 ...