2555.雾雨魔理沙 {动态规划}

Description

在幻想乡,雾雨魔理沙是住在魔法之森普通的黑魔法少女。话说最近魔理沙从香霖堂拿到了升级过后的的迷你八卦炉,她迫不及待地希望试试八卦炉的威力。在一个二维平面上有许多毛玉(一种飞行生物,可以视为点),每个毛玉具有两个属性,分值value和倍率mul。八卦炉发射出的魔法炮是一条无限长的直线形区域,可以视为两条倾斜角为α的平行线之间的区域,平行线之间的距离可以为任意值,如下图所示:
这里写图片描述
蓝色部分上下两条长边之间就是这次八卦炉的攻击范围,在蓝色范围内的毛玉(红点)属于该此被击中的毛玉,如果一个毛玉刚好在边界上也视为被击中。毛玉击中以后就会消失,每次发射八卦炉得到分值是该次击中毛玉的分值和乘上这些毛玉平均的倍率,设该次击中的毛玉集合为S,则分值计算公式为:
  Score = SUM{value[i] | i 属于 S} * SUM{mul[i] | i 属于 S} / |S|
  其中|S|表示S的元素个数。魔理沙将会使用若干次八卦炉,直到把所有毛玉全部击中。任意两次攻击的范围均不重叠。最后得到的分值为每次攻击分值之和。现在请你计算出能够得到的最大分值。


Input

第1行:1个整数N,表示毛玉个数
第2..N+1行:每行四个整数x, y, value, mul,表示星星的座标(x,y),以及value和mul
第N+2行:1个整数α,表示倾斜角角度,0°到180°
3
1 3 3 1
2 1 2 2
3 4 2 1
45


Ouput

第1行:1个实数,表示最大分值,保留三位小数
9.333


分析:

这道题目其实不难,难就难在几何上。
假这一题是一个序列,那就变得十分简单,直接dp就行了。
按照这个思路去想:过其中一个点做一条直线,与X轴的夹角为α度,就可以得到一个与x轴的交点。把每一个点都做一次,不就变成了一个序列了吗?
如图:
这里写图片描述
但是这个与X轴的交点怎么算呢?
直线方程y=kx+b。
我们知道x1和y1,
但我们不知道k和b。
题目中给出了直线与X轴的夹角度数α,那么k=tan(απ/180)
知道k以后,b就很好算了。
将y2=0代入方程y=kx+b,就可以算出x2,也就是得到与X轴的交点的座标了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章