題意:給出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 #includeview code9 #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 }
二分查詢與二分答案
主要用於在乙個單調的函式中查詢某值 連續函式的情況 若當前查詢的區間是 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 ...