二维偏序(逆序对)

因为风速vf,-w<=vf<=w,因此我们可以算出每一艘船到达原点的时间的取值范围

即取vf=w和vf=-w时,记ai为当vf=w时的用时,记bi为当vf=-w时的用时

所以现在问题转化:为每一元素有两个值ai和bi,求有多少对下标i,j满足a[i]<=a[j]且b[i]>=b[j]

这就是求二维偏序

将每一个元素以a升序为第一关键字,b降序为第二关键字,然后求b的逆序对即可

求逆序对用归并排序

#include <bits/stdc++.h>
using namespace std;
int n,w;
long long ans;
double a[100010],b[100010];
struct node
{
int f,x,v;
double a,b;
}sh[100010];
double m_abs(double x)
{
if (x<0)
return -x;
else
return x;
}
bool cmp(node x,node y)
{
return (x.a<y.a || (x.a==y.a && x.b>y.b));//先排序
}
void m_sort(int l,int r)//归并排序
{
if (l==r)
return;
int mid;
mid=(l+r)/2;
m_sort(l,mid);
m_sort(mid+1,r);
int ll,rr,now;
now=0;
ll=l;
rr=mid+1;
while (ll<=mid && rr<=r)
{
if (a[ll]<a[rr])
{
now++;
b[now]=a[ll];
ll++;
}
else
{
now++;
b[now]=a[rr];
rr++;
ans+=(long long)mid-ll+1;//统计逆序对
}
}
for (int i=ll;i<=mid;i++)
{
now++;
b[now]=a[i];
}
for (int i=rr;i<=r;i++)
{
now++;
b[now]=a[i];
}
for (int i=1;i<=now;i++)
{
a[l+i-1]=b[i];
}
}
int main()
{
scanf("%d%d",&n,&w);
for (int i=1;i<=n;i++)
{
scanf("%d%d",&sh[i].x,&sh[i].v);
if (sh[i].x>0)
sh[i].f=1;
}
for (int i=1;i<=n;i++)//a表示当vf=w时的用时,b表示当vf=-w时的用时
{
if (sh[i].f==0)
{
sh[i].a=m_abs((sh[i].x*1.0)/((sh[i].v+w)*1.0));
sh[i].b=m_abs((sh[i].x*1.0)/((sh[i].v-w)*1.0));
}
else
{
sh[i].b=m_abs((sh[i].x*1.0)/((sh[i].v-w)*1.0));
sh[i].a=m_abs((sh[i].x*1.0)/((sh[i].v+w)*1.0));
}
}
sort(sh+1,sh+1+n,cmp);
for (int i=1;i<=n;i++)
a[i]=sh[i].b;//求b的逆序对
m_sort(1,n);
printf("%lld\n",ans);
}

