题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3139


  可以发现,答案之和得分的序列有关,而且和序列中每个元素的顺序无关。考虑HASH所有的状态,记忆化搜索即可。

  (取模出问题+没有判断是否访问,即答案为0的状态有的可能已经访问过了)调了一个多小时。


#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<map>
using namespace std;
#define maxn 12
#define llg long long
#define md 1000000007
#define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
llg n,m;map<llg,llg>f;bool cmp(llg a,llg b){return a<b;}struct node
{llg a[maxn],len;void px() {sort(a+1,a+len+1,cmp);}llg hash(){llg tot=len,x=1;for (llg i=1;i<=len;i++){tot*=28;tot+=x*a[i];}//cout<<tot<<endl;return tot;}
};llg ss(node w,llg x,llg res,llg up);
llg dfs(node e);llg ss(node w,llg x,llg res,llg up)
{llg ans=0;if (x>up){if (res==0) ans=dfs(w);return ans;}if (res>=3){ans+=ss(w,x+1,res-3,up); ans%=md;}if (res>=1 && w.a[x]>=1){w.a[x]--;ans+=ss(w,x+1,res-1,up);ans%=md;w.a[x]++;}if (w.a[x]>=3){w.a[x]-=3;ans+=ss(w,x+1,res,up);ans%=md;w.a[x]+=3;}return ans%md;
}llg dfs(node e)
{e.px();llg val=e.hash();if (f[val]!=0) return max((llg)0,f[e.hash()]);node ne=e;for (llg i=1;i<e.len;i++) ne.a[i]=ne.a[i+1];ne.len=e.len-1; ne.a[e.len]=0;f[val]=ss(ne,1,e.a[1],e.len-1)%md;if (f[val]==0) f[val]=-1;
//    cout<<e.hash()<<endl;return max((llg)0,f[val]);
}int main()
{yyj("match");cin>>n;node w; w.len=n;memset(w.a,0,sizeof(w.a));for (llg i=1;i<=n;i++) scanf("%lld",&w.a[i]);w.px(); f[0]=1;dfs(w);cout<<max((llg)0,f[w.hash()]);return 0;
}

转载于:https://www.cnblogs.com/Dragon-Light/p/6407419.html

【BZOJ】3139: [Hnoi2013]比赛相关推荐

  1. [HNOI2013]比赛 搜索

    [HNOI2013]比赛 搜索. LG传送门 直接暴力有60,考场上写的60,结果挂成40. 考虑在暴力的同时加个记忆化,把剩下的球队数和每支球队的得分情况hash一下,每次搜到还剩\(t\)个队的时 ...

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

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

  3. [BZOJ 3143][Hnoi2013]游走(高斯消元+期望)

    Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...

  4. BZOJ 3144 [HNOI2013]切糕 (最大流+巧妙的建图)

    题面:洛谷传送门 BZOJ传送门 最大流神题 把点权转化为边权,切糕里每个点$(i,j,k)$向$(i,j,k+1)$连一条流量为$v(i,j,k)$的边 源点$S$向第$1$层的点连边,第$R+1$ ...

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

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

  6. BZOJ 3144 [Hnoi2013]切糕

    3144: [Hnoi2013]切糕 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵 ...

  7. BZOJ3139: [Hnoi2013]比赛

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

  8. bzoj 3143: [Hnoi2013]游走(高斯消元)

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3171  Solved: 1390 [Submit][Stat ...

  9. BZOJ 3143: [Hnoi2013]游走 高斯消元 期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3463  Solved: 1535 [Submit][Stat ...

最新文章

  1. 三维重建【一】——————(深度学习方式)
  2. CDN监控系统(一)
  3. 每日一皮:临近截止日期, 产品经理就这样看着我...
  4. [转]json2.js 源码解读
  5. 移动应用开发过程中的迭代式原型设计
  6. 【报错解决】linux网络编程报错storage size of ‘serv_addr’ isn’t known解决办法
  7. 详细描述三个适于瀑布模型的项目_IT项目管理笔记——方法选择和软件评估
  8. 奥鹏东师计算机应用基础18,免费在线作业答案奥鹏东师计算机应用基础15秋在线作业1试卷及答案(1)...
  9. 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
  10. c语言常考的编程题,C语言操作题常考编程题库
  11. boost::array与std::vector使用与性能
  12. ulipad双击打不开 解决
  13. Android反编译工具总结
  14. Matlab GUI界面设计
  15. 富士通750打印机驱动步骤_非网络激光打印机如何进行网络打印?
  16. Rust 限流算法crate调研
  17. 2023年全国最新交安安全员精选真题及答案3
  18. 互联网和万维网的区别
  19. 如何评估ASO优化方案案例推广效果,优化aso方案
  20. 如何让自己像打电子竞技一样发了疯、拼了命、的学习?

热门文章

  1. OpenStack在线迁移
  2. 《Javascript高级程序设计》读书笔记之bind函数详解
  3. 那些帮助你成为优秀前端工程师的讲座——《性能篇》
  4. 网站bin目录下的不可以放配置文件或其他可写文件
  5. springer journal recommendation tool
  6. 夏天有稍微热一点的说法,但是没有冬天没有稍微冷一点的说法
  7. 我的思维模式的阿喀琉斯之踵
  8. 关于StreamReader的构造函数
  9. 外媒炒作中国黑客入侵美保险公司 并无相关证据
  10. 标本兼治:企业应揪出网络漏洞元凶