CodeForces 801C 二分,浮點數

2022-03-04 07:37:42 字數 1279 閱讀 9706

codeforces 801c

題意: n個裝置,第 i個裝置每秒用電a[i],原本儲存電量b[i]。只有乙個充電器,每秒可給乙個裝置充電 p。所有的裝置要同時工作,問最多可以工作多長時間?

tags:就是二分,但寫掛了好多發。。

坑點:

1、右邊界會爆1e9 。。。

2、擔心 double 會丟失精度,用了 long double。

然後long double ,標頭檔案 #include 。一開始用 printf("%.6lf\n", r)輸出,在自己電腦上輸出好好的,交上去就莫名其妙的錯了。然後改用 cout<

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#pragma comment(linker, "/stack:102400000,102400000")

#define rep(i,a,b) for (int i=a;i<=b;i++)

#define per(i,b,a) for (int i=b;i>=a;i--)

#define mes(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3f

#define mp make_pair

#define pb push_back

#define fi first

#define se secondtypedef

long

long

ll;const

int n = 200005

;ll n, p, a[n], b[n];

intmain()

long

double l=0, r=1e10, mid;

while(r-l>0.000001

)

if(ans1<=mid*p) l=mid;

else r=mid;

}if(1e10-r>0.000001) cout<<6)else puts("-1"

);

return0;

}

CodeForces 1169C(二分 思維)

codeforces 1169c 1 思路 每次可以選取任意幾個數字進行 ai 1 m的操作,所以最多m次讓序列變為非遞減序列。讓所有的元素值保持盡可能的小,能使最終的運算元最小。所以可以二分查詢需要進行修改的次數tim。2 include include include includeusing ...

codeforces 835C 二維字首和

題意 給出一些點的值,查詢在乙個時間點一段區間的值。點的值會隨時間每次增加一,然後取 k 1 的模。思路 以為k是 10,所以可以把每個時刻每一段的字首和弄出來,然後查詢的時候就行。ps 乙個點不只是乙個值,在這個地方被卡。二維字首和的構造和維護可以複習一下。includeusing namespa...

codeforces1169C 二分答案 思維

1700的題,然而比賽的時候沒有做出來。題意 給你乙個n表示序列長度為n,還有乙個m表示這個序列的最大值小於m 然後對這個陣列進行多次操作,一次操作為 對ai,aj,ap,等k個數進行 1且對m取模,最後讓這個序列變成乙個不遞減的序列,可以證明通過x次操作你是一定可以使這個陣列符合條件,現在的問題是...