n个月没更了,现在学的东西很难,掌握不好,不敢更!

这个题目既不超范围又足够难想,反正我没想出来,很好的题目!

我发现noi.ac上的题目很不错!!!

-------------------------------------------------------------------------------------------------------------------

小z告诉小w了这样一道送分题。

在数轴上有n个小人,第ii个人现在在pi位置,速度是vi(速度的正负代表不同的方向)。如果某一时刻两个人在同一位置,那么就会发生碰撞。

如果现在小j可以使用能力,使得其中kk个人凭空消失,那么最多会有多长时间内,没有任何两个人会碰撞呢?

输入格式

一行两个整数 n和k。

接下来 n行,每行两个整数pi,vi,表示每个人的初始位置和速度。

输出格式

如果时间是无限长,输出Forever, 否则输出一个实数表示答案,答案误差小于10^−3即可。

样例一

input

4 1
1 1
3 -1
5 2
7 -2

output

1.00

样例二

input

4 2
1 1
3 -1
5 2
7 -2

output

Forever

数据范围和约定

本题采用捆绑测试,对于全部数据,1≤k≤n≤10^5;|pi|,|vi|≤10^9.

_________________________________________________________________________________________

碰撞,可以选择让他消失。肯定先碰撞就让他消失。同时维护那么多点的位置?肯定是按照时间进行二分。消失如何处理?那就让他不消失,位置交换以后就是逆序,只要求最长上升子序列就好了!!

说起来简单,想的时候真的想不到!!!

所以正解就是二分答案+最长上升子序列。

注意刚开始的预处理!!!

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=100005;
4 int n,k;
5 struct node
6 {
7 int v,p;
8 }pt[maxn];
9 bool cmp(node a,node b)
10 {
11 if(a.p<b.p)return 1;
12 if(a.p==b.p && a.v>b.v)return 1;
13 return 0;
14 }
15 int f[maxn];
16 long double pos[maxn],low[maxn];
17 bool pd(long double x)
18 {
19 for(int i=1;i<=n;++i)pos[i]=pt[i].p+pt[i].v*x,low[i]=3e9;
20 int ans=1;
21 low[1]=pos[1];
22 for(int i=2;i<=n;++i)
23 {
24 if(low[ans]<pos[i])low[++ans]=pos[i];
25 else low[upper_bound(low+1,low+ans+1,pos[i])-low]=pos[i];
26 }
27 return n-ans<=k;
28 }
29 int main()
30 {
31 scanf("%d%d",&n,&k);
32 for(int i=1;i<=n;++i)scanf("%d%d",&pt[i].p,&pt[i].v);
33 sort(pt+1,pt+n+1,cmp);
34 int js=1;
35 for(int i=2;i<=n;++i)
36 {
37 if(pt[i].p==pt[js].p && pt[i].v==pt[js].v)k--;
38 else pt[++js]=pt[i];
39 }
40 n=js;
41 long double l=0,r=3e9,ans;
42 while(r-l>0.0000001)
43 {
44 long double mid=(l+r)/2;
45 if(pd(mid))l=ans=mid;
46 else r=mid;
47 }
48 if(ans>2.9e9)printf("Forever");
49 else printf("%.6lf",(double)ans);
50 return 0;
51 }

小w、小j和小z的更多相关文章

  1. 【XDOJ】小W的塔防

    原题: 小W在成功拿到iPhone后,下载了一个塔防游戏.游戏的目标是阻止僵尸穿过地图. 地图可以看作一条长度为n的线段,这条线段被划分为n条单位长度的小线段.僵尸需要花费t秒才能通过一条小线段.在每 ...

  2. 【JZOJ6389】小w学图论

    description 小w这学期选了门图论课,他在学习点着色的知识.他现在得到了一张无向图,并希望在这张图上使用最多n种颜色给每个节点染色,使得任意一条边关联的两个节点颜色不同. 小w获得一张n个节 ...

  3. 武汉科技大学ACM :1008: 小t和小w

    Problem Description 小t最近学了C语言,他想要在女朋友小w面前展示一下自己的能力,小w喜欢如样例所示的图形, 想让小t写一个程序来输出这样的图形,小t拿到后感觉有点困难,小t不想在 ...

  4. bzoj4665小w的喜糖 dp+容斥

    4665: 小w的喜糖 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 120  Solved: 72[Submit][Status][Discuss] ...

  5. bzoj4665 小w的喜糖(dp+容斥)

    4665: 小w的喜糖 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 222  Solved: 130[Submit][Status][Discuss ...

  6. bzoj2441【中山市选】小W的问题

    题目描述 有一天,小W找了一个笛卡尔坐标系,并在上面选取了N个整点.他发现通过这些整点能够画出很多个“W”出来.具体来说,对于五个不同的点(x1, y1), (x2, y2), (x3, y3), ( ...

  7. 【BZOJ 4665】 4665: 小w的喜糖 (DP+容斥)

    4665: 小w的喜糖 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 94  Solved: 53 Description 废话不多说,反正小w要发喜 ...

  8. 【BZOJ4665】小w的喜糖 容斥+组合数

    [BZOJ4665]小w的喜糖 Description 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那 ...

  9. bzoj2441 [中山市选2011]小W的问题(debug中)

    2441: [中山市选2011]小W的问题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 487  Solved: 186[Submit][Statu ...

随机推荐

  1. [LeetCode]144. Binary Tree Preorder Traversal二叉树前序遍历

    关于二叉树的遍历请看: http://www.cnblogs.com/stAr-1/p/7058262.html /* 考察基本功的一道题,迭代实现二叉树前序遍历 */ public List< ...

  2. UDP 通讯方式

    1.创建套接字:2.绑定端口:3.收发数据: 收到的数据中包含发送方的端口信息4.关闭套接字:

  3. 通过python的socket库实现简易即时通讯小程序

    前言 最近学习了一下有关tcp协议和socket有关的知识,看到许多socket实战都喜欢教如何做一个聊天程序,于是想着试试能不能不看教程自己写一个.当然我没太多时间做一个像qq一样的ui界面,所以做 ...

  4. Redis学习之路(四)Redis-cluster java api操作

    import redis.clients.jedis.HostAndPort;import redis.clients.jedis.JedisCluster;import java.util.Hash ...

  5. netty核心组件之channel、handler、ChannelHandlerContext、pipeline

    channel介绍: netty中channel分为NioServerScoketChannel和NioSocketChannel,分别对应java nio中的ServerScoketChannel和 ...

  6. Spark推荐系统实践

    推荐系统是根据用户的行为.兴趣等特征,将用户感兴趣的信息.产品等推荐给用户的系统,它的出现主要是为了解决信息过载和用户无明确需求的问题,根据划分标准的不同,又分很多种类别: 根据目标用户的不同,可划分 ...

  7. python学习笔记 | 国内常用源镜像地址

    各镜像列表 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 ...

  8. mysql中的基本注入函数

    1. 常见数据库注入函数: MYSQL: and length((user))>10 ACCESS: and (select count() from MSysAccessObject)> ...

  9. Subline Text 3 安装

    Subline Text 3 下载 下载链接 http://www.sublimetext.com/3 ,下载Subline Text3的安装包,这里以 64位的windows10为例,如果是其他操作 ...

  10. 【Oracle】下载11.2.0.4的地址

    https://updates.oracle.com/download/13390677.html 这个地址就是下载Oracle 11.2.0.4版本的地址,需要有metalink账号才可以下载