JZOJ 3441. 小喵喵的新家

Problem

Description

小喵喵和小聪聪从小就是好朋友 ,他们经常在一起玩耍 。如今小喵已经厌倦了自己居住的环境,想请小聪聪为她建一个新家。
小喵喵天生多才多艺,对多种乐器颇有研究。对于生活中常见的图形,她对圆形很感兴趣,因此小聪聪决定为她建一个圆形的新家。
我们设新家在一个平面直角坐标系上,其中新家的圆心为平面直角坐标系的原点。
小聪聪有一把神奇的剪刀,他定义了一个值m,以等分 [−pi,pi]弧度 (详见样例)。他还有一支神奇的画笔,将进行 n次“铺地毯”操作。对于第i 次“铺地毯”操作,他将设定一个半径ri,起始位置si,终止位置ti ,然后从圆心角pi*si/m到圆心角pi*ti/m这部分区域逆时针铺上一个扇形地毯。
小喵喵想到了一个奇怪的问题,她想知道有多大面积被至少铺过k次地毯。 这个问题一下就难倒了聪明的小聪聪。 现在小聪聪求助于你,你能帮他解决这个问题吗?为了方便表达 ,设答案的值为T,你只需要输出 T×2m/pi的值即可 。

Input

第一行是三个整数 n,m,k,含义 如题目描述中所述。
接下来n行, 每行描述一次铺地毯操作 。第i行有三个整数r,si,ti,含义 如 题目描述中所述。

Output

输出 一个整数 表示T×2m/pi的值。

Sample Input

3 8 2
1 -8 8
3 -7 3
5 -5 5

Sample Output

76

Data Constraint

这里写图片描述

Hint

这里写图片描述

Solution

我们可以知道每一个扇形的面积为 tisi2mπri2 ,那么*2m/pi后,就剩下了 (tisi)r2 .最简单的方法是一块块算面积,那么那一块的面积(合法的)为第k大的半径的平方(想一想为什么)。
那么如何实现呢?我们打一棵线段树,维护有几个扇形覆盖到了这块地方。如果我们要求第k大的数,那么我们要做一次搜索,初始值为k。
这里写图片描述
如果R>=K,则往右走,否则往左走,往左走的时候K-=R。走到最底的就是第k大的数的下标。
注意:如果si>ti,那么一个扇形将要变成两个扇形。从m/-m这条线这里割开。
——2016.7.6

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值