Arranging Your Team
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=35800#problem/D
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <cstdio>
#include <vector>
#include <map>
using namespace std;
const int INF=<<;
const int N= ; bool vis[N];
vector<int>p[N];
map<string,int>name_id;
map<string,int>pos_id;
int value[N],link[N][N],ans; int res()
{
int ans1 = ;
for (int i = ; i <= ; i++)
if(vis[i])
ans1+=value[i];
for (int i = ; i <= ; i++)
{
for (int j = i+; j <= ; j++)
{
if (vis[i]&&vis[j])
ans1+= link[i][j];
}
}
return ans1;
} void dfs4(int cnt,int pos)
{
if (cnt==)
{
//cout<<res()<<endl;
ans = max(ans,res());
return ;
}
for (int i = pos; i <(signed)p[].size(); i++)
{
vis[p[][i]] = true;
dfs4(cnt+,i+);
vis[p[][i]] = false;
}
}
void dfs3(int cnt,int pos)
{
if (cnt==)
{
dfs4(,);
return ;
}
for (int i = pos; i <(signed)p[].size(); i++)
{
vis[p[][i]] = true;
dfs3(cnt+,i+);
vis[p[][i]] = false;
}
}
void dfs2(int cnt,int pos)
{
if (cnt==)
{
dfs3(,);
return ;
}
for (int i = pos; i < (signed)p[].size(); i++)
{
vis[p[][i]] = true;
dfs2(cnt+,i+);
vis[p[][i]] = false;
}
}
void dfs1(int cnt,int pos)
{
if (cnt==)
{
dfs2(,);
return;
}
for (int i = pos; i < (signed)p[].size(); i++)
{
vis[p[][i]] = true;
dfs1(cnt+,i+);
vis[p[][i]] = false;
}
}
void init()
{
ans = -INF;
name_id.clear();
memset(value,,sizeof(value));
memset(link,,sizeof(link));
memset(vis,false,sizeof(vis));
for (int i = ; i <= ; i++)
p[i].clear();
}
int main()
{
pos_id["goalkeeper"] = ;
pos_id["striker"] = ;
pos_id["midfielder"] = ;
pos_id["defender"] = ;
string name,pos;
while(cin>>name)
{
init();
cin>>value[]>>pos;
name_id[name] = ;
p[pos_id[pos]].push_back();
for (int i = ; i <= ; i++)
{
cin>>name>>value[i]>>pos;
name_id[name] = i;
p[pos_id[pos]].push_back(i);
}
int m,val;
string name1,name2;
cin>>m;
while(m--)
{
cin>>name1>>name2>>val;
link[name_id[name1]][name_id[name2]] = val;
link[name_id[name2]][name_id[name1]] = val;
}
if (p[].size() < ||p[].size() < ||p[].size() < ||p[].size() < )
{
printf("impossible\n");
continue;
}
dfs1(,);
printf("%d\n",ans);
}
return ;
}
Arranging Your Team的更多相关文章
- hdu3720 Arranging Your Team
Arranging Your Team Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- 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 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 ...
随机推荐
- Python语言之变量1(数值,字符串,布尔)
1.数值 整数:2, -2 长整数:2**1024, 2**2048(真的可以很~长~~~,手残算了个2**100000,IDLE还真给打出来了,ORZ) 浮点数:7.05, 1E2(100.0), ...
- js获得子节点, 获得tab转json值
//提取表格的值,JSON格式 function GetTableData(table) { var tableData = new Array(); //创建数组 alert("行数:&q ...
- Requirejs常用配置和应用
requirejs.require方法冲突 如果加载了多个requirejs脚本,每个requirejs会判断是否浏览器已经实现了require和define方法.如果浏览器已经自带require和d ...
- HDU - 2159 FATE(二维dp之01背包问题)
题目: 思路: 二维dp,完全背包,状态转移方程dp[i][z] = max(dp[i][z], dp[i-1][z-a[j]]+b[j]),dp[i][z]表示在杀i个怪,消耗z个容忍度的情况下 ...
- PAT 1034. Head of a Gang
1034. Head of a Gang (30) One way that the police finds the head of a gang is to check people's phon ...
- linux学习8-正则表达式基础
正则表达式基础 实验介绍 虽然我们这一节的标题是正则表达式,但实际这一节实验只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表 ...
- JavaScript基本知识----操作符,流程控制,循环,字符串方法,数组方式,补充方法
操作符 算术运算 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 【Codeforces 459D】Pashmak and Parmida's problem
[链接] 我是链接,点我呀:) [题意] 定义两个函数 f和g f(i)表示a[1..i]中等于a[i]的数字的个数 g(i)表示a[i..n]中等于a[i]的数字的个数 让你求出来(i,j) 这里i ...
- 【Codeforces 1114B】Yet Another Array Partitioning Task
[链接] 我是链接,点我呀:) [题意] 让你把数组分成k个连续的部分 使得每个部分最大的m个数字的和最大 [题解] 把原数组降序排序 然后选取前m*k个数字打标记 然后对于原数组 一直贪心地取 直到 ...
- 【微软2017年预科生计划在线编程笔试 A】Legendary Items
[题目链接]:https://hihocoder.com/problemset/problem/1489 [题意] 每轮游戏; 你一开始有p的概率获得超神标记; 如果这轮游戏你没获得超神标记; 那么你 ...