zoukankan      html  css  js  c++  java
  • HDU6772:Lead of Wisdom——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=6772

    有 $k$ 种物品,每种物品最多只能佩戴一件。对于第 $i$ 个物品,它有四个属性 $a_i,b_i,c_i,d_i$ 。假设玩家穿戴的物品集合为 $S$ ,玩家的伤害率 $DMG$ 可以通过以下公式计算:

    $DMG=(100+∑_{i∈S}a_i)(100+∑_{i∈S}b_i)(100+∑_{i∈S}c_i)(100+∑_{i∈S}d_i)$

    请最大化 $DMG$ 。

    谨以此题纪念爆〇的模拟。

    人傻自带大常数系列。

    暴力即可,复杂度大概就是你假设每组有2个/3个,然后大概能跑得过。

    但是我仍然没想明白我都特判了每个为0的组仍然还是TLE(可能多了个2的常数吧……)

    没办法按着标程打的。

    #include<cmath>
    #include<queue>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int N=55;
    inline int read(){
        int X=0,w=0;char ch=0;
        while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
        while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
        return w?-X:X;
    }
    ll ans;
    int n,k,m,ID[N];
    int v[N][N][4],l[N];
    void dfs(int i,int a,int b,int c,int d){
        if(i>m){
            ans=max(ans,(ll)a*b*c*d);
            return;
        }
        int id=ID[i];
        for(int j=1;j<=l[id];j++){
            dfs(i+1,a+v[id][j][0],b+v[id][j][1],c+v[id][j][2],d+v[id][j][3]);
        }
    }
    int main(){
        int T=read();
        while(T--){
            n=read(),k=read(),m=0;
            for(int i=1;i<=k;i++)l[i]=0;
            for(int i=1;i<=n;i++){
                int id=read();
                v[id][++l[id]][0]=read();
                v[id][l[id]][1]=read();
                v[id][l[id]][2]=read();    
                v[id][l[id]][3]=read();
            }
            for(int i=1;i<=k;i++){
                if(l[i])ID[++m]=i;
            }
            ans=0;
            dfs(1,100,100,100,100);
            printf("%lld
    ",ans);
        }
    }

    +++++++++++++++++++++++++++++++++++++++++++

     +本文作者:luyouqi233。               +

     +欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

    +++++++++++++++++++++++++++++++++++++++++++

  • 相关阅读:
    C 习题
    gcc
    几何视角看线性方程组解的情况
    JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
    为什么重写了equals(),还要重写hashCode()?
    关于ArrayList的越界问题?
    通过实例聊聊Java中的多态
    java异常处理实例分析
    Java: Integer用==比较时127相等128不相等的原因
    Java并发编程:Lock
  • 原文地址:https://www.cnblogs.com/luyouqi233/p/13368963.html
Copyright © 2011-2022 走看看