計蒜客NOIP模擬賽(2) D1T2 表演藝術


凡和鄰家男孩玩完了紙牌,興致很高,於是准備了一場表演藝術對抗賽。 他特意請來了很多表演藝術家,分成綠黑兩隊,進行名為 PK,實則撈金的表演。

凡為了撈金,開設了一個賭局,在比賽開始之前招攬人們來押注誰能勝出,在所有人進行投注之后,凡需要告訴大家綠方和黑方的單位返還金額都是多少。

舉個例子,如果綠方的單位返還金額為 555,那么我每押 111 塊錢綠方勝,如果成真就能拿回 555 塊錢,但是如果結果綠方輸了,我就拿不回來任何錢。

凡決定將單位返還金額設得更具有吸引力,所以他要求“綠方勝的單位返還金額+黑方勝的單位返還金額=T”,並且為了賺更多的錢,凡可以在中間某兩個投注的人之間更改單位返還金額,但是要求雙方的總和仍然為 T,並且只能更改一次。

不幸的是,凡突然發現自己請來的表演藝術家竟然和眾多投注人是一伙的,也就是說,在凡定下單位返還金額之后,那些藝術家會操縱比賽結果,從而讓凡拿出更多的錢來。

這下凡有些慌了,於是他來詢問你應該怎么制定單位返還金額。

輸入格式

第一行一個整數 NNN,代表投注的人的個數。

接下來 NNN 行,每行兩個實數 ai,bia_i,b_iai​​,bi​​ 代表第 iii 個人投注黑方勝和綠方勝的資金。

最后一行一個實數 TTT,含義如題目中所示。

輸出格式

一個實數,代表你最少返還的金額(保留兩位小數)。

數據范圍與約定

對於所有數據,0≤ai,bi,T≤1000\le a_i,b_i,T \le 1000ai​​,bi​​,T100,且至多精確到兩位小數。

樣例解釋 1

一種最優方案是:

第一次投注及之前,單位返還金額為 101010 和 000。

第二次投注及之后,單位返還金額為 000 和 101010

這樣無論哪方勝利,你都不會返還任何金錢。

樣例解釋 2

一種最優方案是:

第一次投注及之前,單位返還金額為 0.50.50.5 和 0.50.50.5。

第二次投注及之后,單位返還金額為 0.50.50.5 和 0.50.50.5

這樣無論哪方勝利,你的返還金額都為 555。

樣例輸入1

3
0 10
10 0
10 0
10

樣例輸出1

0.00

樣例輸入2

2
5 5
5 5
1

樣例輸出2

5.00
題解:
因為無論如何都是最差情況,所以讓兩方勝利之后返還金額相等是最好的
先枚舉在哪里分段,設分段之前押黑方勝的資金為 A,綠方勝資金為 C,之后押黑方勝資金為 B,綠方勝資金為 D,分段之前黑方勝單位返還金額為 p,分
段之后為 q,則有式子:(A+C)p+(B+D)q=(C+D)T
在滿足上述式子的前提下要求 Ap+Bq 最小
稍作分析可知q,p值在某一個極值最優,意思是:要么p盡可能大,要不q盡可能大
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 double a[500001],b[500001],tota,totb,A,B,C,D,p,q,T,ans=2e9;
 8 int n;
 9 int main()
10 {int i;
11   cin>>n;
12   for (i=1;i<=n;i++)
13     {
14       scanf("%lf%lf",&a[i],&b[i]);
15       if (a[i]<=1e-6&&b[i]<=1e-6) n--,i--;
16       tota+=a[i];totb+=b[i];
17     }
18    cin>>T;
19    A=0;B=tota;C=0;D=totb;
20    for (i=1;i<n;i++)
21      {
22        A+=a[i];B-=a[i];C+=b[i];D-=b[i];
23        if (A<=D) p=T;
24        else p=T*(C+D)/(A+C);
25        q=(T*(C+D)-(A+C)*p)/(B+D);
26        if (A*p+B*q<ans) ans=A*p+B*q;
27 
28        if (B<=C) q=T;
29        else q=T*(C+D)/(B+D);
30        p=(T*(C+D)-(B+D)*q)/(A+C);
31        if (A*p+B*q<ans) ans=A*p+B*q;
32      }
33    printf("%.2lf",ans);
34 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM