Description

Input

  第一行包含一个正整数n,队伍的个数。第二行包含n个非负整数,即每支队伍的得分。

Output

  输出仅一行,即可能的分数表数目。保证至少存在一个可能的分数表。

Sample Input

6
5 6 7 7 8 8

Sample Output

121

HINT

  N<=8

Source

Solution

  搜索,砍树式的剪枝。当某一队算到最后一场比赛时直接算结果,每次递归前判断如果以后几场全赢分数也达不到目标分数就剪枝,如果以后几场全输都超过目标分数也剪枝

  代码运行时间刚好10sQAQ

 #include <bits/stdc++.h>
using namespace std;
int n, a[], cur[], ans, d[] = {, , , }; void DFS(int u, int v)
{
if(cur[u] > a[u] || cur[v] > a[v]) return;
if(a[u] - cur[u] > * (n - v + )) return;
if(a[v] - cur[v] > * (n - u + )) return;
if(u == n)
{
ans++;
return;
}
if(v == n)
{
int i = a[u] - cur[u];
if(i > || i == ) return;
cur[u] += i, cur[v] += d[i];
DFS(u + , u + );
cur[u] -= i, cur[v] -= d[i];
return;
}
cur[u] += , DFS(u, v + ), cur[u] -= ;
cur[u]++, cur[v]++, DFS(u, v + ), cur[u]--, cur[v]--;
cur[v] += , DFS(u, v + ), cur[v] -= ;
} int main()
{
cin >> n;
for(int i = ; i <= n; i++)
cin >> a[i];
DFS(, );
cout << ans << endl;
return ;
}

[BZOJ1306] [CQOI2009] match循环赛 (搜索)的更多相关文章

  1. BZOJ1306 [CQOI2009]match循环赛/BZOJ3139 [Hnoi2013]比赛[dfs剪枝+细节题]

    地址 看数据范围很明显的搜索题,暴力dfs是枚举按顺序每一场比赛的胜败情况到底,合法就累计.$O(3^{n*(n-1)/2})$.n到10的时候比较大,考虑剪枝. 本人比较菜所以关键性的剪枝没想出来, ...

  2. 【搜索】【剪枝】bzoj1306 [CQOI2009]match循环赛

    dfs+剪枝*4(通过得很勉强): 1.只枚举一半的比赛,另一半直接得出. 2.处理前缀和,若大于目标得分则剪枝 3.前缀和加上若接下来全胜的得分 仍小于 目标得分,则剪枝. 4.枚举到每个人的最后一 ...

  3. BZOJ1306: [CQOI2009]match循环赛

    [传送门:BZOJ1306] 简要题意: 有n个队伍,每个队伍都要和其他队伍比一场,赢了的队得3分,输了的队不得分,打平两队各得一分,给出每个队伍的得分,求出对战方案数 题解: DFS暴搜!!一眼就觉 ...

  4. bzoj1306: [CQOI2009]match循环赛(模拟爆搜)

    Input第一行包含一个正整数n,队伍的个数.第二行包含n个非负整数,即每支队伍的得分.Output输出仅一行,即可能的分数表数目.保证至少存在一个可能的分数表.Sample Input 6 5 6 ...

  5. bzoj 1306: [CQOI2009]match循环赛【dfs+剪枝】

    大力剪枝,最后洛谷上还开了o2才过-- 大概这样剪枝: 1.搜索中,一个队当前得分超过要求或者一个队剩下的比赛场数全赢也达不到要求则return: 2.注意到如果平局,最总分的贡献是2,否则是3,所以 ...

  6. 【BZOJ1306】match循环赛

    预先警告:我的做法代码量比较大 看完题目后看到数据n<=8, 不难想到这题可以写深搜来做 分析 比如说以数据: 3 3 3 3 为例子, 进行了三场比赛:AB AC BC: 我们只要搜索每场比赛 ...

  7. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  8. 第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer

    一. 概述 re模块的函数search.match.fullmatch.findall.finditer都是用于搜索文本中是否包含指定模式的串,函数的参数都是一样的,第一个参数是模式串.第二个是搜索文 ...

  9. Elasticsearch 不同的搜索类型之间的区别

    1.match   轻量级搜索 GET /wymlib/_search { "query": { "match": {  "title": ...

随机推荐

  1. Atom Mac安装 有快捷方式

    https://jeffjade.com/2016/03/03/2016-03-02-how-to-use-atom/ 如何在 PyCharm 中使用 MacDown 作为外部编辑器 新编码神器Ato ...

  2. XCode 安装 Alcatraz包管理器失败的处理

    按照官方的文档(https://github.com/supermarin/Alcatraz),先卸载再重新安装即可.步骤如下: 1. 退出Xcode 2. rm -rf ~/Library/Appl ...

  3. SpringBoot中过滤器、监听器以及拦截器

    属于javax.servlet所提供的Api 拦截器原理 简单来讲是通过动态代理实现,被访问的目标方法通过代理类(方法)来执行,这样我们就可以在真正要执行的方法执行前.后做一些处理: 通过拦截器这种方 ...

  4. lnmp HTTP ERROR 500

    http://www.cnblogs.com/thrillerz/p/4725409.html

  5. PHP文件头BOM头问题

    前几天我们公司服务器出现了一个离奇的问题,服务器与本地文件代码完全一致,本地运行正常,到了测试环境服务器之后,各种问题一个又一个浮现,先是后台验证码不显示,以为是session写入失败,又是怀疑gd库 ...

  6. 使用 neon-wallet-db + neon-js + NEO-cli /rpc 搭建轻钱包服务端

    本文将搭建一个不具有任何功能的NEO轻钱包,所有的精力都仅集中于成功运行neon-wallet-db项目并搭配全节点的neo-cli /rpc接口为轻钱包客户端提供服务. 首先需要准备几个项目: ne ...

  7. Jenkins系列——使用checkstyle进行代码规范检查

    1.目标 通过jenkins使用checkstyle对代码进行规范检查并生成html报告. 构建采用shell. 2.环境 checkstyle5.7(如果是Linux版本选用tar.gz格式) ap ...

  8. 使用CrashHandler来获取应用的crash信息

    源码地址https://github.com/king1039/android-art-res/tree/master/Chapter_13/CrashTest/src/com/ryg/crashte ...

  9. 原生javascript 的MAP使用

    var map = {}; // Map map = new HashMap();map[key] = value; // map.put(key, value);var value = map[ke ...

  10. spring 配置文件无法加载,junit找不到xml配置文件java.lang.IllegalStateException: Failed to load ApplicationContext

    最近遇到一个奇怪的问题.maven项目再进行junit单元测试的时候发现无法加载配置文件.一会能加载一会又不能加载.然后试了在src/main/resource下面的配置文件放到src/test/re ...