51nod 1034 骨牌覆盖 V3 | URAL 1594 Aztec Treasure
来源:互联网 发布:淘宝霏慕最出名模特 编辑:程序博客网 时间:2024/05/19 20:41
题目:
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1034
http://acm.timus.ru/problem.aspx?space=1&num=1594
题意:
给定一个
骨牌覆盖 V3 :求方案数精确值
Aztec Treasure :求方案数
题解:
有解的情况实际上只有 3775 种, URAL 上的题目可以打表,或者写完之后猜一下二次剩余的符号。
这里提供一个算具体方案数(不取模)但是不用高精度有理数的做法,会用到高精度整数的只有CRT和开方的部分,其他部分可以用 __int128_t
完成,如果只是需要打表,可以用 C++ 完成主要部分, python 完成大数部分。
这个平面图比较特殊,所以FKT Algorithm计算完美匹配数平方的那个矩阵可以不用写成
为了避开我不会的内容,我们从Wikipedia上给出的公式开始介绍。
令
注意到
不难发现
对于这个
然而上面那个乘积还是并不好算的,为此我们需要更棒的性质,在MathWorld可以找到它的矩阵特征是
然后你带进去就可以发现
根据Wikipedia,有
剩余的内容是对一个整系数矩阵求行列式并开方的过程,我采取的方法是取多个大质数计算模意义下的行列式,例如取
开方和求矩阵的部分都不是最慢的部分,主要是求行列式比较慢,用 C++ 实现较好。
代码就不给了,比较短,而且内容已经在上面描述完毕了。
2017.09.06 更新:注意到矩阵具有对称性,最终消元得到的 trace 将满足奇数位置的乘积等于偶数位置的乘积,利用该性质可以避免开根号。
- 51nod 1034 骨牌覆盖 V3 | URAL 1594 Aztec Treasure
- 51NOD 1031 骨牌覆盖
- 51nod 1031 骨牌覆盖
- 51nod 1031 骨牌覆盖
- 51nod-1031 骨牌覆盖
- 51nod 1031 骨牌覆盖
- 51nod-【1031 骨牌覆盖】
- 51Nod 1031 骨牌覆盖
- 51Nod 1031 骨牌覆盖
- 51nod 1031骨牌覆盖
- 51nod 1031 骨牌覆盖
- 51nod 1031 骨牌覆盖
- 51nod 1031 骨牌覆盖
- 51Nod 1031 骨牌覆盖
- 51Nod-1031-骨牌覆盖
- 51nod 1033 骨牌覆盖v2
- 51nod 1033骨牌覆盖 V2
- 51Nod-1031 骨牌覆盖【递推】
- B. Not Afraid
- C. Dasha and Password(模拟,暴力)
- 【图像基础】相似性变换、放射变换与单应性
- Lua(三)
- 复选框全选/取消全选 获得选中的val id 以及删除tr 增加tr 简单详解
- 51nod 1034 骨牌覆盖 V3 | URAL 1594 Aztec Treasure
- [Android]emulator-5554 offline 问题
- 编写代码模拟三次密码输入的场景
- 编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果是大写字符,就输出对应的小写字符,如果是数字不输出
- 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99
- 输出一个整数的每一位
- 编写程序数一下 1到 100 的所有整数中出现多少次数字9
- hexo常用命令
- Create Volume 操作(Part III)