bzoj3192
2024-10-19 02:18:40
把堆顶和堆顶接起来,然后用树状数组模拟即可
不得不说一开始我竟然把100000*100000当成不超出longint 而忘开int64,无药可救……
var a,b,c:array[..] of longint;
now,n1,n2,n,mid,i:longint;
ans:int64; procedure swap(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end; function lowbit(x:longint):longint;
begin
exit(x and (-x));
end; procedure add(x:longint);
begin
while x<=n do
begin
dec(c[x]);
x:=x+lowbit(x);
end;
end; function ask(x:longint):longint;
begin
ask:=;
while x> do
begin
ask:=ask+c[x];
x:=x-lowbit(x);
end;
end; procedure sort(l,r: longint);
var i,j,x,y: longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div ];
repeat
while a[i]<x do inc(i);
while x<a[j] do dec(j);
if not(i>j) then
begin
swap(a[i],a[j]);
swap(b[i],b[j]);
inc(i);
j:=j-;
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end; begin
readln(n1,n2);
n:=n1+n2;
for i:=n1 downto do
readln(a[i]);
for i:= to n2 do
readln(a[i+n1]);
now:=n1;
for i:= to n do
begin
b[i]:=i;
c[i]:=lowbit(i);
end;
sort(,n);
for i:=n downto do
begin
add(b[i]);
if b[i]>now then
ans:=ans+ask(b[i]-)-ask(now)
else
ans:=ans+ask(now)-ask(b[i]);
now:=b[i]-;
end;
writeln(ans);
end.
最新文章
- 【十大经典数据挖掘算法】Na&#239;ve Bayes
- 转载:JavaSE之反射
- asp.net 与数据库操作
- 用PHP获取系统时间时,时间比当前时间少8个小时
- css中的列表属性
- 查找指定表的字段not null约束,并生成删除Sql
- Linux学习笔记(7)-系统资源查看
- dtp--eclipse的安装数据源管理的一个插件的安装方法
- 使用httpModule做权限系统
- CentOS上编译安装Git
- jquery数字验证大小比较
- Redis进阶实践之十一 Redis的Cluster集群搭建
- 10 python 初学(Python 的编码解码)
- Ps去除背景
- ejs-模板
- HDU 3691 Nubulsa Expo(全局最小割)
- vcenter server appliance(vcsa) 配置IP的方法
- poj2828 Buy Tickets (线段树 插队问题)
- yum命令简介
- Laravel 根据任务的性质和要求决定处理的方式(Cron or Job)
热门文章
- Execution Contexts (执行上下文)
- Java设计模式03:常用设计模式之单例模式(创建型模式)
- python s12 day3
- maven 依赖冲突的问题
- 学习java随笔第一篇:搭建java平台(java se)
- SGU 117.Counting
- 第四篇、Tomcat 集群
- WARN [main] conf.HiveConf (HiveConf.java:initialize(1488)) - DEPRECATED
- 关于使用iframe标签自适应高度的使用
- 浏览器中的WebSocket(";ws://127.0.0.1:9988";);