HDU 3720 Arranging Your Team
先分组,然后暴力;注意 初始化时不要为0 会有负数;我直接二进制枚举; dfs是正解;呵呵
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
using namespace std; int arr[][];
map<string,int>mp;
char str[],cha[];
struct date{
int val,i;
bool operator < ( const date &a )const {
if( a.val != val )return a.val < val;
return a.i < i;
}
};
vector<date>v[];
vector<date>s[];
char sss[][] = {"","goalkeeper","defender","midfielder","striker"};
int main( )
{
int num;
while( scanf("%s%d%s",str,&num,cha) != EOF )
{
mp.clear(); memset( arr,,sizeof(arr) );
for( int i = ; i < ; i++ )v[i].clear();
for( int i = ; i < ; i++ )s[i].clear();
mp[str] = ; date temp; temp.val = num; temp.i = ;
for( int i = ; i <= ; i++ )
if( strcmp(cha,sss[i]) == ) v[i].push_back(temp);
for( int i = ; i <= ; i++ )
{
scanf("%s%d%s",str,&num,cha); mp[str] = i;
date temp; temp.val = num; temp.i = i;
for( int j = ; j <= ; j++ )
if( strcmp(cha,sss[j]) == )v[j].push_back(temp);
}
int now; cin>>now;
while( now-- )
{
cin>>str>>cha>>num; arr[mp[str]][mp[cha]] = arr[mp[cha]][mp[str]] = num;
}//cout<<v[1].size()<<" "<<v[2].size()<<" "<<v[3].size()<<" "<<v[4].size()<<endl;
if( v[].size() < || v[].size() < || v[].size() < || v[].size() < )
{
cout<<"impossible"<<endl;
continue;
}
for( int i = ; i < v[].size(); i++ )
{
date temp; temp = v[][i]; temp.i = <<(temp.i-);
s[].push_back( temp );
}
for( int i = ; i < v[].size(); i++ )
for( int j = i+; j < v[].size(); j++ )
for( int k = j+; k < v[].size(); k++ )
for( int l = k+; l < v[].size(); l++ )
{
int ans = ; int val = ;
date temp; temp = v[][i]; ans += (<<(temp.i-));val += temp.val;
temp = v[][j]; ans += (<<(temp.i-));val += temp.val;
temp = v[][k]; ans += (<<(temp.i-));val += temp.val;
temp = v[][l]; ans += (<<(temp.i-));val += temp.val;
temp.val = val; temp.i = ans;
s[].push_back(temp);
}
for( int i = ; i < v[].size(); i++ )
for( int j = i+; j < v[].size(); j++ )
for( int k = j+; k < v[].size(); k++ )
for( int l = k+; l < v[].size(); l++ )
{
int ans = ; int val = ;
date temp; temp = v[][i]; ans += (<<(temp.i-));val += temp.val;
temp = v[][j]; ans += (<<(temp.i-));val += temp.val;
temp = v[][k]; ans += (<<(temp.i-));val += temp.val;
temp = v[][l]; ans += (<<(temp.i-));val += temp.val;
temp.val = val; temp.i = ans;
s[].push_back(temp);
}
for( int i = ; i < v[].size(); i++ )
for( int j = i+; j < v[].size(); j++ )
{
int ans = ; int val = ;
date temp; temp = v[][i]; ans += (<<(temp.i-));val += temp.val;
temp = v[][j]; ans += (<<(temp.i-));val += temp.val;
temp.val = val; temp.i = ans;
s[].push_back(temp);
}
int Max = (<<)*-;
for( int i = ; i < s[].size(); i++ )
for( int j = ; j < s[].size(); j++ )
for( int k = ; k < s[].size(); k++ )
for( int l = ; l < s[].size(); l++ )
{
int ans = s[][i].i+s[][j].i+s[][k].i+s[][l].i;
int val = s[][i].val+s[][j].val+s[][k].val+s[][l].val;
vector<int>n; n.clear();
for( int t = ; t < ; t++ )
if( ans&(<<t) )n.push_back(t+);
for( int x = ; x < n.size(); x++ )
for( int y = x+; y < n.size(); y++ )
val += arr[n[x]][n[y]];
Max = max( Max,val );
}
cout<<Max<<endl;
}
return ;
}
HDU 3720 Arranging Your Team的更多相关文章
- HDU 3720 Arranging Your Team(DFS)
题目链接 队内赛里,匆匆忙忙写的. #include <cstdio> #include <cstring> #include <iostream> #includ ...
- hdu 3720 Arranging Your Team 枚举
不可能解可以直接判断. 搭配产生的附加分可以用一个二维数组保存. 枚举1442,4种类型的人,因为总人数只有23个,所以可以搜索暴力枚举,然后保存最优解. 注意trick,答案可能为负数,所以初始化a ...
- 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组人在一起时会产生的附加效果.问你整场比赛人员的能力和最高是多少. 用深搜暴力枚举每种类型的人选 ...
- Arranging Your Team
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=35800#problem/D #include <iostream> #inc ...
- 2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】
FFF at Valentine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】
Dying Light Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】
CSGO Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
随机推荐
- Javascript中call()和apply()的用法 ----1
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- [转]hadoop2.x常用端口及定义方法
端口 Hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问.而随着Hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集 ...
- Define class with itself as generic implementation. Why/how does this work?
https://stackoverflow.com/questions/10709061/define-class-with-itself-as-generic-implementation-why- ...
- Timer in C#
https://docs.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.7.2 Be aware tha ...
- maven中pom.xml标签介绍
pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...
- 高亮显示UILabel中的子串
I. 用户在搜索框中,输入关键字进行检索时,APP对搜索结果进行显示,有以下两种情况: 1. 匹配一次,如检索关键字为人名 这种情况,实现比较容易.写一个UILabel的category, 用rang ...
- Spring Cloud 与 Spring boot - 转载
微服务是这样一个结构吗? 前端或二方 - > ng集群 -> zuul集群 -> eureka-server集群 -> service provider集群 (二方指其他业务部 ...
- Image合并添加文字内容
场景:将一个头像.二维码.文字信息添加到一张背景图片中,将这些信息合成一张图片. 代码已经测试验证.代码中图片自己随意找几张测试即可. 代码: import com.sun.image.codec.j ...
- 关于分析web.xml的一篇博客,写的很详细
http://blog.csdn.net/believejava/article/details/43229361
- CSS3 content属性学习
css3中出现了 ":before",":after"伪类, 你可以这样写: h1:after{ content:'h1后插入的文本'; ... } 这两个选择 ...