• Evanyou Blog 彩带


      题目传送门

    装备购买

    格式难调,题面就不放了。


      分析:

      一句话,有$n$件物品,每件物品有$m$个属性和一个花费值,如果一个装备的属性值可以由其他装备的属性值改变系数后组合得到那就不买,求购买最多装备情况下的最小花费。

      这是一道实数线性基的模板,实数线性基和平常常见的二进制线性基区别不大,只是用到了高斯消元的思想来实现,具体还是看代码吧。

      Code:

    //It is made by HolseLee on 4th Oct 2018
    //Luogu.org P3265
    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    const int N=507;
    const double eps=1e-4;
    int n,m,ans,cnt,p[N];
    struct Node {
        int cost; double x[N];
        bool operator < (const Node x) const {
            return cost < x.cost;
        }
    }a[N];
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin>>n>>m;
        for(int i=1; i<=n; ++i)
        for(int j=1; j<=m; ++j) 
            cin>>a[i].x[j];
        for(int i=1; i<=n; ++i)
            cin>>a[i].cost;
        sort(a+1,a+n+1);
        for(int i=1; i<=n; ++i)
        for(int j=1; j<=m; ++j) 
        if( fabs(a[i].x[j])>eps ){
            if( !p[j] ) {
                p[j]=i; cnt++; ans+=a[i].cost;
                break;
            } else {
                double t=a[i].x[j]/a[p[j]].x[j];
                for(int k=j; k<=m; ++k)
                    a[i].x[k]-=a[p[j]].x[k]*t;
            }
        }
        printf("%d %d
    ",cnt,ans);
        return 0;
    }
  • 相关阅读:
    SQL 通配符
    正则表达式
    与运算(&)、或运算(|)、异或运算(^)、右移运算符(>>>)本质介绍
    博客园博客目录自动生成(页面目录)
    Linux查看并杀死被占用的端口
    Eclipse的环境配置
    L-Rui
    Web页面弹出窗口代码大全
    linux-用户
    linux-网络
  • 原文地址:https://www.cnblogs.com/cytus/p/9742281.html
Copyright © 2020-2023  润新知