zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    bzoj 3040: 最短路(road)
    bzoj 2049: [Sdoi2008]Cave 洞穴勘测
    poj 2505 A multiplication game
    hdu 1729 Stone Game
    经典博弈模型
    hdu 1848 Fibonacci again and again(SG函数)
    hdu 2147 kiki's game(巴什博弈)
    hdu 1847 Good Luck in CET-4 Everybody!(巴什博弈)
    hdu 4388 Stone Game II
    poj 2234 Matches Game
  • 原文地址:https://www.cnblogs.com/cytus/p/9742281.html
Copyright © 2011-2022 走看看