bzoj1306: [CQOI2009]match循环赛
2017-04-22 17:28
218 查看
传送门
显然是爆搜+O(玄学)优化。
剪枝1:如果全取3或全取0仍不可行退出。
剪枝2:如果还有n个队没有比过,分数差n*3-1,退出。
然后就过了呀。
显然是爆搜+O(玄学)优化。
剪枝1:如果全取3或全取0仍不可行退出。
剪枝2:如果还有n个队没有比过,分数差n*3-1,退出。
然后就过了呀。
#include<cstring> #include<cstdio> #include<iostream> using namespace std; const int f[]={3,1,0,0}; int a[9],b[9],n,ans; inline void dfs(int x,int y){ if (b[x]>a[x]) return; if (b[x]+(n-y+1)*3<a[x]) return; if (x==n){ans++; return;} if (y==n){ int t=a[x]-b[x]; if (t==2) return; b[y]+=f[t]; dfs(x+1,x+2); b[y]-=f[t]; } else{ b[x]+=3; dfs(x,y+1); b[x]-=3; b[y]+=3; dfs(x,y+1); b[y]-=3; b[x]++; b[y]++; dfs(x,y+1); b[x]--; b[y]--; } } int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); dfs(1,2); printf("%d",ans); return 0; }
相关文章推荐
- 【搜索】【剪枝】bzoj1306 [CQOI2009]match循环赛
- 【BZOJ】【P1306】【CQOI2009】【match循环赛】【题解】【搜索+剪枝】
- bzoj 1306 [CQOI2009]match循环赛
- 1306: [CQOI2009]match循环赛
- bzoj 1306: [CQOI2009]match循环赛【dfs+剪枝】
- BZOJ 1306: [CQOI2009]match循环赛 爆搜,剪枝
- BZOJ 1306: [CQOI2009]match循环赛
- [CQOI2009]match循环赛
- BZOJ P1306 [CQOI2009]match循环赛
- [CQOI2009] 循环赛 - 暴力出奇迹
- BZOJ3139/BZOJ1306 HNOI2013比赛/CQOI2009循环赛(搜索)
- bzoj 1303 [CQOI2009]中位数图
- 【CQOI 2009】 中位数图
- 【二分答案】【最大流】bzoj1305 [CQOI2009]dance跳舞
- BZOJ 1305: [CQOI2009]dance跳舞( 最大流 )
- CQOI2009 BZOJ1304 叶子的染色
- bzoj1303 [CQOI2009]中位数图
- 子串为中位数的有几个——BZOJ 1303: [CQOI2009]中位数图
- bzoj1305 [CQOI2009]dance跳舞(二分答案+最大流判是否满流)
- [CQOI2009]dance跳舞