搜索 。。。

平局和胜负局的数目可以求出。

然后按照 1-2,1-3,1-4 … ,1-n 的方式进行搜索。

可以得到 96 pts 。

如果我们当前局面之前搜索过的话,可以哈希后用 map 存下来。

实际上我们不用把当前是哪两个球队比赛记录下来,而是在一支球队搜索完过后判断剩下的球队的分数是不是之前搜索过,如果是就直接返回。

#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
const int N=15;
const int P=13331;
//搜索 ...
//平局和胜负局的数目可以求出
//暴搜 + 剪枝
int n,a[N],tot1,tot2,sum;
map<ull,int> mp;
int dfs(int x,int y) {if(y == n + 1) {if(a[x] > 0) return 0;x ++;if(x == n) return 1;ull tmp=0;for(int i=x;i<=n;i++) tmp=tmp*P+a[i];//记忆化 if(mp.find(tmp) != mp.end()) return mp[tmp];return mp[tmp] = dfs(x, x + 1);}int res=0;if(a[x]>=3&&tot1>0) {a[x]-=3,tot1--,res+=dfs(x,y+1),a[x]+=3,tot1++;}if(a[y]>=3&&tot1>0) {a[y]-=3,tot1--,res+=dfs(x,y+1),a[y]+=3,tot1++;}if(a[x]>=1&&a[y]>=1&&tot2>0) {a[x]--,a[y]--,tot2--,res+=dfs(x,y+1),a[x]++,a[y]++,tot2++;}return res;
}
int main() {scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]),sum+=a[i];for(int i=0;i<=n*(n-1)/2;i++) {if(3*i+((n*(n-1)/2-i))*2==sum) tot1=i,tot2=n*(n-1)/2-i;}printf("%d",dfs(1,2));
}

【题解】[CQOI2009] 循环赛相关推荐

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

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

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

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

  3. 题解 | #[USACO 2012 Mar S]Flowerpot#

    题解 | #扑克牌大小# import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main { p 题解 | #密码截 ...

  4. html如何在文章添加彩色分隔线,#Html学习积累#分割线中间添加文字

    类似效果: ------------xxxxx-------------------- Image Rollover with CSS .hrLine{ vertical-align:middle; ...

  5. [CQOI2009]中位数图 详细题解

    题目链接: https://ac.nowcoder.com/acm/problem/19913 题目描述: 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有 ...

  6. 第七届ACM趣味编程循环赛 Round #1 - ldq 的遗产题解

    题意是给你一定数目的1,2,5分的硬币,让你找出不能被这些硬币表示的最小价值. 标准解法是母函数,这个我算法分享讲堂中讲过, 具体可以看我另一篇博客 生成函数入门 #include <stdio ...

  7. 算法篇-2-分治思想-棋盘覆盖归并排序Strasssen矩阵乘法循环赛安排

    本系列所有代码https://github.com/YIWANFENG/Algorithm-github 分治思想 分治法基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些问题互相独立且与 ...

  8. NOIP2011 瑞士轮 题解

    题目 瑞士轮 题目描述 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低,但比 ...

  9. 【CQOI2009】跳舞

    [CQOI2009]跳舞 [题目描述] 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.  有一些男孩女孩相互喜欢,而 ...

最新文章

  1. js控制页面元素的隐藏与显示
  2. 服务器端会话技术Session|| Session的原理||Session的细节||session的钝化session的活化||session的特点||session与Cookie的区别
  3. Java rp api_Java初级--常用的API
  4. 移动语义(move semantic)和完美转发(perfect forward)
  5. TCP的几个状态(SYN/FIN/ACK/PSH/RST)
  6. 容器编排技术 -- kubectl Cheat Sheet
  7. 在Xuper链上部署Java语言智能合约和分析存证合约的实现逻辑
  8. SpringBoot与Mybatis的集成
  9. js排序算法详解-快速排序
  10. *第十五周*数据结构实践项目二【用哈希法组织关键字】
  11. 关于开源软件的十个问题(下篇)
  12. 河南大学计算机网络考试试卷,计算机网络试卷.doc
  13. [转载]GRADS画图
  14. Mysql 窗口函数
  15. android 下拉状态栏(SystemUI)常见修改记录
  16. vue中yarn install报错:info There appears to be trouble with your network connection. Retrying…
  17. html5项目心得体会,HTML5开发心得。
  18. 处在腾讯音乐与网易云音乐夹缝中,库客音乐上市能否奏响主旋律?
  19. Django新建项目(Linux操作系统)
  20. SVG黑科技微信排版『Apple连续向上滑动』模板代码

热门文章

  1. Springboot web项目简单统计在线人数
  2. rpm提示:XXX conflicts with file form package XXX
  3. 电脑使用技巧(Win10修改窗口背景颜色)
  4. 堆排序 ← 改编自《啊哈!算法》
  5. 转载: 一个正在渡劫的小老弟
  6. 基于java(ssm)人事考勤签到管理系统源码(java毕业设计)
  7. 【转】源nat和目的nat的区别
  8. 城市地铁是怎样建成的?
  9. 全球与中国PCB化学镍金专用化学品市场深度研究分析报告
  10. 2022-2028年全球与中国聚酰亚胺(PI)行业市场前瞻与投资战略规划分析