hdu3720 Arranging Your Team
Arranging Your Team
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1218 Accepted Submission(s): 360
Then an integer M indicates that there are M special pairs. Each of the following M lines contains Si, Sj and Cij, means that if Si and Sj are both on the field, the additional profit is Cij. (-100 ≤ Cij ≤ 100). Si and Sj are different strings, and must be in the previous 23 names. All the (Si, Sj) pairs
are different.
De_Sanctis 80 goalkeeper
Marchetti 80 goalkeeper
Zambrotta 90 defender
Cannavaro 90 defender
Chiellini 90 defender
Maggio 90 defender
Bonucci 80 defender
Criscito 80 defender
Bocchetti 80 defender
Pirlo 90 midfielder
Gattuso 90 midfielder
De_Rossi 90 midfielder
Montolivo 90 midfielder
Camoranesi 80 midfielder
Palombo 80 midfielder
Marchisio 80 midfielder
Pepe 80 midfielder
Iaquinta 90 striker
Di_Natale 90 striker
Gilardino 80 striker
Quagliarella 80 striker
Pazzini 80 striker
1
Pirlo Quagliarella 50
ZhangSan01 50 goalkeeper
ZhangSan02 50 defender
ZhangSan03 50 defender
ZhangSan04 50 defender
ZhangSan05 50 defender
ZhangSan06 50 defender
ZhangSan07 50 defender
ZhangSan08 50 defender
ZhangSan09 50 defender
ZhangSan10 50 defender
ZhangSan11 50 defender
ZhangSan12 50 defender
ZhangSan13 50 defender
ZhangSan14 50 defender
ZhangSan15 50 defender
ZhangSan16 50 midfielder
ZhangSan17 50 midfielder
ZhangSan18 50 midfielder
ZhangSan19 50 midfielder
ZhangSan20 50 midfielder
ZhangSan21 50 midfielder
ZhangSan22 50 midfielder
ZhangSan23 50 midfielder
0
impossible
/*
* Author: Joshua
* Created Time: 2014年08月29日 星期五 18时52分48秒
* File Name: hdu3720.cpp
*/
#include<cstdio>
#include<cstring>
#include<map>
#include<string>
using namespace std;
#define inf 100000000
char s[35],ps[35];
map<string,int> mp;
const int limit[5]={0,1,4,4,2};
int v[25],g[25][25],id[25],cnt[5],t[12],ans; int gao(char x[])
{
if (x[0]=='g') return 1;
if (x[0]=='d') return 2;
if (x[0]=='m') return 3;
return 4;
} void init()
{
int m,x;
mp.clear();
memset(g,0,sizeof(g));
for (int i=1;i<=23;++i)
{
mp[s]=i;
id[i]=gao(ps);
if (i<23) scanf("%s%d%s",s,&v[i+1],ps);
}
scanf("%d",&m);
for (int i=1;i<=m;++i)
{
scanf("%s%s%d",s,ps,&x);
g[mp[s]][mp[ps]]=x;
g[mp[ps]][mp[s]]=x;
}
} void updata()
{
int temp=0;
for (int i=1;i<=11;++i)
temp+=v[t[i]];
for (int i=1;i<=11;++i)
for (int j=i+1;j<=11;++j)
temp+=g[t[i]][t[j]];
if (temp>ans) ans=temp;
} void dfs(int x,int y)
{
if (y==11)
{
updata();
return;
}
if (x>23) return;
for (int i=0;i<=1;++i)
{
cnt[id[x]]+=i;
if (cnt[id[x]]<=limit[id[x]])
{ if (i) t[y+1]=x;
dfs(x+1,y+i);
}
cnt[id[x]]-=i;
}
} void solve()
{
memset(cnt,0,sizeof(cnt));
ans=-inf;
dfs(1,0);
if (ans==-inf) printf("impossible\n");
else printf("%d\n",ans);
} int main()
{
while (scanf("%s%d%s",s,&v[1],ps)!=EOF)
{
init();
solve();
}
return 0;
}
hdu3720 Arranging Your Team的更多相关文章
- HDU 3720 Arranging Your Team(DFS)
题目链接 队内赛里,匆匆忙忙写的. #include <cstdio> #include <cstring> #include <iostream> #includ ...
- hdu 3720 Arranging Your Team 枚举
不可能解可以直接判断. 搭配产生的附加分可以用一个二维数组保存. 枚举1442,4种类型的人,因为总人数只有23个,所以可以搜索暴力枚举,然后保存最优解. 注意trick,答案可能为负数,所以初始化a ...
- HDU 3720 Arranging Your Team
先分组,然后暴力:注意 初始化时不要为0 会有负数:我直接二进制枚举: dfs是正解:呵呵 #include <iostream> #include <cstdio> #in ...
- Arranging Your Team
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=35800#problem/D #include <iostream> #inc ...
- Arranging Your Team HDU - 3720 【DFS】
思路 题意:此题大意是指首先给你23个队员的信息,包括他们的名字,能力值,在赛场上的职位.然后给出几个若能满足某两个队员同时在球场上就额外加上一定的值.最后让你从23个队员中选出11个人,使得最终的v ...
- Configure a VLAN on top of a team with NetworkManager (nmcli) in RHEL7
SOLUTION VERIFIED September 13 2016 KB1248793 Environment Red Hat Enterprise Linux 7 NetworkManager ...
- Create a Team in RHEL7
SOLUTION VERIFIED September 13 2016 KB2620131 Environment Red Hat Enterprise Linux 7 NetworkManager ...
- Team Leader 你不再只是编码, 来炖一锅石头汤吧
h3{ color: #000; padding: 5px; margin-bottom: 10px; font-weight: bolder; background-color: #ccc; } h ...
- Configure bridge on a team interface using NetworkManager in RHEL 7
SOLUTION IN PROGRESS February 29 2016 KB2181361 environment Red Hat Enterprise Linux 7 Teaming,Bridg ...
随机推荐
- nyoj_2:括号配对问题
模拟栈的操作,很基础的一道题 题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=2 #include<stdio.h> #inc ...
- Sqlserver事务备份和还原实例
create database mydb use mydb go create table account( id ), name ), balance float ) go select * fro ...
- 单元测试报connection is allready closed导致dailybuild中断的解决方案——类加载机制的应用
现象; 前段时间在dailybuild过程中,经常遇到connection is allready closed错误,特别是在dailybuild高峰期. 分析定位: 这个错误是的起因比较多,这里的情 ...
- log4j(七)——log4j.xml简单配置样例说明
一:测试环境与log4j(一)--为什么要使用log4j?一样,这里不再重述 二:老规矩,先来个栗子,然后再聊聊感受 (1)这里栗子有一点特别呀!给出了包名唉!想必有用,是的,配置文件中要特别说明一下 ...
- (转)Spring定时任务的几种实现
Spring定时任务的几种实现 博客分类: spring框架 quartzspringspring-task定时任务注解 Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要 ...
- linux的文件权限与目录配置<----->第二章
1.Linux文件属性 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] ...
- call和apply和bind区别
call和apply特征一样 都是用来调用函数 立即调用 但是可以在调用函数的同时 通过第一个参数指定函数内部this的指向 call 调用的时候 参数必须以参数列表的形式进行传递 也就是以逗号分隔的 ...
- matrix()方法与translate()、scale()、rotate()、skew()方法的关系
2D变换方法translate().scale().rotate().skew()与matrix()的关系举例介绍. 一.介绍 2D变换方法: translate():根据左(X轴)和顶部(Y轴)位置 ...
- 聊聊synchronized的锁问题
本文不会特别深入细致地讨论synchronized,只是做一个通俗易懂的说明,以及看清一类问题的本质,希望能给大家一点启发. 问题描述 有一个类A,提供了三个方法.分别是静态同步方法,非静态同步方法, ...
- RabbitMQ入门-从HelloWorld开始
从读者的反馈谈RabbitMQ 昨天发完<RabbitMQ入门-初识RabbitMQ>,我陆陆续续收到一些反馈.鉴于部分读者希望结合实例来讲 期待下篇详细,最好结合案例.谢谢! 哪都好,唯 ...