zoukankan      html  css  js  c++  java
  • 2020杭电HDU-6768多校第二场Lead of Wisdom(暴力DFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6772
    博客园食用:https://www.cnblogs.com/lonely-wind-/p/13374448.html
    CSDN食用:https://blog.csdn.net/qq_43906000/article/details/107569361

    Problem Description

    In an online game, "Lead of Wisdom" is a place where the lucky player can randomly get powerful items.
    在这里插入图片描述

    There are k types of items, a player can wear at most one item for each type. For the i-th item, it has four attributes ai,bi,ci and di. Assume the set of items that the player wearing is S, the damage rate of the player DMG can be calculated by the formula:

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

    Little Q has got n items from "Lead of Wisdom", please write a program to help him select which items to wear such that the value of DMG is maximized.

    Input
    The first line of the input contains a single integer T (1≤T≤10), the number of test cases.

    For each case, the first line of the input contains two integers n and k (1≤n,k≤50), denoting the number of items and the number of item types.

    Each of the following n lines contains five integers ti,ai,bi,ci and di (1≤ti≤k, 0≤ai,bi,ci,di≤100), denoting an item of type ti whose attributes are ai,bi,ci and di.

    Output
    For each test case, output a single line containing an integer, the maximum value of DMG.

    Sample Input
    1
    6 4
    1 17 25 10 0
    2 0 0 25 14
    4 17 0 21 0
    1 5 22 0 10
    2 0 16 20 0
    4 37 0 0 0

    Sample Output
    297882000

    emmm,看题目。。。似乎可以爆搜诶,试了一发DFS。。。一发A了emmm,那就似乎没什么好说的了,不过我听说随机数也能过,榜上0ms估计都是随机数刚过去的吧QAQ,我也写了波随机数。。。一言难尽可能是我姿势不对吧。

    以下是AC的DFS代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int mac=100;
    
    int tp[mac];
    struct node
    {
    	int a,b,c,d;
    };
    vector<node>equip[mac];
    ll ans=0;
    
    void dfs(int a,int b,int c,int d,int num)
    {
    	if (num==0){
    		ll sum=(100LL+a)*(100LL+b)*(100LL+c)*(100LL+d);
    		ans=max(ans,sum);
    		return;
    	}
    	int sz=equip[num].size();
    	for (int i=0; i<sz; i++){
    		a+=equip[num][i].a; b+=equip[num][i].b;
    		c+=equip[num][i].c; d+=equip[num][i].d;
    		dfs(a,b,c,d,num-1);
    		a-=equip[num][i].a; b-=equip[num][i].b;
    		c-=equip[num][i].c; d-=equip[num][i].d;
    	}
    }
    
    int main(int argc, char const *argv[])
    {
    	int t;
    	scanf ("%d",&t);
    	while (t--){
    		int n,k;
    		scanf ("%d%d",&n,&k);
    		int cnt=0;
    		ans=0;
    		for (int i=1; i<=k; i++) equip[i].clear(); 
    		memset(tp,0,sizeof tp);
    		for (int i=1; i<=n; i++){
    			int type,a,b,c,d;
    			scanf ("%d%d%d%d%d",&type,&a,&b,&c,&d);
    			if (!tp[type]) equip[++cnt].push_back(node{a,b,c,d}),tp[type]=cnt;
    			else equip[tp[type]].push_back(node{a,b,c,d});
    		}
    		dfs(0,0,0,0,cnt);
    		printf("%lld
    ",ans);
    	}
    	return 0;
    }
    
    
    路漫漫兮
  • 相关阅读:
    HTML5 CSS3简要教程
    WP模拟器修改语言为中文方法
    仿牛华数码频道网整站源码
    backBarButtonItem 颜色/文字修改
    这是html5中WebGL的演示
    CSS3/jQuery创意盒子动画菜单
    bootstrap学习和使用的经验总结
    uploadify插件实现多个图片上传并预览
    绝对炫的幻灯片插件-SKITTER
    制作手机使用的网页图片查看器
  • 原文地址:https://www.cnblogs.com/lonely-wind-/p/13374448.html
Copyright © 2011-2022 走看看