1018 Communication System (暴力)

题目大意:要买n个零件,每个零件可以由m个厂家提供,,每个零件都有相应的b值和p值。(每个零件只能买一个)现在要求你求出最大的min(b) /sum(p) min(b)表示的是每个零件的最小b值 sum(p)表示的是每个零件的p值的和

解题思路:直接暴力

;#define maxn 110struct device{int b, p;}D[maxn][maxn];int num[maxn];int n;int cmp(const device a, const device b) {return a.p < b.p;}void solve() {scanf(“%d”, &n);for (int i = 0; i < n; i++) {scanf(“%d”, &num[i]);for (int j = 0; j < num[i]; j++)scanf(“%d%d”, &D[i][j].b, &D[i][j].p);sort(&D[i][0], &D[i][0] + num[i], cmp);}double ans = 0.0;for (int i = 0; i < n; i++)for (int j = 0; j < num[i]; j++) {int min_b = D[i][j].b;int sum_p = D[i][j].p;int k;for (k = 0; k < n; k++) {if (k == i)continue;int tmp = 0;while (tmp < num[k] && D[k][tmp].b < min_b)tmp++;if (tmp >= num[k])break;sum_p += D[k][tmp].p;}if(k >= n && (double)min_b / (double)sum_p > ans)ans = (double)min_b / (double)sum_p;}printf(“%0.3f\n”, ans);}int main() {int test;scanf(“%d”, &test);while(test–) {solve();}return 0;}

喜欢真实的人,要做真实的人,所以从来不会想要刻意模仿任何人。

1018 Communication System (暴力)

相关文章:

你感兴趣的文章:

标签云: