二模 (16) day1&day2
第一题:
题目大意:
数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007. n<=1000000
解题过程:
1.递推式还真没想出来,就记录每个a[i]的分解质因数的结果,然后转移质因子的个数。可以拿到30分。
2.思路:计算a[i]的时候,a[i]=a[i-2]*a[i-1]*i. 追踪这个i,它到a[i+1]里的时候是一个i,到a[i+2]里的时候是2个i,到a[i+3]里的时候是3个i,到a[i+4]里的时候是5个i,所以可以发现i到a[n]里的时候就有F[n-i+1]个i.(F[i]表示斐波那契数列第i项).
3.根据这个思路就可以来做了,首先很容易想到可以把1~n都分解质因数就可以得出a[n]中各个质因子的个数了,但是对于100w的数据显然是跑不出来的。时间复杂度是O(n*sqrt(n))
4.既然1~n都要分解质因数,那么不妨直接仿照筛法来做。举个例子:对于质数3,可以筛到3,6,9,12... 3,6,12里都有1个质因子3,那么a[n]中的质因子3的个数就可以加上F[n-3+1],F[n-6+1],F[N-12+1].. 而对于9,他有2个质因子3,那么a[n]中的质因子3的个数就可以加上F[n-9+1]*2. 也就是k中有多少个质因子x,就让a[n]质因子x的个数加上多少个F[n-k+1].时间复杂度成功降为O(n*log2n). 但是还是跑不出100w的数据。
5.更进一步优化可以到O(n). 对于数k,假设它有一个质因子p,显然a[n]中的p的个数要加上F[n-k+1].那么加起来之后就先不要管它。但是k/p的每个质因数在a[n]中也要出现F[n-k+1],被我们忽略掉了(实际上是把它放到分解k/p的时候来算),所以当分解真正的k/p的时候,它的每个质因子在a[n]中本来是要出现F[n-k/p+1]次的,但是之前还有一个被我们丢掉的k/p,要出现F[n-k+1]次,所以当我们分解真正的k/p的时候,把它在a[n]中出现的次数当做F[n-k/p+1]+F[n-k+1]次就可以了。
因此在分解k的时候,只要计算最小的质因子p(其实可以任意一个质因数),然后F[n-k/p+1]=F[n-k/p+1]+F[n-k+1]. 非常巧妙. 至于为什么要最小的质因子p,是因为可以用O(n)的筛法处理出每个数最小的质因数。
第二题:
题目大意:
解同余方程组
x mod m1=a1
x mod m2=a2
...
x mod mn=an
解题过程:
1.这题数据真良心,直接暴力枚举+卡时骗到了60分。
2.AC算法和扩展欧几里得有关,我直接补充到之前的关于扩展欧几里得的文章里了。
http://www.cnblogs.com/vb4896/p/4009181.html
第三题:
题目大意:
在三维空间里从(0,0,0)出发,要求走n步回到原地.第k步可以让x,y,z坐标的任意一个+-k,然后还有一些障碍点不能通过,也不能走走过的点,求所有方案。 n<=12.
解题过程:
1.看到n的范围这么小八成就是搜索了,先打了个最裸的搜索,发现竟然很快可以跑出10以内的数据,对于11和12就不大行了。
2.由于第k步只能让一个坐标+k,很多情况下都是永远走不到原点的. 假设是在第k步,当前的坐标是(x,y,z).之后肯定要让xyz都变成0, 那么不考虑障碍什么的,在最理想的状况下,x,y,z在后面的第k+1,k+2...n步中,要么+t,要么-t,要么不变.所以可以倒着dfs预处理出一个数组d[i][j],表示在第i,i+1,i+2..n步里能否达到j. 就可以拿来剪枝了:
d[k+1][-x]==false || d[k+1][-y]==false || d[k+1][-z]==false 的时候直接return.
这样对于n=12且没有任何障碍点的数据都能很快出解。
二模 (16) day1&day2的更多相关文章
- 又是一个二模02,不过day2
话说比较简单.除了第三题不会写平衡树啊你妹!!边做边写吧. 机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链 ...
- 二模 (8) day2
第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- 二模 (9) day2
第一题: 题目大意:求满足条件P的N位二进制数的个数.P:该二进制数有至少3个0或者3个1挨在一起.. N<=20000 解题过程: 1.一开始直接写了个dfs把表打了出来,不过没发现什么规律, ...
- 二模 (15)day2
第一题:Alice和Bob两个人正在玩一个游戏,游戏有很多种任务,难度为p的任务(p是正整数),有1/2p 的概率完成并得到2p−1分,如果完成不了,得0分.一开始每人都是0分,从Alice开始轮流做 ...
- 二模 (12)day2
第一题: 题目大意: 有N颗糖,两个人轮流取,每次只能取质数颗,不能取的输.求先取者若必胜,最少需要多少步胜利.(N<=10000) 解题过程: 1.看到N的范围比较小,先打个素数表,然后dp即 ...
- 二模 (12) day1
第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码 ...
- 二模 (6) day1
第一题: 设 S(N)表示 N 的各位数字之和,如 S(484)=4+8+4=16,S(22)=2+2=4.如果一个正整数 x满足 S(x*x)=S(x)*S(x),我们称 x 为 Rabbit Nu ...
- 二模 (4) day1
第一题: 题目描述: 有一个无穷序列如下:110100100010000100000…请你找出这个无穷序列中指定位置上的数字 解题过程: 1.考虑到1的数目比0少的多,就从1的位置的规律开始分析.前几 ...
随机推荐
- RF《Quick Start Guide》操作总结
这篇文章之所以会给整理出来,是因为学了一个季度的RF后,再去看官网的这个文档,感触破多,最大的感触还是觉得自己走了不少弯路,还有些是学习方法上的弯路.在未查看这类官网文档之前,更多的是看其他各种人的博 ...
- VS2010 支持 CSS3
在安装Standards Update for VS2010 SP1后,VS2010中没有CSS3.0问题,以下是我的解决方法 1.首先去官网下载 CSS 3 Intellisense Schema ...
- SVN使用教程总结
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...
- 配置jsp开发环境
一.安装jdk(http://pan.baidu.com/s/1sjk9a2p) 二.配置java环境变量 安装好后,配置环境变量:计算机——右击——属性——高级系统设置设置——环境变量 系统变量(没 ...
- mysql常用操作语句(转)
mysql -u root -p mysql -h localhost -u root -p database_name 2.列出数据库: show databases; 3.选择数据库: use ...
- [问题2014A01] 解答三(升阶法,由董麒麟同学提供)
[问题2014A01] 解答三(升阶法,由董麒麟同学提供) 引入变量 \(y\),将 \(|A|\) 升阶,考虑如下行列式: \[|B|=\begin{vmatrix} 1 & x_1-a & ...
- hihoCoder 1385 : A Simple Job(简单工作)
hihoCoder #1385 : A Simple Job(简单工作) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 Institute ...
- jq 移除包含某个字符串的类名js
el.removeClass (function (index, css) { return (css.match (/(^|\s)star\S+/g) || []).join(' ');//移除以“ ...
- Reapter合并行
html文件: <asp:Repeater ID="rptEmployee" runat="server"> <HeaderTemplate& ...
- 学的一点点ps
从C语言的代码中解脱开始学ps,看到色彩鲜明的东西,心里只有那么爽.哈哈.只学习3天,虽然只是一些皮毛,可还是学到了一些以前不知道的东西.让我对ps多了很多兴趣,决定以后要自学更多的ps技能.要给图片 ...