[CTSC2005]合并正方形combine
一个二维平面初始为空,现有一系列向平面中加入点的命令。加入的点分为 类点和 类点。 类点一定位于 轴上,且任意两个 类点不会重合; 类点可以出现在平面上的任意位置,也可以相互重合。每个 类点都有一个权值 。
对于当前平面上的所有 类点,首先在每两个相邻的 类点之间构造一个边与 轴成 度角的正方形。之后,每次可以将任意两个有公共点的正方形合并成一个大正方形,原来的两个小正方形随之消失。每进行一次合并,由 类点形成的正方形数量就会减少 ,直到只剩下一个正方形。
设某个正方形在 轴上的左、右顶点坐标分别为 、,其中 。对于平面上的点 ,定义
该正方形的内部满足
合并后的正方形将平面划分为 个区域。与正方形的 条边相邻的 个区域分别为:
- 区域 I: 且 ;
- 区域 II: 且 ;
- 区域 III: 且 ;
- 区域 IV: 且 。
区域 I、II、III、IV 中所有 类点的权值和依次记为 、、、。正方形内部,即满足 且 的所有 类点的权值和记为 。保证 类点不会出现在上述区域的边界上。
本次合并的费用为
位于其他区域的 类点不计入本次合并费用。每次合并都不会改变 类点的位置及其权值。合并总费用为所有合并操作费用之和,不同的合并顺序可能产生不同的总费用。
所有点按照命令顺序逐个加入平面。加入第 个 类点后,平面上共有 个 类点,以及在此之前加入的所有 类点。设此时完成全部合并所需的最小总费用为 。
给定费用限制 ,请求出 类点数目的最大值 ,使得前 个 类点对应的最小合并费用不超过 ,即 。
输入格式
第一行包含两个数 、,分别表示加入点的命令数和费用限制。
接下来 行,每行描述一条加入点的命令。
若该行以字符 A 开头,则后面包含一个数,表示该 类点的 坐标。
若该行以字符 B 开头,则后面包含三个数,依次表示该 类点的 坐标、 坐标和权值 。
所有点的坐标均为整数。 类点的权值 为非负数。 和 均为十进制数,小数部分不超过 位。
输出格式
输出一个整数 ,表示满足 的最大 。
样例输入
8 30.0
A -2
A 0
B 7 8 5.0
B 4 -3 2.0
B -3 4 1.0
A 2
B -4 5 1.0
A 4
样例输出
3
样例解释
前 个 类点的最小合并费用为 ,前 个 类点的最小合并费用为 。
由于 ,而 ,因此满足要求的最大 为 。
数据范围
- 所有 类点和 类点的坐标均为整数;
- 类点的权值满足 ;
- 和 均为十进制数,小数部分不超过 位。
来源与许可
本题为 CTSC 2005 试题「合并正方形」,题面与测试数据整理自 BZOJ。
样例 1
输入
8 30.0
A -2
A 0
B 7 8 5.0
B 4 -3 2.0
B -3 4 1.0
A 2
B -4 5 1.0
A 4
输出
3