题意略。

思路:

可以看成是所有的云彩照常运动,而月亮在跑。只要两个云彩相交后,在分离前月亮能赶到,就算是符合题意的。

可以知道,两个相隔越远的相向运动地云彩是越有可能符合题意的,因为它们相遇所用时间更长,这样月亮越有可能赶到。

假设云彩1为(l1,r1) ,云彩2为(l2,r2) ,r1 < l2 ,且两个云彩相向运动,云彩长度为 l 。我们令中心点p = (r1 + l2) / 2。

月亮赶到p点所需时间为runtime = p / wmax,两个云彩在相交后相离所用时间为 time = abs(r1 - l2) + l。

只要runtime < time,那么就合法。

我们现在只需要明白一个事实,在数轴上向右运动的云彩中,假设云彩1比云彩2靠左,那么云彩1对答案的贡献值中,必然还包括了云彩2对答案的贡献值。

基于以上性质,我们可以对两种方向运动的云彩分别进行排序,再用双指针。这样后面的解,就可以利用上前面计算出的值。

详见代码:

#include<bits/stdc++.h>
#define maxn 100005
using namespace std;
typedef long long LL; double store1[maxn],store2[maxn];
int tail1,tail2,n;
double l,wmax; int main(){
scanf("%d%lf%lf",&n,&l,&wmax);
double x,v;
for(int i = ;i < n;++i){
scanf("%lf%lf",&x,&v);
if(v == 1.0) store1[tail1++] = x;
else store2[tail2++] = x;
}
//printf("tail1 == %d tail2 == %d\n",tail1,tail2);
sort(store1,store1 + tail1);
sort(store2,store2 + tail2);
LL ans = ;
LL cur = ;
for(int i = tail1 - ,j = tail2 - ;i >= ;--i){
for(;j >= ;--j){
double l1 = store1[i],r1 = l1 + l;
double l2 = store2[j],r2 = l2 + l;
if(l1 > l2) break;
double midtime = fabs(r1 - l2) / + l;
double mid = (r1 + l2) / ;
double time = fabs(mid) / wmax;
// printf("time == %lf midtime == %lf\n",time,midtime);
// printf("(1:%d,2:%d) is %s\n",i,j,time < midtime ? "OK" : "NO");
if(time < midtime) ++cur;
else break;
}
ans += cur;
}
printf("%lld\n",ans);
return ;
}

CodeForces 989D的更多相关文章

  1. Codeforces 989D A Shade of Moonlight

    A Shade of Moonlight 列列式子发现, 对于同一个云来说只有反向的云才能和它相交, 然后我们发现这个东西有单调性,然后二分就好啦. #include<bits/stdc++.h ...

  2. A Shade of Moonlight CodeForces - 989D

    看这位博主的吧:https://blog.csdn.net/Steaunk/article/details/80660954

  3. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  4. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  5. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  6. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  7. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  8. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  9. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

随机推荐

  1. oracle分隔字符串列转行

    1. DEMO: SELECT REGEXP_SUBSTR('1,2', '[^,]+', 1, LEVEL)          FROM DUAL        CONNECT BY REGEXP_ ...

  2. os模块习题

    os 1.使用python代码统计一个文件夹中所有文件的总大小 import os def func(path): size_sum = 0#文件总大小为0 name_lst = os.listdir ...

  3. jmeter性能小试全流程

    大纲: 1.添加线程组:虚拟用户 2.添加测试对象:比如http请求 3.查看结果 一.添加线程组. 1.线程是what: JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此 ...

  4. Java EE.JSP.动作组件

    常见的JSP动作组件有以下几种: 1)<jsp:include>:在页面被请求的时候引入一个文件 2)<jsp:param>:在动作组件中引入参数信息 3)<jsp:fo ...

  5. 基于Ajax的前后端分离

    这种开发模式可以称为SPA (Single Page Application 单页面应用)时代. 这种模式下,前后端的分工非常清晰,前后端的关键协作点是 Ajax 接口.看起来是如此美妙,但回过头来看 ...

  6. vue项目目录结构详解

    项目简介基于 vue.js 的前端开发环境,用于前后端分离后的单页应用开发,可以在开发时使用 ES Next.scss 等最新语言特性.项目包含: 基础库: vue.js.vue-router.vue ...

  7. Appium自动化测试环境搭建

    前言 Appium是一个开源的自动化测试框架,支持跨平台,支持多种编程语言,可用于原生,混合和移动web应用程序,使用webdriver驱动ios,android应用程序.那么为了学习app自动化测试 ...

  8. http状态码 500-599

    类比: 客户端:客人 服务器:便利店 http报文:中文语言+钱 500:服务器内部错误,无法完成请求 客户端:给我一瓶可乐 服务器:对不起,不能给你服务,本店昨天起火烧了 501:服务器不支持请求的 ...

  9. Eclipse中代码自动添加注释及代码注释模板

    介绍 为了提高代码的可读性以及为了有些代码有洁癖的人的需求,我们要从学生到职业进行迈进的过程中,必须把以前的那种代码可读性不高的习惯改掉,因为我们必须要与企业接轨.. 好了,废话不多说,反正就是提升自 ...

  10. 低版本IE兼容 H5+CSS3 方案

    [主要是针对ie6 7 8对支持和让老浏览器支持html5+css3的一些js脚本] html5shiv.js  // 让IE8及耕地版本的IE识别section,article,nav等html5元 ...