[BZOJ3139][HNOI2013]比赛(搜索)】的更多相关文章

3139: [Hnoi2013]比赛 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1439  Solved: 719[Submit][Status][Discuss] Description 沫沫非常喜欢看足球赛,但因为沉迷于射箭游戏,错过了最近的一次足球联赛.此次联 赛共N支球队参加,比赛规则如下: (1) 每两支球队之间踢一场比赛. (2) 若平局,两支球队各得1分. (3) 否则胜利的球队得3分,败者不得分. 尽管非常遗憾没有观赏到精彩的…
地址 看数据范围很明显的搜索题,暴力dfs是枚举按顺序每一场比赛的胜败情况到底,合法就累计.$O(3^{n*(n-1)/2})$.n到10的时候比较大,考虑剪枝. 本人比较菜所以关键性的剪枝没想出来,但由于数据较水,20个点就T了2个.依旧记下剪枝方案,没想到的用下划线和红笔标注: 剪枝一:个人觉得应该将数组从小到大排序来搜,这样感觉起来状态少一些.实测有时和从大到小相差不大,但有时可能有效. 剪枝二:如果当前选手就算赢了所有剩下的场也到不了分数,剪掉.弱剪枝. 剪枝三:如果剩下所有场全是决出胜…
[HNOI2013]比赛 搜索. LG传送门 直接暴力有60,考场上写的60,结果挂成40. 考虑在暴力的同时加个记忆化,把剩下的球队数和每支球队的得分情况hash一下,每次搜到还剩\(t\)个队的时候就在哈希表里找一下,有就拿来算答案,没有就把这次的结果存进哈希表.复杂度\(O(\)能过\()\). #include <cstdio> #include <algorithm> #include <unordered_map> #define R register #d…
Description 沫沫非常喜欢看足球赛,但因为沉迷于射箭游戏,错过了最近的一次足球联赛.此次联 赛共N支球队参加,比赛规则如下:  (1) 每两支球队之间踢一场比赛. (2) 若平局,两支球队各得1分.  (3) 否则胜利的球队得3分,败者不得分.  尽管非常遗憾没有观赏到精彩的比赛,但沫沫通过新闻知道了每只球队的最后总得分, 然后聪明的她想计算出有多少种可能的比赛过程.  譬如有3支球队,每支球队最后均积3分,那么有两种可能的情况:  可能性1     可能性2  球队  A  B  C…
题目链接 不会搜索了.. DFS()中两个参数,枚举每两个队伍的比赛结果(分配当前队伍的分数). 可以发现方案数量与具体哪只球队得了多少分无关,只与当前比赛的队伍数量和得分序列的组成有关.可以记忆化搜索. DFS()中是从某支队伍和它后面的队伍一一进行比赛 分配得分,分配完当前后将其它队伍的得分情况哈希,看是否算过: 如果没就进行下一支队伍,其实就是计算去掉当前这支队伍的方案数. n(n<=10)支队伍分数的情况最多为(28^9?)10^14级别,可以直接用longlong存. 这样做为什么必须…
http://www.lydsy.com/JudgeOnline/problem.php?id=3139 队伍的顺序不会影响结果 将队伍的得分情况作为状态,记忆化搜索 就是先搜索第一只队伍的得分情况,即为他分配分数 当第一只队伍的分数分配完时,它与其他队伍的比拼会使其他队伍也分配到了一定的分数 将其他队伍分配到的分数 这个状态 哈希 然后第二支队……,这就是子问题 啊啊啊,我也不知道我在说啥了 myl考场AC tql!!! #include<algorithm> #include<cst…
传送门 Solution 搜索加Hash记录状态,记忆化搜索,需要注意顺序无关答案 Code //By Menteur_Hxy #include <map> #include <cmath> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define Re register…
[BZOJ3139][HNOI2013]比赛(搜索) 题面 BZOJ 洛谷 题解 双倍经验…
[HNOI2013]比赛 题目描述 沫沫非常喜欢看足球赛,但因为沉迷于射箭游戏,错过了最近的一次足球联赛.此次联 赛共N支球队参加,比赛规则如下: (1) 每两支球队之间踢一场比赛. (2) 若平局,两支球队各得1分. (3) 否则胜利的球队得3分,败者不得分. 尽管非常遗憾没有观赏到精彩的比赛,但沫沫通过新闻知道了每只球队的最后总得分, 然后聪明的她想计算出有多少种可能的比赛过程. 譬如有3支球队,每支球队最后均积3分,那么有两种可能的情况: 可能性1 可能性2 球队 A B C 得分 球队…
[题解][P3230 HNOI2013]比赛 将得分的序列化成样例给的那种表格,发现一行和一列是同时确定的.这个表格之前是正方形的,后来长宽都减去一,还是正方形.问题形式是递归的.这就启示我们可以把这个正方形\(hash\)起来,直接搜索. 平局和胜场可以很显然地算出来, \(draws=\frac{(n)(n-1)}{2} \times 3-sum\) \(wins=\frac{n(n-1)}{2}-draws\) 靠这个剪枝. 注意 if(rac[now]+(n-to+1)*3<data[n…