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