hdu 3720 Arranging Your Team 枚举
不可能解可以直接判断。
搭配产生的附加分可以用一个二维数组保存。
枚举1442,4种类型的人,因为总人数只有23个,所以可以搜索暴力枚举,然后保存最优解。
注意trick,答案可能为负数,所以初始化ans不能为0.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include <queue>
#define maxn 1005
#define MAXN 100005
#define mod 1000000007
#define INF 0x3f3f3f3f
using namespace std; typedef long long ll;
char name[100];
char type[100];
int power[30];
int maps[30][30];
map<string,int> mt;
map<string,int> na;
int mp[30];
vector<int> player[4];
vector<int> ans;
int ANS;
void dfs2(int pos,int sum);
void dfs3(int pos,int sum);
void dfs4(int pos,int sum); void dfs1(int pos,int sum)
{
if(sum==1) {dfs2(-1,0);return;}
for(int i=pos+1;i<player[0].size();i++)
{
ans.push_back(player[0][i]);
dfs1(i,sum+1);
ans.pop_back();
}
}
void dfs2(int pos,int sum)
{
if(sum==4) {dfs3(-1,0);return;}
for(int i=pos+1;i<player[1].size();i++)
{
ans.push_back(player[1][i]);
dfs2(i,sum+1);
ans.pop_back();
}
}
void dfs3(int pos,int sum)
{
if(sum==4) {dfs4(-1,0);return;}
for(int i=pos+1;i<player[2].size();i++)
{
ans.push_back(player[2][i]);
dfs3(i,sum+1);
ans.pop_back();
}
}
void dfs4(int pos,int sum)
{
if(sum==2)
{
int s=0;
for(int i=0;i<ans.size();i++)
{
for(int j=i+1;j<ans.size();j++)
{
s+=maps[ans[i]][ans[j]];
}
s+=power[ans[i]];
}
ANS=max(s,ANS);
return;
}
for(int i=pos+1;i<player[3].size();i++)
{
ans.push_back(player[3][i]);
dfs4(i,sum+1);
ans.pop_back();
}
}
int main()
{
mt["goalkeeper"]=0;
mt["defender"]=1;
mt["midfielder"]=2;
mt["striker"]=3;
int p;
while(cin>>name)
{
ANS=-0x3f3f3f3f;
ans.clear();
na.clear();
for(int i=0;i<4;i++) player[i].clear(); cin>>p>>type;
player[mt[type]].push_back(1);
power[1]=p; na[name]=1;
for(int i=2;i<=23;i++)
{
cin>>name>>p>>type;
na[name]=i;
player[mt[type]].push_back(i);
power[i]=p;
}
int n;
memset(maps,0,sizeof(maps));
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>name>>type>>p;
maps[na[name]][na[type]]=p;
maps[na[type]][na[name]]=p;
} if(player[0].size()<1||player[1].size()<4||player[2].size()<4||player[3].size()<2)
{
cout<<"impossible"<<endl;
continue;
}
dfs1(-1,0);
cout<<ANS<<endl;
}
return 0;
}
hdu 3720 Arranging Your Team 枚举的更多相关文章
- HDU 3720 Arranging Your Team
先分组,然后暴力:注意 初始化时不要为0 会有负数:我直接二进制枚举: dfs是正解:呵呵 #include <iostream> #include <cstdio> #in ...
- HDU 3720 Arranging Your Team(DFS)
题目链接 队内赛里,匆匆忙忙写的. #include <cstdio> #include <cstring> #include <iostream> #includ ...
- hdu3720 Arranging Your Team
Arranging Your Team Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Arranging Your Team HDU - 3720 【DFS】
思路 题意:此题大意是指首先给你23个队员的信息,包括他们的名字,能力值,在赛场上的职位.然后给出几个若能满足某两个队员同时在球场上就额外加上一定的值.最后让你从23个队员中选出11个人,使得最终的v ...
- HDU 3720 深搜 枚举
DES:从23个队员中选出4—4—2—1共4种11人来组成比赛队伍.给出每个人对每个职位的能力值.给出m组人在一起时会产生的附加效果.问你整场比赛人员的能力和最高是多少. 用深搜暴力枚举每种类型的人选 ...
- HDU 5752 Sqrt Bo【枚举,大水题】
Sqrt Bo Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total S ...
- HDU 4763 Theme Section(KMP+枚举公共前后缀)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4763 题目大意: 给你一个字符串s,存在一个子串E同时出现在前缀.中间.后缀,即EAEBE这种模式,A ...
- hdu - 5128 The E-pang Palace(枚举+计算几何)
http://acm.hdu.edu.cn/showproblem.php?pid=5128 给出n个点,求n个点组成两个矩形的最大面积. 矩形必须平行x轴,并且不能相交,但是小矩形在大矩形内部是可以 ...
- HDU 5303 Delicious Apples (贪心 枚举 好题)
Delicious Apples Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...
随机推荐
- centos 7.0防火墙导致vagrant端口映射失败
在vagrant上部署了centos7.0后,Vagrantfile端口转发设置后,宿主机访问客户机站点还是无法访问,问题出在:centos7.0以上版本默认会安装firewalld防火墙, fire ...
- 2016022609 - redis哈希命令集合
参考:http://www.yiibai.com/redis/redis_hashes.html Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型 在Redis中的 ...
- 控制反转(IoC)与依赖注入(DI)
1.控制反转(Inversion of Control)与依赖注入(Dependency Injection) 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接 ...
- MongoDB update数据语法【转】
在前面的文章“mongodb 查询的语法”里,我介绍了Mongodb的常用查询语法,Mongodb的update操作也有点复杂,我结合自己的使用经验,在这里介绍一下,给用mongodb的朋友看看,也方 ...
- bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&&生成树计数
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2248 Solved: 898[Submit][Statu ...
- Reason: image not found 错误解决方法
dyld: Library not loaded: /System/Library/Frameworks/Social.framework/Social Referenced from: /var ...
- Java 字节码
Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Oracle在内的众多JCP成员积极地推动发展.但是对于Java语言的深度理解和运用,毕竟是很少会有人涉及的话题.In ...
- MVC自学系列之四(MVC模型-Models)
ASP.NET MVC 提供了一系列工具和特性去使用仅仅定义的对象模型.你可以坐下来好好思考你将要解决的问题,并且写好C#类,当你准备好时就可以使用MVC提供的工具去为每一个实体构建标准的index. ...
- h.264并行解码算法3D-Wave实现(基于多核共享内存系统)
3D-Wave算法是2D-Wave的扩展.3D-Wave相对于只在帧内并行的2D-Wave来说,多了帧间并行,不用等待前一帧完成解码后才开始下一帧的解码,而是只要宏块的帧间参考部分以及帧内依赖宏块解码 ...
- Android 每天定时提醒功能实现
android要实现定时的功能那肯定就要用到闹铃相关的技术, 那么android闹铃实现是基于 AlarmManager 这个类的,首先我们来看一下它的几个主要的方法. 打开AlarmManager的 ...