2017.10.04

财富(treasure)

Time Limit: 1000ms   Memory Limit: 128MB

 

题目描述

LYK有n个小伙伴。每个小伙伴有一个身高hi。

这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在这里的每个人都羡慕比自己身高高的人,而每个人都有一个属性ai表示它对身高的羡慕值。

这n个小伙伴站成一列,我们用hi来表示它的身高,用ai来表示它的财富。

每个人向它的两边望去,在左边找到一个最近的比自己高的人,然后将ai朵玫瑰给那个人,在右边也找到一个最近的比自己高的人,再将ai朵玫瑰给那个人。当然如果没有比自己身高高的人就不需要赠送别人玫瑰了。也就是说一个人会给0,1,2个人玫瑰(这取决于两边是否有比自己高的人)。

每个人都会得到若干朵玫瑰(可能是0朵),LYK想知道得了最多的玫瑰的那个人得了多少玫瑰。(然后嫁给他>3<)

 

输入格式(treasure.in)

    第一行一个数n表示有n个人。

    接下来n行,每行两个数hi,ai。

 

输出格式(treasure.out)

    一个数表示答案。

 

输入样例

3

4 7

3 5

6 10

 

输出样例

12

 

样例解释

第一个人会收到5朵玫瑰,第二个没人送他玫瑰,第三个人会收到12朵玫瑰。

 

数据范围

对于50%的数据n<=1000,hi<=1000000000。

对于另外20%的数据n<=50000,hi<=10。

对于100%的数据1<=n<=50000,1<=hi<=1000000000。1<=ai<=10000。

 

打暴力,结果文件挂了。

 

改了之后A了。正解单调队列。

Code

正方形(square)

Time Limit:1000ms   Memory Limit:128MB

 

题目描述

在一个10000*10000的二维平面上,有n颗糖果。

LYK喜欢吃糖果!并且它给自己立了规定,一定要吃其中的至少C颗糖果!

事与愿违,LYK只被允许圈出一个正方形,它只能吃在正方形里面的糖果。并且它需要支付正方形边长的价钱。

LYK为了满足自己的求食欲,它不得不花钱来圈一个正方形,但它想花的钱尽可能少,你能帮帮它吗?

 

输入格式(square.in)

    第一行两个数C和n。

    接下来n行,每行两个数xi,yi表示糖果的坐标。

 

输出格式(square.out)

    一个数表示答案。

 

输入样例

3 4

1 2

2 1

4 1

5 2

 

输出样例

4

 

样例解释

选择左上角在(1,1),右下角在(4,4)的正方形,边长为4。

 

数据范围

对于30%的数据n<=10。

对于50%的数据n<=50。

对于80%的数据n<=300。

对于100%的数据n<=1000。1<=xi,yi<=10000。

 

干了半个小时DP,然而不对。

正解离散化后二分。

对于30%直接暴力,

对于50%$n^4$枚举上下左右四个边,

对于80%$n^3$枚举上下两边,枚举左边,左边最多移动n次,右边跟着左边滑动。

对于100%$n^2$枚举上下两边,二分判断边长为mid是否可行。

Code

追逐(chase)

Time Limit:1000ms   Memory Limit:128MB

 

题目描述

这次,LYK以一个上帝视角在看豹子赛跑。

在一条无线长的跑道上,有n只豹子站在原点。第i只豹子将在第ti个时刻开始奔跑,它的速度是vi/时刻。

因此在不同的时刻,这n只豹子可能在不同的位置,并且它们两两之间的距离也将发生变化。

LYK觉得眼光八方太累了,因此它想找这么一个时刻,使得最远的两只豹子的距离尽可能近,当然这不能是第0时刻或者第0.01时刻。它想知道的是最迟出发的豹子出发的那一刻开始,离得最远的两只豹子在距离最小的时候这个距离是多少。

当然这个时刻不仅仅可能发生在整数时刻,也就是说可能在1.2345时刻这个距离最小。

 

输入格式(chase.in)

    第一行一个数n。

    接下来n行,每行两个数分别是ti和vi。

 

输出格式(chase.out)

    输出一个数表示答案,你只需保留小数点后两位有效数字就可以了。

 

输入样例

3

1 4

2 5

3 7

 

输出样例

0.33

 

样例解释

在第5+2/3这个时刻,第一只豹子在18+2/3这个位置,第二只豹子在18+1/3这个位置,第三只豹子在18+2/3这个位置,最远的两只豹子相距1/3的距离,因此答案是0.33。

 

数据范围

对于20%的数据n=2。

对于20%的数据n=3

对于60%的数据n<=100。

对于80%的数据n<=1000。

对于100%的数据n<=100000,1<=vi,ti<=100000。

读错题…是速度为vi每时刻,不是vi除以时刻,所以是一个一次函数,求一下解析式(一般式)求两个凸壳,然后求出凸壳顶点距离的最小值就行了。

Code

posted @ 2017-10-05 20:28  baka  阅读(200)  评论(0编辑  收藏  举报