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 ...
随机推荐
- Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法
最近在学习传智播客吴超老师的Hadoop视频,里面他在讲解RPC通信原理的过程中给了一个RPC的小例子,但是自己编写的过程中遇到一个小错误,整理如下: log4j:WARN No appenders ...
- 【c++ primer, 5e】类的其他特性(卒)
1 - Class Members Revisited 2 - Functions That Return *this 3 - Class Types 4 - Friendship Revisited ...
- Ubuntu 14.04上架IPSec+L2TP的方法
最简单的方法是使用脚本一步一步地进行配置.我用的是philplckthun写的脚本,修改了一下获取服务器IP的方法:脚本文件. 在ubuntu下运行: sh setup.sh 配置配置完成后,服务器端 ...
- 20162326 齐力锋 2016-2017-2 《程序设计与数据结构》 MySort.java 实验博客
实验代码学习编程中的问题及解决方法 代码运行成功截图 首次代码运行出现的问题截图 问题1:无法从静态上下文中引用非静态方法 问题1解决方法及思考: split方法是非静态方法,需要借助对象来调用.我查 ...
- 使用IDEA整合SSM框架
一.安装环境和开发工具 在整合Spring,SpringMVC 和 MyBatis 的过程中,很容易遇到一些小问题,因此记录下整合过程. 首先是安装环境和开发工具,如下: Window 7 Jdk 1 ...
- MYSQL提权的各种姿势
一.利用mof提权 前段时间Kingcope大牛发布了mysql远程提权0day,剑心牛对MOF利用进行了分析,如下: Windows 管理规范 (WMI) 提供了以下三种方法编译到 WMI 存储库的 ...
- SpringBoot Lombok
简介 lombok是一个编译级别的插件,它可以在项目编译的时候生成一些代码.比如日常开发过程中需要生产大量的JavaBean文件,每个JavaBean都需要提供大量的get和set方法,如果字段较多且 ...
- lamp架构之升级php版本
当你看到这篇文章的时候 YHSPY.COM 服务器上的PHP版本已经从 5.4.27 升级到了 7.0.4,这是一个重大的飞跃.一路升级遇到了很多问题.官方声称PHP7最大的升级就是在语言性能上的提升 ...
- Mysql 语句单表查询
一基本查询 -- 创建商品表 CREATE TABLE products( pid INT PRIMARY KEY AUTO_INCREMENT, pname VARCHAR(20), price D ...
- coredump调试小结
在已经启动的进程中使用gdb,用gdb attach 查看so文件中的函数列表 nm -D *.so 关于c.c++类的gdb调试,强烈推荐一本书:debug hack