一个菜菜的蜕变之路?

时间是个常数,也是个变数

Bzoj P4004 [JLOI2015]装备购买___贪心+线性基

题目大意:

NMzi(aj,.....,am)
ci

1<=n;m<=500;0<=aj<=1000

分析:

从小到大排序,
然后贪心选取,
动态维护线性基

代码:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define eps 1e-6
#define N 505

using namespace std;

typedef long double Ld;

struct Node {
    Ld a[N];
    int v;
}a[N];
int n, m, f[N];

bool cmp(Node aa, Node bb) {
    return aa.v < bb.v;
}

int main() {
    scanf("%d %d", &n, &m);
    for (int i = 1;i <= n; i++)
         for (int j = 1; j <= m; j++) cin>>a[i].a[j];
    for (int i = 1; i <= n; i++) scanf("%d", &a[i].v);
    sort(a + 1, a + n + 1, cmp);
    int ans1 = 0, ans2 = 0;
    for (int i = 1; i <= n; i++)
         for (int j = 1; j <= m; j++)
              if (fabs(a[i].a[j]) > eps) {
                if (!f[j]) {
                     f[j] = i;
                     ans1++;
                     ans2 += a[i].v;
                     break;
                }
                else {
                     Ld x = a[i].a[j] / a[f[j]].a[j];
                     for (int k = j; k <= m; k++)
                          a[i].a[k] -= a[f[j]].a[k] * x;
                }
            }
    printf("%d %d\n", ans1, ans2);
}
阅读更多
版权声明:欢迎借鉴,谢绝抄搬。 https://blog.csdn.net/Gx_Man_VIP/article/details/80551006
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