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 ;
}

最新文章

  1. Servlet基础-手工编写第一个servlet
  2. C#------获取最后一个&quot;/&quot;字符后面的所有内容
  3. 2015年九月八日---js学习总结
  4. jquery实现input输入框实时输入触发事件代码
  5. 当前时间 js
  6. [深入react] 4.牛逼闪闪的虚拟DOM
  7. Linux内核和驱动编译常见问题
  8. UVa1225 Digit Counting
  9. BNU OJ 50998 BQG&#39;s Messy Code
  10. linux学习(十)find命令、Linux文件后缀名、Linux和windows文件互传
  11. Python __new__ 实现单例模式 python经典面试题
  12. 潭州课堂25班:Ph201805201 MySQL第一课 (课堂笔记)
  13. git中 .ignore文件的配置 忽略不想上传的文件
  14. 使用PowerDesigner生成SQL语句
  15. yum安装报错:Failure when receiving data from the peer
  16. 【xshell】xshell设置快捷键 设置Ctrl+C Ctrl+V快捷键为复制粘贴
  17. Java对文件的读取方式以及它们的优缺点
  18. java对于Redis中jedis的操作
  19. RMAN备份与恢复之概念一
  20. Tomcat应用服务器被黑客 肉鸡攻击 记录

热门文章

  1. linux启动时开启screen
  2. CNN结构:HSV中的饱和度解析
  3. CAD保存高版本的dwg(com接口)
  4. Android—修改button属性
  5. 【转】jmeter定时调度,持续并发,使用简介
  6. Yin and Yang Stones(思路题)
  7. Linux下的find命令
  8. 史上最详细的CentOS 7 安装 HBase教程
  9. 数据类型与变量(Python学习笔记01)
  10. 6.3.3 使用 shelve 模块操作二进制文件