Contact ATC

我跑去列方程, 然后就gg了。。。

我们计每个飞机最早到达时间为L[ i ], 最晚到达时间为R[ i ],

对于面对面飞行的一对飞机, 只要他们的时间有交集则必定满足条件。

对于相同方向飞行的飞机, 只有其中一个的时间包含另一个的时间才满足条件。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ull unsigned long longusing namespace std;const int N = 2e5 + 7;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const double eps = 1e-8;
const double PI = acos(-1);struct Bit {int a[N];void init() {memset(a, 0, sizeof(a));}void modify(int x, int v) {for(int i = x; i < N; i += i & -i)a[i] += v;}int sum(int x) {int ans = 0;for(int i = x; i; i -= i & -i)ans += a[i];return ans;}int query(int L, int R) {if(L > R) return 0;return sum(R) - sum(L - 1);}
};struct Node {Node(LL a, LL b) : a(a), b(b) {}bool operator < (const Node& rhs) const {return a * rhs.b < rhs.a * b;}bool operator == (const Node& rhs) const {return a * rhs.b == rhs.a * b;}void print() {printf("%.5f ", 1.0 * a / b);}LL a, b;
};int n, w, x[N], v[N];
LL ans = 0;
vector<PII> vc[2];
vector<Node> hs;
Bit bit;bool cmp(PII& a, PII& b) {if(a.fi == b.fi) return a.se < b.se;return a.fi > b.fi;
}LL solve(vector<PII>& vc) {bit.init();LL ans = 0;sort(vc.begin(), vc.end(), cmp);for(int i = 0; i < SZ(vc); i++) {ans += bit.sum(vc[i].se);bit.modify(vc[i].se, 1);}return ans;
}int main() {scanf("%d%d", &n, &w);for(int i = 1; i <= n; i++) {scanf("%d%d", &x[i], &v[i]);if(x[i] < 0) {hs.push_back(Node(-x[i], v[i] + w));hs.push_back(Node(-x[i], v[i] - w));} else {hs.push_back(Node(x[i], w - v[i]));hs.push_back(Node(x[i], -w - v[i]));}}sort(hs.begin(), hs.end());hs.erase(unique(hs.begin(), hs.end()), hs.end());for(int i = 1; i <= n; i++) {if(x[i] < 0) {int L = lower_bound(hs.begin(), hs.end(), Node(-x[i], v[i] + w)) - hs.begin() + 1;int R = lower_bound(hs.begin(), hs.end(), Node(-x[i], v[i] - w)) - hs.begin() + 1;vc[0].push_back(mk(L, R));} else {int L = lower_bound(hs.begin(), hs.end(), Node(x[i], w - v[i])) - hs.begin() + 1;int R = lower_bound(hs.begin(), hs.end(), Node(x[i], -w - v[i])) - hs.begin() + 1;vc[1].push_back(mk(L, R));}}ans += solve(vc[0]);ans += solve(vc[1]);ans += 1ll * SZ(vc[0]) * SZ(vc[1]);bit.init();for(auto& t : vc[1]) bit.modify(t.se, 1);for(auto& t : vc[0]) ans -= bit.sum(t.fi - 1);bit.init();for(auto& t : vc[1]) bit.modify(t.fi, 1);for(auto& t : vc[0]) ans -= bit.query(t.se + 1, N - 1);printf("%lld\n", ans);return 0;
}/*
*/

转载于:https://www.cnblogs.com/CJLHY/p/10486254.html

Codeforces 924D Contact ATC (看题解)相关推荐

  1. Codeforces 1089D Eels (看题解)

    Eels 感觉想不出来这种东西.. 题解讲的很清楚啦. 我好lj啊. https://codeforces.com/blog/entry/64331 #include<bits/stdc++.h ...

  2. Codeforces 1045C Hyperspace Highways (看题解) 圆方树

    学了一下圆方树, 好神奇的东西呀. #include<bits/stdc++.h> #define LL long long #define fi first #define se sec ...

  3. Codeforces Round #747 (Div. 2)题解

    Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...

  4. Codeforces Round #514 (Div. 2)题解

    Codeforces Round #514 (Div. 2)题解 A 喵,直接模拟. B 枚举所有盖章时的,合法的,左上角的位置.能盖的话就盖一下.最后check一下图案是否相等即可 C 一轮一轮的扔 ...

  5. CF924D. Contact ATC

    CF924D. Contact ATC Solution 第一波转化挺妙的. 令tlitl_itli​表示用−w-w−w的风到原点的时间,tritr_itri​表示用www的风到圆点的时间. 显然(i ...

  6. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  7. 【算法题解】Codeforces Round #817 (Div. 4)题解

    文章目录 Codeforces Round #817 (Div. 4)题解 A. Spell Check B. Colourblindness C. Word Game D. Line E. Coun ...

  8. Codeforces #1248B Grow The Tree题解(Java)

    Codeforces #1248B Grow The Tree题解(Java) 题目大意: 输入: 输出: 数据范围: 思路 代码 题目链接 题目大意: 给出一组线段(题目中叫树枝)的长度,制作成一条 ...

  9. Codeforces Round #789 (Div. 2)题解

    Codeforces Round #789 (Div. 2)题解 A. Tokitsukaze and All Zero Sequence 原题链接 算法标签 贪心 排序 思路 情况一:数组存在零 → ...

最新文章

  1. 【计算理论】计算复杂性 ( 时间复杂度时间单位 : 步数 | 算法分析 | 算法复杂性分析 )
  2. 【Python】分享几个好用到爆的Python内置模块
  3. @font-face 使用过程
  4. linux 设置ssh并发度,在linux如何使用ControlPersist加快SSH连接速度的问题
  5. matlab randomsample,randperm和randsample函数用法对比
  6. SQL取分组中前、后几条数据
  7. 大学毕业后5年决定命运(强烈推荐一看)
  8. pte模拟考试_PTE猩际PC版-PTE猩际电脑版下载 v5.6.1--PC6电脑版
  9. (libgdx学习)InputProcessor InputMultiplexer
  10. java8 function 固定0_Java8特性使用Function代替分支语句
  11. 11 旋转数组的最小数字
  12. php srs api,文档中心
  13. 在万能地图下载器中如何不显示谷歌电子地图上的地名文字?
  14. 微信小黄鸡php,微信表情包小黄鸡含义
  15. Spring AOP不进入before和业务方法,却进入其他切面的问题
  16. (每日一练python)新浪微博热门话题
  17. GROMOS拓扑(、坐标、轨迹、能量)相关文件解读手册第5章阅读笔记II
  18. B站在​港交所双重主要上市 陈睿:将扩大我们投资者基础
  19. win7定时关机命令_WIN7系统还有用吗?怎么随时切换WIN7/10?
  20. edge浏览器受信任_微软Edge浏览器利用虚拟化技术做安全防护

热门文章

  1. MAC地址、IP地址、ARP协议
  2. 信息系统管理十大知识领域
  3. mysql gid_mysql主从复制5.6基于GID及多线程的复制笔记
  4. 程序员:你的业余时间是怎么被浪费掉的?
  5. C51蜂鸣器和数码管动静态显示
  6. saej1929_(1929年-2020年)
  7. ios设计登录功能_亲爱的产品设计师,这是iOS 14的新功能
  8. 碎片化学习前端资料分享~
  9. 他开发了redux,昨晚字节一面却挂了?
  10. yii_wiki_145_yii-cjuidialog-for-create-new-model (通过CJuiDialog来创建新的Model)