【BZOJ】3139: [Hnoi2013]比赛
题目链接: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]比赛相关推荐
- [HNOI2013]比赛 搜索
[HNOI2013]比赛 搜索. LG传送门 直接暴力有60,考场上写的60,结果挂成40. 考虑在暴力的同时加个记忆化,把剩下的球队数和每支球队的得分情况hash一下,每次搜到还剩\(t\)个队的时 ...
- [CQOI2009]循环赛[HNOI2013]比赛
[CQOI2009]循环赛&&[HNOI2013]比赛--真是好题(差点没把我脑子烧坏-sd的无奈) 提前声明:感谢大佬看了他的题解后,我才恍然大悟 -好,先上题目 [CQOI2009 ...
- [BZOJ 3143][Hnoi2013]游走(高斯消元+期望)
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
- BZOJ 3144 [HNOI2013]切糕 (最大流+巧妙的建图)
题面:洛谷传送门 BZOJ传送门 最大流神题 把点权转化为边权,切糕里每个点$(i,j,k)$向$(i,j,k+1)$连一条流量为$v(i,j,k)$的边 源点$S$向第$1$层的点连边,第$R+1$ ...
- BZOJ3139/BZOJ1306 HNOI2013比赛/CQOI2009循环赛(搜索)
搜索好难啊. 1.对于每个分数集合记忆化. 2.某人得分超过总分,剪枝. 3.某人之后全赢也无法达到总分,剪枝. 4.每有一场比赛分出胜负总分会多三分,而平局则会多两分.某人的分出胜负场次或平局场次超 ...
- BZOJ 3144 [Hnoi2013]切糕
3144: [Hnoi2013]切糕 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵 ...
- BZOJ3139: [Hnoi2013]比赛
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3139 记忆化搜索.用map来存当前点的状态.然后搜索顺序要从大到小搜. #include< ...
- bzoj 3143: [Hnoi2013]游走(高斯消元)
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3171 Solved: 1390 [Submit][Stat ...
- BZOJ 3143: [Hnoi2013]游走 高斯消元 期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3463 Solved: 1535 [Submit][Stat ...
最新文章
- 三维重建【一】——————(深度学习方式)
- CDN监控系统(一)
- 每日一皮:临近截止日期, 产品经理就这样看着我...
- [转]json2.js 源码解读
- 移动应用开发过程中的迭代式原型设计
- 【报错解决】linux网络编程报错storage size of ‘serv_addr’ isn’t known解决办法
- 详细描述三个适于瀑布模型的项目_IT项目管理笔记——方法选择和软件评估
- 奥鹏东师计算机应用基础18,免费在线作业答案奥鹏东师计算机应用基础15秋在线作业1试卷及答案(1)...
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- c语言常考的编程题,C语言操作题常考编程题库
- boost::array与std::vector使用与性能
- ulipad双击打不开 解决
- Android反编译工具总结
- Matlab GUI界面设计
- 富士通750打印机驱动步骤_非网络激光打印机如何进行网络打印?
- Rust 限流算法crate调研
- 2023年全国最新交安安全员精选真题及答案3
- 互联网和万维网的区别
- 如何评估ASO优化方案案例推广效果,优化aso方案
- 如何让自己像打电子竞技一样发了疯、拼了命、的学习?