Hack 二分答案

2022-05-07 06:12:12 字數 1118 閱讀 3226

題意:給出n門課程,每一門課程考的分數,每一門課程的學分,求最多刪去k組資料之後能夠得到的最大加權平均數

先開乙個陣列x,其中x[i]=1代表沒有刪除這門課程,x[i]=0表示刪除了這門課程

然後p[i]=r*c[i]-c[i]*s[i]=c[i]*(r-s[i])

又因為滿分為100分,就在0.0在100.0二分來找 再將p陣列降序排列,ans為其前n-k個數的和, 如果ans-0>eps,那麼l=mid, 如果ans-0因為p陣列是按照降序排列的,所以ans應該是遞減的,大概是像這幅圖一樣

貌似這樣理解有問題,再想一想先-----

下面是學習的**---------------

1 #include2 #include3 #include4 #include 5 #include6 #include7 #include8 #include

9 #include10 #include11

using

namespace

std;

1213 typedef long

long

ll;14

const

int inf = (1

<<30)-1;15

const

int mod=1000000007;16

const

int maxn=1000005;17

double eps=1e-4;18

19int

s[maxn],c[maxn];

20double

p[maxn];

2122

bool cmp(double a,double

b)25

26int

main()

5253 printf("

case #%d:\n

",t);

54 printf("

%.3lf\n

",mid); 55}

56return0;

57 }

view code

二分查詢與二分答案

主要用於在乙個單調的函式中查詢某值 連續函式的情況 若當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y 則 l mid,否則 r mid 直至 r l eps 當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y...

二分查詢和二分答案

1.解釋 優點 查詢速度快。缺點 待查表為有序表。4.時間複雜度 o log n 5.示例 p2249查詢 include include using namespace std long long n,m,a 1000005 b 100005 l,r,mid,cnt,x intmain for i...

二分與二分答案學習

判斷left,mid,right的符號進行區間的精確。如下為遞迴二分求零點的操作 double find zero point double left,double right,double precesion double mid right left 2 if f mid 0 if f mid ...