[HNOI2013]比赛

搜索。

LG传送门

直接暴力有60,考场上写的60,结果挂成40。

考虑在暴力的同时加个记忆化,把剩下的球队数和每支球队的得分情况hash一下,每次搜到还剩\(t\)个队的时候就在哈希表里找一下,有就拿来算答案,没有就把这次的结果存进哈希表。复杂度\(O(\)能过\()\)。

#include <cstdio>
#include <algorithm>
#include <unordered_map>
#define R register
#define I inline
#define L long long
using namespace std;
const int N = 13, B = 29, yyb = 1e9 + 7;
int a[N], b[N], f[N], sta[N], stp, n, t, k;
unordered_map <L, L> m;
I int cmp(int x, int y) { return x > y; }
L dfs(int x, int y) {if (x == n)return 1;if (f[x] + (n - y + 1) * 3 < a[x])return 0;L o = 0;if (y > n){R int i;for (i = x + 1; i <= n; ++i)b[i] = a[i] - f[i];sort(b + x + 1, b + n + 1);for (i = x + 1; i <= n; ++i)o = o * B + b[i];if (m.find(o) != m.end())return m[o];elsereturn m[o] = dfs(x + 1, x + 2);}if (f[x] + 3 <= a[x] && k)f[x] += 3, --k, o += dfs(x, y + 1), f[x] -= 3, ++k;if (f[y] + 3 <= a[y] && k)f[y] += 3, --k, o += dfs(x, y + 1), f[y] -= 3, ++k;if (f[x] < a[x] && f[y] < a[y] && t)++f[x], ++f[y], --t, o += dfs(x, y + 1), --f[x], --f[y], ++t;return o % yyb;
}
int main() {scanf("%d", &n), t = n * (n - 1) * 3 >> 1;for (R int i = 1; i <= n; ++i)scanf("%d", &a[i]), t -= a[i];sort(a + 1, a + n + 1, cmp), k = (n * (n - 1) >> 1) - t, printf("%I64d", dfs(1, 2));return 0;
}

转载于:https://www.cnblogs.com/cj-chd/p/10299328.html

[HNOI2013]比赛 搜索相关推荐

  1. [CQOI2009]循环赛[HNOI2013]比赛

    [CQOI2009]循环赛&&[HNOI2013]比赛--真是好题(差点没把我脑子烧坏-sd的无奈) 提前声明:感谢大佬看了他的题解后,我才恍然大悟 -好,先上题目 [CQOI2009 ...

  2. BZOJ3139/BZOJ1306 HNOI2013比赛/CQOI2009循环赛(搜索)

    搜索好难啊. 1.对于每个分数集合记忆化. 2.某人得分超过总分,剪枝. 3.某人之后全赢也无法达到总分,剪枝. 4.每有一场比赛分出胜负总分会多三分,而平局则会多两分.某人的分出胜负场次或平局场次超 ...

  3. 【BZOJ】3139: [Hnoi2013]比赛

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3139 可以发现,答案之和得分的序列有关,而且和序列中每个元素的顺序无关.考虑HASH所有的 ...

  4. BZOJ3139: [Hnoi2013]比赛

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3139 记忆化搜索.用map来存当前点的状态.然后搜索顺序要从大到小搜. #include< ...

  5. 10月9日模拟题解题报告

    PS:昨天月考,极其恶劣的成绩,结果李总在伤口上给我们撒盐,今天搞了个模拟赛--- 1.期末考试 finaltest.cpp/c/pas 1s / 128M [题目描述]  山山同学在期末考试前向他妈 ...

  6. # HNOI2012 ~ HNOI2018 题解

    HNOI2012 题解 [HNOI2012]永无乡 Tag:线段树合并.启发式合并 联通块合并问题. 属于\(easy\)题,直接线段树合并 或 启发式合并即可. [HNOI2012]排队 Tag:组 ...

  7. 信息安全:信息收集之:被动信息收集

    信息收集之:被动信息收集 信息收集之:被动信息收集 1 被动信息收集:OSINT 1.1 获取情报的公开渠道 1.2 信息收集内容 1.3 信息用途 2 DNS 信息收集 2.1 nslookup 2 ...

  8. ctfshow--网络迷踪

    前言 记录一下做题过程. 如有不当之处,还望指正. 如有疑问,欢迎留言. 目录 前言 1. 新手上路 2. 初学乍练 3. 初学又练 4. 初学再练 5. 现拉现吃 6. 初窥门径 7. 狗哥去哪 8 ...

  9. 网络语言C位出道是什么意思,你们一直说的C位出道到底是什么意思啊?

    原标题:你们一直说的C位出道到底是什么意思啊? 广告 近段时间,随着偶像励志养成选秀节目的大火,各种各样的C位出道充斥网络,也经常被粉丝们提及,那这个C位出道到底是什么意思呢? "C位出道& ...

最新文章

  1. Windows服务程序时钟调用
  2. linux下的临时文件在哪,linux – 如何找出创建临时文件的内容
  3. Ozon Tech Challenge 2020 (Div.1 + Div.2) F. Kuroni and the Punishment 随机化
  4. python安装requests库超时_【Python 库】requests 详解超时和重试
  5. 二级VB培训笔记11:培训答疑集
  6. Go语言之 下载安装及第一个代码
  7. 如何关闭Windows自动更新
  8. java 图片画框并读取成base64数据
  9. 关于CSDN原力计划活动说明
  10. 启动计算机实现5秒开机,电脑3秒开机,怎么做到的?
  11. lasso最小角_Python中的Lasso回归之最小角算法LARS
  12. STM8L051F3单片机竟然没有TIM1定时器,却有TIM2,3,4!!!害我调了一天没调出来
  13. 用c 语言求纸对折的次数,纸张对折新纪录:13次
  14. MP4转RTSP推流(ffmpeg和easydarwin)
  15. 二本出身的我,是如何拿下阿里 special offer 的?
  16. NLP模型(二)——GloVe实现
  17. 各种实用的音频格式转换器,解决所有转换难题
  18. 电子科大计算机学院推免研究生,电子科大计算机专业推免生情况统计与分析研究作者秦瘦.doc...
  19. 折叠屏上应用设计规范,了解一下?
  20. ca证书 csr_详解CSR和CER的关系

热门文章

  1. Django连接mysql数据库(python3.6)
  2. tf.nn.conv2d理解(带通道的卷积图片输出案例)
  3. 盘点机器学习领域的五大流派
  4. 手机访问内网IIS服务器网页的方法
  5. Security Tutorials系列文章第七章:User-Based Authorization(下)
  6. 每天进步一点点《ML - DBSCAN》
  7. 漫步数学分析番外六(下)
  8. 漫步数学分析番外五(上)
  9. 漫步线性代数二十二——行列式性质
  10. jar java classpath_Java ClassLoader和ClassPath