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

來源:互聯網
上載者:User

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

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

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

主要演算法思想如下

先求各個裝置最小頻寬中的最小值和最大頻寬中的最小值
然後遍曆最小頻寬到最大頻寬的區間,求最大比例,貪心搜尋最優方案

加速方案

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

另外總結下查看資料類型表示範圍的方法,以int為例

1,  要看int 佔用多少位元組:  sizeof(int)2,  要看int 佔用多少bits:  sizeof(int) * 83,  要看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 <iostream>using namespace std;#define MAXN 32767//先求各個裝置最小頻寬中的最小值和最大頻寬中的最小值//然後遍曆最小頻寬到最大頻寬的區間,求最大比例,貪心搜尋最優方案int main(){int t,n,sump,maxb,minb,minp,i,j,k,low,high;int b[101][101],p[101][101],m[101],flag[MAXN];double best;cin>>t;while(t--){memset(flag, 0, sizeof(flag));cin>>n;low = high = MAXN;for(i = 0; i < n; i++){maxb = 0;minb = MAXN;//變數初始化的位置要非常小心,何時需要在下一次迴圈重複記錄何時初始化cin>>m[i];for(j = 0; j < m[i]; j++){cin>>b[i][j]>>p[i][j];flag[b[i][j]] = true;if(b[i][j] < minb) minb = b[i][j] ;if(b[i][j] > maxb) maxb = b[i][j] ;}if(low > minb)//各個裝置最小頻寬中的最小值low = minb;if(high > maxb)//各個裝置最大頻寬中的最小值high = maxb;   }best = 0;for(k = low; k <= high; k++){if(flag[k]){//只有輸入中間出現過的並且位於上下界區間中頻寬值才會考慮,節省搜尋時間,空間換時間sump = 0;for(i = 0; i < n; i++){minp = MAXN;for(j = 0; j < m[i]; j++){if(b[i][j] >= k && p[i][j] < minp){minp = p[i][j];}}sump += minp;}if((double)k / (double)sump > best){best = (double)k / (double)sump;}}}printf("%.3lf\n",best);//保留3位小數}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.