[转]MegCup2015初赛题
门票题:数独有多少种对解线上没有1的填法?
这道“门票题”虽说只是“热身”,但还是有一定难度的。共有245名选手通过各种方法拿到了门票。下面,我们就为大家总结了一下各种解这道题的方法。
Solution 1:暴力搜索!
数独一共只有 6,670,903,752,021,072,936,960种解法。 并且,在考虑对称性之后,只剩下了 5,472,730,538 种“本质不同”的数独解法。(见wikipedia Mathematics_of_Sudoku)。所以,做这题最暴力的方法就是枚举对称意义下的等价类,之后对每个等价类分别计数即可。当然,这只是一种“理论上”可行的做法,实际要真这么做的话,你的机器要足够好哟。为了确保答案的正确性,我们用了一种和这个类似的方法来验证我们的答案。
Solution 2:对称性
很显然的是,对于一种数独的解法,我们只关心它里面1的位置。一个很自然的想法就是,我们算一算数独解法中对角线没有1的“比例”。已知数独有6,670,903,752,021,072,936,960种解法。通过在每个3x9或9x3的“带”内交换行或者列,可以把每666666=46656个解法(带内部置换有3!=6种方法,一共有6个带)分成一组,共有142980618827612160组。不管你是猜的还是证的,你会发现,每一组内对角线不含1的比例都是一样的!这样,我们只需要任取一个解,通过置换生成它组内的46656个解法,检验一下对角线不含1的比例就行了。如何任取一个解呢?看看海报,上面就印着字典序意最小的那个解。这样算出的答案是:
6670903752021072936960 43/486 = 590223994520382996480
Solution 3:手算!
当然,如果你是用这种方法来做这题的,那么你应该不用来看这份题解了。不过,我们真的亲眼目睹过一位同学在草稿纸上用15分钟就算出来了!这么解的精髓就是充分利用对角线图案本身的对称性,使用容斥原理把问题分成几种情况来讨论。具体的方法我们就不剧透了,想挑战自我的同学自行体会一下吧:-)
这一次可以提示一下,仔细观察数独格子交点,还能找到别的做法,
[转]MegCup2015初赛题的更多相关文章
- 蓝桥杯近三年初赛题之一(15年b组)
临近比赛,自己定时做了近三年的初赛题,不是很理想,10道题平均做对5+道.为了这次比赛,总共做了200题左右吧,估计去北京参加决赛有点难,不过不管怎样,对得起自己万余行代码就好. 一.15年初赛题(第 ...
- CCF NOI plus 201(7)6 初赛题 解题报告
GTMDCCF. 今年这题怎么评价? 去看我在知乎的回答:https://www.zhihu.com/question/66621360/answer/244222388 挨个说一遍. 单项选择题 T ...
- 蓝桥杯近3年初赛题之三(17年b组)
1. 标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是 ...
- 蓝桥杯近三年初赛题之二(16年b组)
1. 煤球数目 有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球? 请填 ...
- NOIP 2011 提高组初赛错题简析
Preface 好久没做初赛题了,据说今年的审核会更加严苛,作为一名去年未PY时只有\(92\)分的蒟蒻,我今年看来是\(90\)分都莫得了 然而今年也没怎么看重初赛,结果现在才来做,翻车到了\(84 ...
- 【生活没有希望】NOIP2010初赛 烽火传递 smartoj1475
整天初赛题做做,生活没有希望 用单调队列优化的dp 因为满足后来的总比先来的(在某些方面)更优 所以能用单调队列 n2变成n #include <cstdio> ],b[],c[]; in ...
- NOIP初赛 之 哈夫曼树
哈夫曼树 种根据我已刷的初赛题中基本每套的倒数第五或第六个不定项选择题就有一个关于哈夫曼树及其各种应用的题,占:0-1.5分:然而我针对这个类型的题也多次不会做,so,今晚好好研究下哈夫曼树: 概念: ...
- NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析 Part 2.
洛谷秋令营day1模拟赛原地爆炸,心态崩了.于是打算写一下初赛题放松一下. 上次胡乱分析到了选择题,这次我想说说后面的题. 问题求解 T1.有一个1x8的方格图形,黑白两色填涂每个方格,两个黑格并不能 ...
- NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析
最近在做历年的初赛题,那我捡几道比较有代表性的题说一下好了 原题可以在这里看:https://wenku.baidu.com/view/10c0eb7ce53a580217fcfede.html?fr ...
随机推荐
- NFS CIFS SAMBA 的联系和区别
Common Internet File System, CIFS Server Message Block, SMB Network File System, NFS 在早期网络世界当中,档案数据在 ...
- 在JSP中应用JavaBean
1. 解决中文乱码的JavaBean 在JSP页面中,处理中文字符经常会出现字符乱码的现象,特别是通过表单传递中文数据时容易产生.它的解决办法有很多,如将request的字符集指定为中文字符集,编写J ...
- OTL翻译(10) -- OTL的流缓冲池
OTL的流缓冲池 一般来讲,流一般作为一个局部的变量被使用,当使用完毕后就立刻关闭,如果需要再次使用就需要再次的声明变量,如此循环.OTL流的缓冲池(内存池)是一个解决以往的流性能低下的一个机制.当流 ...
- VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
比如说, 我们有一套VMware的环境, 其中有一台运行者ESXi的主机, 其上有十块SAS盘. 这十块盘中的五块盘被RDM到一台虚机上了. 假设你发现有添加多了一块盘, 你想移除掉, 但是5块盘其中 ...
- mongoDB报错Cannot find module '../build/Release/bson'
打算用nodejs写一个blog系统,发现nodejs还是存在很多的坑.在使用mongodb时遇到如下报错问题: { [Error: Cannot find module '../build/Rele ...
- Android之属性动画(二)
上一篇文章(链接:http://www.cnblogs.com/jerehedu/p/4458928.html ),我们对属性动画有了简单的认识,并实际动手使用ObjectAnimator.Anim ...
- scala 学习笔记一 列表List
1.介绍 Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是.. 列表的元素类型 ...
- C/C++语言中变量作用域:局部变量,全局变量,文件级变量
C/C++语言中的变量分为全局变量和局部变量. 这样的划分方式的根据是变量的可见范围或者叫做作用域. 1 局部变量 局部变量指的是定义在{}中的变量,其作用域也在这个范围内.尽管常见的局部变量都是定义 ...
- RUP---统一软件开发过程
更详细的见:http://www.ibm.com/developerworks/cn/rational/r-rupbp/ 本文引用:http://baike.baidu.com/view/223583 ...
- (剑指Offer)面试题60:把二叉树打印成多行
题目: 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 思路: 很明显,采用广度优先遍历来解决,但因为需要按行输出,所以需要判断每一层的开始和结束,因此需要两个变量,一个表示当前层尚 ...