USACO6.5.1 All Latin Squares(latin)
来源:互联网 发布:西安华信软件 编辑:程序博客网 时间:2024/06/05 19:55
搜索就好了吧,正解是置换群的优化剪枝,只对于最后一个点用得着,所以渣渣就自己给 n=7 打了个表
置换群
http://baike.baidu.com/link?url=3O0MeCCYhjxS4525-CTNAAf-lR4gmfeTKh6kdt4cNOgF18tNxo1183jjRZJuHHJJ7FAfvfqiQrNiWVdlhUOxA_
大神置换群优化代码
http://www.cppblog.com/jericho/archive/2011/02/14/140034.html
/*ID:xsy97051LANG:C++TASK:latin*/#include <cstdio>#include <iostream>using namespace std;const int N[8]={1,1,2,6,24,120,720,1440};bool zong[8][8],hen[8][8];long long n,cnt;void next(int &x,int &y){ y++; if (y>n) { y=2; x++; }}void dfs(int x,int y){ if(x>=n) { cnt++; return; } int xl=x,yl=y; next(xl,yl); for(int i=1;i<=n;i++) if(!hen[x][i] && !zong[y][i]) { hen[x][i]=zong[y][i]=1; dfs(xl,yl); hen[x][i]=zong[y][i]=0; }}int main(){ freopen("latin.in","r",stdin); freopen("latin.out","w",stdout); cin>>n; if(n==7)//打表,跑了22s,正解为置换圈,不会.. { cout<<"12198297600"<<endl; return 0; } for(int i=1;i<=n;i++) zong[i][i]=hen[i][i]=1; dfs(2,2); cout<<N[n-1]*cnt<<endl;}
0 0
- USACO6.5.1 All Latin Squares(latin)
- All Latin Squares
- USACO All Latin Squares 解题报告
- Avangard Latin Squares
- usaco training 5.4.1 All Latin Squares 题解
- USACO Section 5.4 All Latin Squares - DFS剪枝,我只能做出5个点..
- pig latin
- Latin square
- Pig Latin
- Pig Latin
- Pig Latin
- Pig Latin
- mysql latin to utf8
- mysql转latin
- mysql latin 转utf8
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- poj2948--Martian Mining(dp)
- mini2440 使用mdev创建设备节点问题
- 使用webservice操作强类型数据集时的注意事项
- HDU 1000 A+B Problem C/C++
- 动态调用动态语言--脚本API
- USACO6.5.1 All Latin Squares(latin)
- git的用法03
- 自学成才网站
- Android shape
- 思科CCNA第三学期第六章答案
- 数组指针malloc空间问题
- HDU 1517 A Multiplication Game 巴什博弈
- Huffman树
- thinkphp对事务回滚的案例