彈珠(貪心 二分)

2022-08-31 03:03:09 字數 831 閱讀 9722

這道題是校模擬的一道題,

本來的樸素想法是貪心,當時得了40分,但是程式很亂

第二次修改了資料結構,程式變得清爽許多,但是分數沒有改變,後來手動加了乙個特判多了二十

第三次按照正解的思路但是仍然出了一點小bug,最後成功

首先用貪心的時候要做乙個簡單的正確性證明,可以舉幾個特殊的例子,

正確的做法應該是二分然後不斷逼近,

標程//原本是說b總和除以w總和的最大值,將其轉換為b-x*w,

//算其餘下多少,不斷接近

#include

#include

#include

#include

#include

using namespace std;

struct dateg[1200];

int w[6000],b[6000];//b是美麗值,w是重量

float ps[1200];

int n,m,k;

int w2,b2;

float v2;

int ok(float x)

void solve()

printf("%.2f",(l+r)/2.0);

}int main()

}solve();

return 0;

}/*學姐的更優雅的二分寫法

float l=0,r=1500;

for(int time=0;time<=100;time++)

printf("%.2f",(l+r)/2.0);

二分貪心 21

題目大概 有n堆積木,積木高度不同,每個小方塊高度相同。問,最少移動多少小方塊,使得這些積木堆高度相等。思路 先求這些積木的平均數,在把所有的高度與平均數的差值加起來,最後除2,就是最少移動的方塊數。感想 這個題有一點很坑人,最後輸出的時候有乙個小點,不注意看看不到。include include ...

二分貪心 E

題目 輸入n和c,n代表有n間屋子c代表有c頭牛,然後輸入n個數代表這n間房子的座標,牛不喜歡這個布局,一進去就會很暴躁,所以要把牛分的盡可能的遠求最近兩頭牛的最大距離。解題思路 建立乙個陣列存這些房子的座標,然後用sort將這些座標排序,然後令l 0,r a n mid l r 2,先用mid當作...

二分貪心 T

題目 有1 1,2 2,3 3,4 4,5 5,6 6大小的盒子,要把它們裝到6 6的盒子裡,它們的高度都是相同的,用最少的6 6盒子把所有尺寸的盒子都裝起來。解題思路 6 6,5 5以及4 4尺寸的物品每個物品需要占有乙個箱子,3 3的物品乙個箱子可以放4個,2 2的物品箱子可以放9個,1 1的可...