POJ 1018 列舉 貪心

2021-06-07 13:31:53 字數 963 閱讀 8935

題意:有n件商品,每件商品有m個製造商,每個製造商製造的商品有不同的 頻寬和**,每件商品必須選乙個製造商,最後的頻寬是所有頻寬中的最小值,價值是所有商品的總**,目的是使b/p最大,輸出最大的b/p的值。

思路:由於資料範圍比較小,所以可以列舉。可以求出所有製造商的商品的最大頻寬和最小頻寬,然後列舉在兩者之間的頻寬即可。

**:

#include #include #include #include using namespace std;

#define clr(arr,val) memset(arr,val,sizeof(arr))

const int n = 110;

struct message;

struct goodsgg[n];

bool cmp(message a,message b)

int main()

sort(gg[i].mm,gg[i].mm+num[i],cmp);

if(minb > gg[i].mm[0].band)

minb = gg[i].mm[0].band;

if(maxb < gg[i].mm[num[i]-1].band)

maxb = gg[i].mm[num[i]-1].band;

}double ans = 0.0;

int b;

for(int pos = minb; pos <= maxb;pos = b+1)

}if(vv == -1)

for(int j = vv;j < num[i];++j)

sum += gg[i].mm[vv].price;

b = min(b,gg[i].mm[vv].band);

} ans = max(ans,(double)b/sum);

}printf("%.3lf\n",ans);

} return 0;

}

poj 2002 列舉 雜湊

給定n個點,求出這些點一共可以構成多少個正方形。sample input 4 1 00 1 1 10 0 90 0 1 02 0 0 21 2 2 20 1 1 12 1 4 2 5 3 70 0 5 20sample output 1 61可列方程 可以得出 知道兩點求出其餘兩點 x3 node ...

51nod1625 列舉 貪心

題意 中文題誒 思路 列舉 貪心 一開始寫的行和列同時列舉,寫的時候就擔心可能行和列會相互影響,提交結果證明我的擔心是對的 注意到1 n 10,1 m 200,n很小,那麼所有行的狀態不超過1024種,所以可以列舉所有行的狀態,對於每一種行的狀態下再對列貪心。枚舉行的所有狀態可以用dfs。1 inc...

poj1873 列舉 凸包

題意 平面上有n棵樹,現在要砍掉其中的一部分來做成籬笆將剩下的樹包圍起來,現在給出每棵樹的座標 價值和可以製造籬笆的長度,求砍掉最少價值的樹,將剩下的樹包圍起來,當兩種方式的價值相同時,取砍掉樹更少的方式。由於樹棵樹不大於15,可以二進位制列舉情況,求出其它樹構成的凸包的周長即可 include i...