Luna likes Love 题解
简要题意
题目很清楚。
分析
定理
两个人中左边的人一直向右运动,和两人向中间走所用的
步数相同
证明
假设有两组人为 \(a_l , a_r , b_l , b_r (a_l < a_r , b_l < b_r)\)。
\(\textrm{I}.\) 当 \(a_r < b_l\)(两者互不相交) 时
如图:

显然成立。
$ \textrm{II}.$ 当 $a_l < b_l < a_r < b_r $(两者相交) 时
如图:

假设先走 \(a\),此时 \(ans += a_r - a_l\)。
再走 \(b\),此时 \(ans += b_r - b_l - 1\)(中间有一个 \(a_l\) 已经走完)。
最后 \(ans = (b_r - b_l) + (a_r - a_l) - 1\)。
再考虑将 \(a\) 两端走到 \(b\) 之间的情况(略,和上面的方法一样)。
$ \textrm{III}.$ 当 \(a_l < b_l < b_r < a_r\)(两者包含)时
略(并不难证和情况 \(2\) 证明方法一样)。
综上,证明得证。
此时题目就很简单了。
最终实现
那么就可以贪心的让区间短的先走就行了(因为先走小的,大的区间距离会减小;反之,则不行)。
那就只需要用树状数组记录其中的已消失的数,统计答案时减去区间已消失的数。
code
#include <bits/stdc++.h>
using namespace std;
using ll = long long ;
const int N = 5e5 + 5 ;
int n;
struct REN{
int first,last;
int len;
bool operator<(const REN&x)const{return len<x.len;}
}p[N];
ll ans;
struct FenwickTree{
private:
ll t[N<<1];
int lowbit(int x){return x&-x;}
public:
void add(int x,int val){for(;x<=n*2;x+=lowbit(x))t[x]+=val;}
ll ask(int x){ll ans=0;for(;x;x-=lowbit(x))ans+=t[x];return ans;}
}t;
int main(){
scanf("%d",&n);
for(int i=1,x;i<=2*n;i++){
scanf("%d",&x);
if(!p[x].first)p[x].first=i;
else p[x].last=i;
p[x].len=p[x].last-p[x].first; // 记录区间长度和头和尾
}
sort(p+1,p+n+1);//贪心
for(int i=1;i<=n;i++){
ans+=p[i].len-t.ask(p[i].last)+t.ask(p[i].first-1);//减去已经消失的
t.add(p[i].first,1);
t.add(p[i].last,1);// 记录这个人已经消失
}
printf("%lld",ans);
return 0;
}
Luna likes Love 题解的更多相关文章
- Codeforces Round #631 (Div. 1) B. Dreamoon Likes Sequences 题解(思维+求贡献)
题目链接 题目大意 让你构造一个严格单调上升的数组a满足\(1<=a_1<a_2<....a_n<=d\) 而且要使得这个数组的异或前缀和也满足严格单调上升,求有多少个满足条件 ...
- Codeforces Round #631 div1C(或者div2E) Drazil Likes Heap 题解
题目链接:https://codeforces.com/contest/1329/problem/C 或者:https://codeforces.com/contest/1330/problem/E ...
- HDU5597/BestCoder Round #66 (div.2) GTW likes function 打表欧拉函数
GTW likes function Memory Limit: 131072/131072 K (Java/Others) 问题描述 现在给出下列两个定义: f(x)=f_{0}(x)=\ ...
- HDU 5597 GTW likes function 打表
GTW likes function 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5596 Description Now you are give ...
- HDU 5596 GTW likes gt 倒推
GTW likes gt 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5596 Description Long long ago, there w ...
- GTW likes math(简单数学)
GTW likes math Accepts: 472 Submissions: 2140 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- 洛谷P2891 Dining P1402 酒店之王【类二分图匹配】题解+代码
洛谷P2891 Dining P1402 酒店之王[类二分图匹配]题解+代码 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的 ...
- Educational Codeforces Round 13 A. Johny Likes Numbers 水题
A. Johny Likes Numbers 题目连接: http://www.codeforces.com/contest/678/problem/A Description Johny likes ...
- 2016级算法第六次上机-G.ModricWang likes geometry
1116 ModricWang likes geometry 思路 难题,非常考察几何知识,放在这里作为计算几何场次的最难的题. 原题地址 原版题解 代码
- Codeforces Round #177 (Div. 2) 题解
[前言]咦?如今怎么流行打CF了?于是当一帮大爷在执着的打div 1的时候,我偷偷的在刷div 2.至于怎么决定场次嘛.一般我报一个数字A,随便再拉一个人选一个数字B.然后開始做第A^B场.假设认为机 ...
随机推荐
- macOS使用CodeRunner快速配置fortran环境
个人网站:xzajyjs.cn 由于一些项目的缘故,需要有fortran的需求,但由于是M1 mac的缘故,不能像windows那样直接使用vs+ivf这种经典配置.搜了一下网上主流的跨平台方案,主要 ...
- Counter函数
构造一个空Counter import collections c = collections.Counter() c.update('abcdaab') print(c) # Counter({'a ...
- 【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
问题描述 当 Azure Web App 进行安全扫描后,发现依旧支持很多弱TLS加密套件(Weak TLS Ciphers Suite),那么是否有办法来关闭这些弱的加密套件呢? 在Windows ...
- linux基本知识汇总1(基础命令) 20000字汇总
$$$$ 命令选项查看方式1.内建命令(help)格式: help + 内建命令#### help 命令 // 命令使用说明 2.外部命令(–help)一般是 Linux 命令自带的帮助信息,并不是所 ...
- C++ STL 容器 list类型
C++ STL 容器 list类型 list对于异常支持很好,要么成功,要么不会发生什么事情 以下是 std::list 在异常处理方面表现良好的几个原因: 动态内存管理:std::list 使用动态 ...
- 四: Mysql用户管理
# 用户与权限管理 MySQL用户可以分为普通用户和root用户, root用户是超级管理员,拥有所有权限,包括创建用户.删除用户和修改用户的密码等管理权限:普通用户只拥有被授予的各种权限. MySQ ...
- SpringCloud Ribbon和Feign 的使用和源码分析
1. Ribbon 介绍 Ribbon 是 Netflix 公司开源的一款 客户端 负载均衡软件,并被SpringCloud集成 作为SpringCloud 负载均衡的工具 服务端负载均衡 : 即在服 ...
- jenkins 上传文件参数
注意:文件参数不支持Jenkins流水线 文件上传以后会上传至 workspace 里对应的project下面,但是文件会被重命名为File location(设置路径)输入库的值, 如果在jenki ...
- 用CFF Explorer隐藏文件格式
1.首先我们加载两个PNG文件,可以看到 文件格式头部是一样的,我们如何将一个PDF文件格式改成PNG,修改之后的文件虽然含有图片的文件头格式,但是并不能打开. 将PNG的文件头复制写入到PDF文件头 ...
- 码上掘金 里面 嵌入自定义组件,可以用做组件demo演示
查看代码片段 https://code.juejin.cn/pen/7128211910696108066 需求 将写的组件演示出来,默认 码上掘金 不能 嵌入组件. 解决问题 选择自定义模板,所有代 ...