poj 2976
題意給n組資料ai,bi,定義累計平均值為:
現給出乙個整數k,要求從這n個數中去掉k個數後,最大累計平均值能有多大?(四捨五入到整數)
思路取n−k個數,使得累計平均值最大。
定義c(x)表示能否取得n−k個數,使得累計平均值≥x。然後二分搜尋最大的x。
可以這樣判斷可行性:
只需要從大到小選取n−k個(100⋅ai−x⋅bi)並求和sum,根據sum≥0來判斷(上述的s表示n−k個元素下標的集合)
#include #include #include #include using namespace std;poj 3111typedef long long ll;
int n, k;
ll a[1000 + 4], b[1000 + 4];
double c[1000 + 4];
bool c(double x)
void solve()
printf("%.f\n", floor(lb + 0.5)); // 四捨五入
}int main()
return 0;
}
題意給出n個珠寶的vi和wi,從中選出k個珠寶,使得
最大,求出這k個珠寶的序列。
思路同上,排序時需記錄序號。
#include #include #include #include using namespace std;const double eps = 1e-6;
int n, k;
int v[100000 + 5], w[100000 + 5];
struct remian
} remain[100000 + 5];
bool c(double x)
sort(remain, remain + n);
double sum = 0.0;
for (int i = 0; i= 0;
}void solve()
for (int i = 0; i < k; ++i) printf(i == 0 ? "%d" : " %d", remain[i].id);
printf("\n");
}int main()
poj 2112 最大流 二分
題意 有k臺擠奶機,c頭奶牛,給出這k c個實體間的距離,求出每頭奶牛都到一台擠奶機去,怎麼分配使奶牛走的最大距離最小。用二分列舉最大距離,include include define n 500 define inf 0x3fffffff int map n n dis n gap n head ...
poj 2391 二分 最大流
思路 求最短時間,可以想到二分,然後判斷可行性。首先在原圖上求 floyd,得到每兩個棚之間的最短距離。然後拆點 將每個棚拆為 i 和 i 流進和流出 添邊 i,i inf 增加源點 s 和匯點 t,從 s 連邊到 i,容量為該棚現在的貓的數量,i 連邊到 t,容量為該棚的容量。若棚 i 和棚 j ...
poj 2455 二分 最大流
思路 求1 n的路徑中最長段的最小值,顯然要用到二分,我們二分最長段,如果當前u,v的距離小於等於limit,則連邊 雙向邊 邊容量為1,代表只能走1次。然後就是以1為源點,n為匯點跑最大流,如果maxflow t,則在 low,mid 中搜尋,否則就在 mid,high 中搜尋。1 include...