CF957E Contact ATC的更多相关文章

  1. Codeforces 924D Contact ATC (看题解)

    Contact ATC 我跑去列方程, 然后就gg了... 我们计每个飞机最早到达时间为L[ i ], 最晚到达时间为R[ i ], 对于面对面飞行的一对飞机, 只要他们的时间有交集则必定满足条件. ...

  2. CF 472 div1 D. Contact ATC

    #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> # ...

  3. Codeforces956D. Contact ATC

    $n \leq 100000$个飞机在坐标轴上,给坐标给速度,坐标速度异号,还有一个风速在$[-w,w]$区间,$w$比最小的速度绝对值要小.由于风速不知道,所以问有多少对飞机可能在原点相遇. 思维定 ...

  4. 2014 Visual Studio Contact(); 直播笔记

    昨天微软干了几件了不起的事:.NET开发环境将开源.跨平台支持(Mac OS X和Linux).多设备支持(WP.Android和iOS)和Visual Studio免费(Visual Studio ...

  5. GConf error:Failed to contact configuration server

    Linux系统运行一直正常,但是图形界面使用root账号登录时遇到下面错误,第一次遇到这么怪异的状况 具体错误信息如下所示: GConf error:Failed to contact configu ...

  6. 【USACO 3.1】Contact(01子串按出现次数排序)

    题意:给你一个01字符串,将长度为a到b之间(包含a.b)的子串按照出现次数排序.注意输入输出格式 题解:01子串对应一个二进制,为了区别11和011这样的不同子串,我们把长度也记录下来,官方题解是在 ...

  7. Contact项目梳理

    1. 共三张表:user用户表  group分组表 contact联系人表 entity  分模块,三个实体类,三个模块 2. 先注册再登录 DAO:UserDAOImpl public User g ...

  8. ATC空管系统的实时控制软件系统分析

    什么是ATC空管系统? 空中交通管制的目的是对航空器的空中活动进行有效的管理,维护空中交通秩序,保障空中交通畅通,保证飞行安全和提高飞行效率,防止航空器相撞,防止机场及其附近空域的航空器同障碍物相撞. ...

  9. Facebook 网络模拟工具 ATC部署及使用

    废话引用: Facebook此前开源了增强网络流量控制工具 ATC,能利用WiFi网络模拟各种移动网络,测试智能手机和APP在不同国家地区和应用环境下的性能表现.ATC能够模拟2G.2.5G(Edge ...

随机推荐

  1. 【字符串算法】AC自动机

    国庆后面两天划水,甚至想接着发出咕咕咕的叫声.咳咳咳,这些都不重要!最近学习了一下AC自动机,发现其实远没有想象中的那么难. AC自动机的来历 我知道,很多人在第一次看到这个东西的时侯是非常兴奋的.( ...

  2. VID和PID

    今天很在一份datasheet上突然看到 VID 和 PID 很奇怪!!还不是很懂!!! 参考:https://blog.csdn.net/gaojinshan/article/details/787 ...

  3. P5664 Emiya 家今天的饭

    题面 link 前言 去年把我做自闭的一道题,看了一眼题面,发现只有 t1 有点思路,结果写到一半发现自己读错题了,又只能花时间来重构,结果后面的暴力一点都没写(主要是自己当时不会) 然后,这道题还因 ...

  4. Geography's sum up

    1.世界气候: 热带草原气候,热带雨林气候,热带沙漠气候,热带草原气候 温带季风气候,温带大陆性气候,亚热带季风和湿润性气候,温带海洋性气候 寒带气候,高原山地气候. 2.亚洲气候: 1.大陆性气候分 ...

  5. Ubuntu18.04下Git安装及使用

    Ubuntu 18.04 git安装配置及基本使用 git Ubuntu 准备 对Ubuntu相关资源升级 1. linux资源升级 sudo apt-get update 2. linux软件升级 ...

  6. 实验五  用PS制作图文合成海报

    实验五  用PS制作图文合成海报 [实验目的] ⑴.熟悉PS软件基本操作 ⑵.学会用PS制作内容较丰富的海报式广告 [实验条件] ⑴.个人计算机一台 ⑵.个人计算机中预装Windows7操作系统和浏览 ...

  7. lora网关

    lora网关 lora物联网网关ZLAN9743可以实现RS232/485/422/以太网转 LoRa功能 是一款高性价比远距离无线通讯网关.LoRa和GPRS.4G方案相比它无需入网月租费,和Wif ...

  8. java 图片相似度算法

     利用直方图原理实现图像内容相似度比较  ,作为笔记记录在随笔中.   public class PhotoDigest {     public static void main(String[]  ...

  9. doment ready事件和load事件的区别及实现

    从2017年9月至今工作中大部分使用react,前端渲染的一些基础性知识记忆不是很深刻了.面试**公司的时候,碰到"document ready和load的区别,以及document rea ...

  10. 1.1 Python 概述

    1.1 Python 概述 1.1.1 了解Python Python 是由荷兰人 Guido Van Rossum 发明的一种面向对象的解释型高级编程语言.Python的设计哲学为 优雅.明确和简单 ...