POJ 1018 通訊裝置購買方案的選擇 貪心

2021-06-02 16:06:46 字數 1317 閱讀 4361

本題很簡單,但是還是wa了幾次,主要原因是

1、變數初始化的位置要非常小心,何時需要在下一次迴圈重覆記錄何時初始化,由於這個原因wa太可惜了

2、輸出保留三位小數的格式控制一定要注意

主要演算法思想如下

先求各個裝置最小頻寬中的最小值和最大頻寬中的最小值

然後遍歷最小頻寬到最大頻寬的區間,求最大比例,貪心搜尋最優方案

加速方案

設定標誌陣列flag,只有輸入中間出現過的並且位於上下界區間中頻寬值才會考慮,節省搜尋時間,空間換時間

另外總結下檢視資料型別表示範圍的方法,以int為例

1,  要看int 占用多少位元組:  sizeof(int)

2,  要看int 占用多少bits:  sizeof(int) * 8

3,  要看int 所能表示的最大正整數:  (unsigned int)(-1) / 2 

輸出格式精度控制 %m.ns 及%m.nd舉例

第乙個m表示輸出字串的長度,n表示從左邊數第n位開始對齊

第二個m表示輸出十進位制數的位數,n表示小數點後的位數

比如24.1234

如果以%5.2d輸出為24.12

source code

problem:1018

user:yangliuacmer

memory:460k

time:47ms

language:c++

result:accepted

#include using namespace std;

#define maxn 32767

//先求各個裝置最小頻寬中的最小值和最大頻寬中的最小值

//然後遍歷最小頻寬到最大頻寬的區間,求最大比例,貪心搜尋最優方案

int main()

if(low > minb)//各個裝置最小頻寬中的最小值

low = minb;

if(high > maxb)//各個裝置最大頻寬中的最小值

high = maxb;

} best = 0;

for(k = low; k <= high; k++)

}sump += minp;

}if((double)k / (double)sump > best)}}

printf("%.3lf\n",best);//保留3位小數

} return 0;

}

POJ 1018 列舉 貪心

題意 有n件商品,每件商品有m個製造商,每個製造商製造的商品有不同的 頻寬和 每件商品必須選乙個製造商,最後的頻寬是所有頻寬中的最小值,價值是所有商品的總 目的是使b p最大,輸出最大的b p的值。思路 由於資料範圍比較小,所以可以列舉。可以求出所有製造商的商品的最大頻寬和最小頻寬,然後列舉在兩者之...

POJ 3662 通訊線路

摘要 簡單來講就是在無向圖上求出一條從1到n的路徑,使路徑上第k 1大的邊權盡量小。第k大的盡量小,這種表述就容易讓人想到二分。那麼我們只要把權值大於mid的路徑權值設為1,小於mid的置為0,求1到n的最短路是否不超過n即可。include include include include incl...

1007 422通訊問題

一 422信問題記錄 情景 1,通訊資料鏈為dsp晶元28335 處理能力較低,對外介面422,波特率115200 2,通訊另外一端板載計算機 linux系統,埠422 115200 二 現象 1,任務計算機通過串列埠傳送資料給資料鏈,資料鏈接收資料正常,資料鏈向任務計算機傳送資料,出現資料異常。接...