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 ...
随机推荐
- webform中Repeater的Command用法、Repeater的替代方法
Command: 在Repeater控件循环执行过程中,可以给每一项的某个按钮或其他控件设置CommandName.CommandArgument属性,用于在后台代码中获取单项 数据进行调用. 需 ...
- url末尾的斜杠作用探秘
今天突然好奇,想区分www.abc.com/efg 和www.abc.com/efg/这两个网址的区别.即分析一下url末尾加个斜杠是否有特殊的效果. 找到网上的介绍: 当Web服务器接收到对某个末尾 ...
- Django 中间件简介
Django 中间件简介 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. ...
- Javascript何时执行
分以下两种情况: 1.HTML head部分的Javascript会在被调用的时候执行 需要调用才执行的脚本或事件触发执行的脚本放在head部分,这可以保证脚本在任何调用之前被预先加载,在页面加载完之 ...
- Git服务器的Gitosis安装配置及gitignore的使用方法
Git服务器Gitosis安装设置 1.安装 openssh服务器 sudo apt-get install openssh-server openssh-client 2.创建个人公钥和私钥 在默认 ...
- SpringBoot 通用Error设计
在项目中需要设计统一的错误消息,通常使用枚举类定义"错误码"与"错误消息": 并且也可以做错误消息自定义. 定义通过错误接口类:CommonError publ ...
- 求逆元 HDU 2516
A/B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 并发-CopyOnWrite源码分析
CopyOnWrite源码分析 参考: https://blog.csdn.net/linsongbin1/article/details/54581787 http://ifeve.com/java ...
- Java数据类型——面试题
1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错? 答:对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表 ...
- VLAN虚拟局域网技术(一)-计算机网络
本文主要知识来源于学校课程,部分知识来自于H3C公司教材,未经许可,禁止转载.如需转载,请联系作者并注明出处. 1. VLAN(Virtual LAN):我们称之为虚拟局域网,它的作用就是将物理上互 ...