HDU 3720 深搜 枚举
DES:从23个队员中选出4—4—2—1共4种11人来组成比赛队伍。给出每个人对每个职位的能力值。给出m组人在一起时会产生的附加效果。问你整场比赛人员的能力和最高是多少。
用深搜暴力枚举每种类型的人选择情况。感觉是这个深搜写的很机智。
在vector中存结构体就会很慢。TLE。直接存序号就AC了。以后还是尽量少用结构体吧。
#include<stdio.h>
#include<string.h>
#include<map>
#include<vector>
#include<iostream>
using namespace std; vector<int>play[];
vector<int>ans;
int pow[];
map<string, int>mtype;
map<string, int>mname;
int eff[][];
int maxn = ; void dfs2(int, int );
void dfs3(int, int );
void dfs4(int, int ); void dfs1(int pos, int sum)
{
if (sum == )
{
dfs2(-, );
return;
}
for (int i=pos+; i<play[].size(); ++i)
{
ans.push_back(play[][i]);
dfs1(i, sum+);
ans.pop_back();
}
} void dfs2(int pos, int sum)
{
if (sum == )
{
dfs3(-, );
return;
}
for (int i=pos+; i<play[].size(); ++i)
{
ans.push_back(play[][i]);
dfs2(i, sum+);
ans.pop_back();
}
} void dfs3(int pos, int sum)
{
if (sum == )
{
dfs4(-, );
return;
}
for (int i=pos+; i<play[].size(); ++i)
{
ans.push_back(play[][i]);
dfs3(i, sum+);
ans.pop_back();
}
} void dfs4(int pos, int sum)
{
if (sum == )
{
int anss = ;
for (int i=; i<ans.size(); ++i)
{
for (int j=i+; j<ans.size(); ++j)
{
anss += eff[ans[i]][ans[j]];
}
anss += pow[ans[i]];
}
if (anss > maxn)
maxn = anss;
return;
}
for (int i=pos+; i<play[].size(); ++i)
{
ans.push_back(play[][i]);
dfs4(i, sum+);
ans.pop_back();
}
} int main()
{
mtype["goalkeeper"] = ;
mtype["defender"] = ;
mtype["midfielder"] = ;
mtype["striker"] = ;
char name[], type[];
int power;
while(cin >> name)
{
maxn = -0x3f3f3f3f;
ans.clear();
for (int i=; i<; ++i) play[i].clear(); cin >> power >> type;
int tt = mtype[type];
pow[] = power;
mname[name] = ;
play[tt].push_back();
memset(eff, , sizeof(eff)); for (int i=; i<=; ++i)
{
cin >> name >> power >> type;
pow[i] = power;
mname[name] = i;
int tt = mtype[type];
play[tt].push_back(i);
} int n;
cin >> n;
int n1, n2, add;
char na1[], na2[];
for (int i=; i<=n; ++i)
{
cin >> na1 >> na2 >> add;
n1 = mname[na1];
n2 = mname[na2];
eff[n1][n2] = add;
eff[n2][n1] = add;
}
int a[] = {, , , };
bool flag = true;
for (int i=; i<; ++i)
{
if (play[i].size() < a[i])
{
flag = false;
break;
}
}
if (!flag)
{
cout << "impossible\n";
continue;
} dfs1(-, );
cout << maxn << endl;
}
return ;
}
LOoK
HDU 3720 深搜 枚举的更多相关文章
- USACO 2.3.3 Zero Sum 和为零(深搜枚举)
Description 请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N. 现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白,来将 ...
- hdu 1181 深搜
中文题 深搜 许久没写鸟,卡在输入问题上... #include <iostream> #include <string> using namespace std; bool ...
- hdu 1010 深搜+剪枝
深度搜索 剪枝 还不是很理解 贴上众神代码 //http://blog.csdn.net/vsooda/article/details/7884772#include<iostream> ...
- POJ-1190-生日蛋糕-DFS(深搜)-枚举-多重剪枝
题目链接: 这个题目非常好,有难度:能够好好的多做做: #include<iostream> #include<string> #include<cstdio> # ...
- hdu 1518 深搜
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...
- hdu 1716 深搜dfs
#include<stdio.h> #include<stdlib.h> #include<string.h> #define N 5 int f[N]; int ...
- hdu4876 深搜+(随机枚举剪枝)
题意: 给你n个数,让你从选择k个数,然后排成一个环(k个数的顺序随意,但是排成一个环后就不能变了),然后可以在这个环上任意的找连续w个数(w<=k),可以找多次,得到一个值等于当前 ...
- 2015暑假多校联合---Cake(深搜)
题目链接:HDU 5355 http://acm.split.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m s ...
- hdu 5648 DZY Loves Math 组合数+深搜(子集法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5648 题意:给定n,m(1<= n,m <= 15,000),求Σgcd(i|j,i&am ...
随机推荐
- canvas压缩图片
1.canvas.toDataUrl压缩图片 canvas的toDataUrl方法可以将内容导出为base64编码格式的图片,采用base64编码将比源文件大1/3,但是该方法可以指定导出图片质量,所 ...
- 在awk中通过system调用sql语句来说明引号的使用
一个实际应用例子: 在awk中,通过system调用连接数据库并作select操作,select语句中where条件来自于一个文件(file)的第一个域($1). $ cat file ... ... ...
- Win32 实现 MFC CFileDialog 对话框
void CWriteWnd::OpenFileDialog() { OPENFILENAME ofn; TCHAR szFile[MAX_PATH] = _T(""); Zero ...
- 【LTE基础知识】SGLTE, SVLTE, CSFB, VoLTE【转】
本文转载自:https://blog.csdn.net/henryghx/article/details/18416405 4G网络下实现语音通话功能的技术共有三种——VoLTE.SGLTE(GSM ...
- ACM-ICPC 2018 焦作赛区网络预赛G Give Candies(隔板定理 + 小费马定理 + 大数取模,组合数求和)题解
题意:给你n个东西,叫你把n分成任意段,这样的分法有几种(例如3:1 1 1,1 2,2 1,3 :所以3共有4种),n最多有1e5位,答案取模p = 1e9+7 思路:就是往n个东西中间插任意个板子 ...
- css布局一屏幕的自适应高度
css ;;list-style: none;} .top{height: 100px;background-color:orange;} .max{;background-color:skyblue ...
- NS3 使用NS3工具PyViz
官方文档 跑了一个样例(first.py): 由于 NetAnim 对我实在是有点不友好,在 PyViz 和 NetAnim 之间,我倾向前者.后者需要生成.xml文件,相比前者较为麻烦. 安装过程: ...
- 在django restful framework中设置django model的property
众所周知,在django的model中,可以某些字段设置@property和setter deleter getter,这样就可以在存入数据的时候进行一些操作,具体原理请参见廖雪峰大神的博客https ...
- 如何新建一个datatable,并往表里赋值
顺序是新建对象-->新建列-->新建行,示例代码如下: DataTable dt=new DataTable(); //新建对象 dt.Columns.Add("姓名" ...
- JVM内存管理的机制
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) sp ...