#P14763. [Opoi 2025] CCD 的赌局

[Opoi 2025] CCD 的赌局

题目背景

CCD 经营的赌场濒临倒闭,他只好玩点新花样。

题目描述

下方有形式化题意。

CCD 决定通过作弊的方式赢取利润,他邀请到了两个考场读错题此时痛不欲生的 Oier 小 L 和小 T 作为内部人员。

具体的,CCD 决定让小 L 和小 T 玩 nn 轮,每轮恰好有一人获胜。

CCD 为了借此机会捞一笔,大放广告吸引了一大群人前来下注(赌每一轮谁赢),为了让赌博看上去更有吸引力,所以 CCD 决定使小 L 胜的单位返还金额与小 T 胜的单位返还金额之和为 TT。并且为了赚更多的钱,CCD 可以在中间某两轮之间更改单位返还金额,但是要求双方的总和仍然为 TT,并且只能更改一次。但可惜的是,内部人员小 L 和小 T 早已和其他人私底下串通好了,在每一轮中,他们总是会选择返还金额更大的结果。(比如若小 L 在这一轮中胜利获得的返还金额比小 T 在这一轮中胜利获得的返还金额更大,小 L 和小 T 就会操控赌局结果使得小 L 获胜)

现在 CCD 通过某些手段知道了每一轮双方的下注金额,记为 ai,bia_i,b_i。他想要通过设定两次(或一次)的返还金额,使得他最后返还的金额最小,并求出这个值。

由于 CCD 数学不好,于是他向你求助。

单位返还金额和返还金额:如果这一轮小 L 的单位返还金额为 aa,小 T 的单位返还金额为 bb,其他人押了 xx 块钱赌小 L 胜,yy 块钱赌小 L 胜,如果小 L 获胜那么返还金额就会增加 axa\cdot x 块钱,但是如果结果小 L 输了,返还金额就会增加 byb\cdot y 块钱。

形式化题意

给定 nnTT,以及两个实数序列 a1na_{1\dots n}b1nb_{1\dots n}

你可以任意设定 44 个非负实数 A1,B1,A2,B2A_1,B_1,A_2,B_2 以及一个整数 k[0,n]k \in [0,n],使得他们满足 T=A1+B1=A2+B2T=A_1+B_1=A_2+B_2。求如下式子的最小值:

$$\sum_{i=1}^{k}\max(A_1\times a_i, B_1 \times b_i) + \sum_{i=k+1}^{n}\max(A_2\times a_i, B_2 \times b_i)$$

特别的,当 s>es > e 时,定义 i=sef(i)\sum\limits_{i=s}^{e} f(i) 的值为 00

输入格式

第一行一个整数 nn,一个非负实数 TT

接下来 nn 行,第 ii 行两个非负实数 ai,bia_i,b_i,表示第 ii 轮对小 L 和小 T 下的注的和。

输出格式

一行一个实数表示返还金额的最小值,四舍五入到小数点后二位。

2 1.00
4.00 12.00
12.00 4.00
6.00

提示

样例解释

在第一轮之前时,设定小 L,小 T 的单位返还金额分别为 0.750.750.250.25

在第一轮以后,更改小 L,小 T 的单位返还金额分别为 0.250.250.750.75

此时返还金额有最小值 $\max(4\times 0.75,12\times 0.25)+\max(12\times 0.25,4\times 0.75)=6$。


数据范围与约定

本题采用捆绑测试。

$$\def\arraystretch{1.2} \begin{array}{|c|c|c|} \hline \begin{array}{c} \tt{subtask}\\\hline 1\\\hline 2\\\hline 3\\\hline \end{array} & \begin{array}{c} n\\\hline \le 10\\\hline \le 10^{3}\\\hline \le 10^{5}\\ \end{array} & \begin{array}{c} \tt{pts}\\\hline 10\\\hline 40\\\hline 50\\\hline \end{array} \\\hline \end{array}$$

对于所有数据,2n1052\le n \le 10^{5}0T,ai,bi1000 \le T,a_i,b_i \le 100,且 i[1,n],0<ai+bi\forall i \in [1,n],0 < a_i + b_i,输入文件中所有实数精确到两位小数。