【BZOJ】【P1306】【CQOI2009】【match循环赛】【题解】【搜索+剪枝】
来源:互联网 发布:升级python到2.7.5 编辑:程序博客网 时间:2024/06/05 03:57
传送门:
http://www.lydsy.com/JudgeOnline/problem.php?id=1306
这道题狠狠得告诉了我一句:能剪就得剪!!!
剪枝都非常非常简单,就是得全加上
①n个队伍会打(n*(n-1))/2场比赛,枚举一个队伍赢就是另一个队伍输
②每个队伍枚举到最后一场比赛时能直接计算出来
③如果当前得分大于目标分数就return
④如果以后全赢也到不了目标分数就return
完了,全加上就7s过,蒟蒻难以想象rank1 15ms是怎样过的……
Code:
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;int n;int sor[9];int nowsor[9];int mp[9][9];int ans=0;bool ok(){for(int i=1;i<=n;i++)if(sor[i]!=nowsor[i])return false;return true;}inline void dfs(int a,int b){ if(a>=n){if(sor[n]==nowsor[n])ans++;return;}int i=b+1;if(i==n){int k=sor[a]-nowsor[a];if(k==0){nowsor[a]+=0;nowsor[i]+=3;mp[a][i]=0;mp[i][a]=3;if(nowsor[a]<=sor[a]&&nowsor[i]<=sor[i]&&nowsor[a]+3*(n-i)>=sor[a]&&nowsor[i]+3*(n-a)>=sor[i])dfs(a+1,a+1);nowsor[a]-=0;nowsor[i]-=3;}elseif(k==1){nowsor[a]+=1;nowsor[i]+=1;mp[a][i]=1;mp[i][a]=1;if(nowsor[a]<=sor[a]&&nowsor[i]<=sor[i]&&nowsor[a]+3*(n-i)>=sor[a]&&nowsor[i]+3*(n-a)>=sor[i])dfs(a+1,a+1);nowsor[a]-=1;nowsor[i]-=1;}elseif(k==3){nowsor[a]+=3; nowsor[i]+=0;mp[a][i]=3; mp[i][a]=0;if(nowsor[a]<=sor[a]&&nowsor[i]<=sor[i]&&nowsor[a]+3*(n-i)>=sor[a]&&nowsor[i]+3*(n-a)>=sor[i])dfs(a+1,a+1);nowsor[a]-=3; nowsor[i]-=0;}}else{nowsor[a]+=3; nowsor[i]+=0;mp[a][i]=3; mp[i][a]=0;if(nowsor[a]<=sor[a]&&nowsor[i]<=sor[i]&&nowsor[a]+3*(n-i)>=sor[a]&&nowsor[i]+3*(n-a)>=sor[i])dfs(a,b+1);nowsor[a]-=3; nowsor[i]-=0;nowsor[a]+=1;nowsor[i]+=1;mp[a][i]=1;mp[i][a]=1;if(nowsor[a]<=sor[a]&&nowsor[i]<=sor[i]&&nowsor[a]+3*(n-i)>=sor[a]&&nowsor[i]+3*(n-a)>=sor[i])dfs(a,b+1);nowsor[a]-=1;nowsor[i]-=1;nowsor[a]+=0;nowsor[i]+=3;mp[a][i]=0;mp[i][a]=3;if(nowsor[a]<=sor[a]&&nowsor[i]<=sor[i]&&nowsor[a]+3*(n-i)>=sor[a]&&nowsor[i]+3*(n-a)>=sor[i])dfs(a,b+1);nowsor[a]-=0;nowsor[i]-=3;}}int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&sor[i]);dfs(1,1);cout<<ans<<endl;return 0;}
0 0
- 【BZOJ】【P1306】【CQOI2009】【match循环赛】【题解】【搜索+剪枝】
- BZOJ P1306 [CQOI2009]match循环赛
- BZOJ 1306: [CQOI2009]match循环赛 爆搜,剪枝
- BZOJ 1306: [CQOI2009]match循环赛
- bzoj 1306 [CQOI2009]match循环赛
- bzoj1306: [CQOI2009]match循环赛
- 1306: [CQOI2009]match循环赛
- bzoj1306 [CQOI2009]match循环赛
- [CQOI2009] 循环赛 - 暴力出奇迹
- BZOJ 1303 [CQOI2009] 中位数图 题解与分析
- 【搜索剪枝】acm 2014东京赛区 题解
- BZOJ 1082 SCOI 2005 栅栏 搜索+剪枝
- BZOJ 1082 栅栏 (二分 剪枝搜索)
- Vijos P1521 跳舞(CQOI2009)题解
- BZOJ 1305: [CQOI2009]dance跳舞
- 【BZOJ 1305】 [CQOI2009]dance跳舞
- 【BZOJ 1303】 [CQOI2009]中位数图
- BZOJ 1305: [CQOI2009]dance跳舞
- Android中json的解析优化
- 黑马程序员-Java代理
- bash 学习资料
- JBPM4.4 + Struts2 + Spring3 + Hibernate3之整合
- hadoop命令大全
- 【BZOJ】【P1306】【CQOI2009】【match循环赛】【题解】【搜索+剪枝】
- jQuery Validation让验证变得如此容易(二)
- gcc 编译多个源文件
- rabbitmq Access Control,quest用户不能远程访问
- mac 上安装 mysql-python 的郁闷过程!好在是解决了!
- Apache、Nnginx、Lighttpd的比较和择优
- WinCE系统声音定制
- CVPR 2014 论文
- open cv+C++错误及经验总结(十三)