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的更多相关文章

  1. hdu3720 Arranging Your Team

    Arranging Your Team Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  2. HDU 3720 Arranging Your Team(DFS)

    题目链接 队内赛里,匆匆忙忙写的. #include <cstdio> #include <cstring> #include <iostream> #includ ...

  3. hdu 3720 Arranging Your Team 枚举

    不可能解可以直接判断. 搭配产生的附加分可以用一个二维数组保存. 枚举1442,4种类型的人,因为总人数只有23个,所以可以搜索暴力枚举,然后保存最优解. 注意trick,答案可能为负数,所以初始化a ...

  4. HDU 3720 Arranging Your Team

    先分组,然后暴力:注意  初始化时不要为0 会有负数:我直接二进制枚举: dfs是正解:呵呵 #include <iostream> #include <cstdio> #in ...

  5. Arranging Your Team HDU - 3720 【DFS】

    思路 题意:此题大意是指首先给你23个队员的信息,包括他们的名字,能力值,在赛场上的职位.然后给出几个若能满足某两个队员同时在球场上就额外加上一定的值.最后让你从23个队员中选出11个人,使得最终的v ...

  6. 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 ...

  7. Create a Team in RHEL7

    SOLUTION VERIFIED September 13 2016 KB2620131 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  8. Team Leader 你不再只是编码, 来炖一锅石头汤吧

    h3{ color: #000; padding: 5px; margin-bottom: 10px; font-weight: bolder; background-color: #ccc; } h ...

  9. 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 ...

随机推荐

  1. 详谈java集合框架

    1.为什么使用集合框架 当我们并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java集合框架 2.Java集合框架包含的内容 接口:(父类)Collection接口下包含Li ...

  2. Address space layout randomization

    Address space layout randomization (ASLR) is a computer security technique involved in preventing ex ...

  3. C# WebKitBrowser 设置内容

    WebKit.WebKitBrowser kitBrowser = new WebKit.WebKitBrowser(); kitBrowser.Dock = DockStyle.Fill; // k ...

  4. function&箭头函数

    JS中this到底指向谁? function:谁调用指向谁 var id = '654321' var handler = { id: '123456', init: function() { con ...

  5. Gym - 101611D Decoding of Varints(阅读理解题 )

    Decoding of Varints ​ 题意&思路: 首先根据红色边框部分的公式算出x,再有绿色部分得知,如果x是偶数则直接除以2,x是奇数则(x+1)/-2. PS:这题有数据会爆掉un ...

  6. [luogu1485 HNOI2009] 有趣的数列 (组合数学 卡特兰数)

    传送门 Solution 卡特兰数 排队问题的简单变化 答案为\(C_{2n}^n \pmod p\) 由于没有逆元,只好用分解质因数,易证可以整除 Code //By Menteur_Hxy #in ...

  7. c# 异步执行

    c#异步执行 Action logAction = () => {////执行的操作 }; logAction.BeginInvoke(null, null);

  8. hadoop-磁盘出现坏盘,如何能在线换盘

    涉及到磁盘存储路径的配置文件参数有: hdfs-site.xml <name>dfs.datanode.data.dir</name> yarn-site.xml <na ...

  9. 洛谷 P1521 求逆序对

    题目描述 我们说(i,j)是a1,a2,…,aN的一个逆序对当且仅当i<j且ai>a j.例如2,4,1,3,5的逆序对有3个,分别为(1,3),(2,3),(2,4).现在已知N和K,求 ...

  10. 开启mysql远程连接

    mysql默认只允许本地连接,也就是说,在安装完mysql后会存在两个root账户,他们的host分别是localhost和127.0.0.1 use mysql; update user set h ...