2016.11.13【初中部 NOIP普及组 】模拟赛
来源:互联网 发布:tower与其他软件 编辑:程序博客网 时间:2024/06/04 18:56
T3:
比较有意思.
考试没想到.
题目描述:
给个数x(1<=x<=n),让你给询问的m个问题,每个问题分别是1~n里面的某个数是否能被x整除,求出最小的m使得一定可以知道这个数x.
答案=小于等于n的情况下只为一个素数的次方的个数
证明:
我们知道任何除1外正整数可以表示为2^p1*3^p2*5^p3……那么,我们对于任意一个数x,只要询问2^p1,3^p2,5^p3,7^p4,……通过对这些数的询问一定可以通过公倍数得知x是否能被整除。
证毕。
T4:
DP.
但这个dp通过不同的状态设不同的转移方程挺新颖。
题目描述:
用1~n-1的数的和来构造一个在[L..R]区间内的方案数。
可以设如下状态:
f[i,j]表示构成和为i,用j为最大的数的方案数
f[i,j]=f[i,j]+f[i-j,k](1<=k<=min{j-1,i-j})
当然,可以前缀和优化
令s[i,j]表示构成和为i,用j以内的数作为最大数的方案数
f[i,j]=f[i,j]+s[i-j,min(j-1,i-j)]
s[i,j]=s[i,j-1]+f[i,j]
还可以设如下状态
f[i,j]表示用前i个数,构成和为j的方案数。
f[i,j]=f[i-1,j]+f[i-1,j-i]
当然可以滚动,还可以缩成1维
不过需求和j时倒过来,使得每个数只能选1次。
f[j]表示和为j的方案数
f[j]=f[j]+f[j-i]
当然前面的所有状态的复杂度都接近O(n²)
再考虑一种状态
f[i,j]表示选i个数,构成和为j的方案数。
f[i,j]=f[i-1,j-i]+f[i,j-i]
转移的得来自己悟一下,比较巧妙
这个方程是成立的,不信自己推推,
然后这里因为选i个数,很有可能不到n就大于最大的和了,所以i=trunc(sqrt(n))+q
q是一个常数,因为j的不确定,q大概在300以内。
- 2016.11.13【初中部 NOIP普及组 】模拟赛
- 2016.11.12【初中部 NOIP普及组 】模拟赛
- GaoJueYi 【2016.07.13初中部 NOIP普及组 】模拟赛总结
- GaoJueYi 2016.08.13【初中部 NOIP普及组 】模拟赛总结
- 2016.5.28【初中部 NOIP普及组 】模拟赛总结
- 2016.5.28【初中部 NOIP普及组 】模拟赛
- 2016.5.28【初中部 NOIP普及组 】模拟赛
- 2016.5.28【初中部 NOIP普及组 】模拟赛
- GaoJueYi 【2016.07.14初中部 NOIP普及组 】模拟赛总结
- GaoJueYi【2016.07.15初中部 NOIP普及组 】模拟赛总结
- GaoJueYi【2016.07.16初中部 NOIP普及组 】模拟赛总结
- 2016.07.18【初中部 NOIP普及组 】模拟赛题目
- 2016.07.18【初中部 NOIP普及组 】模拟赛题解
- GaoJueYi 2016.07.18【初中部 NOIP普及组 】模拟赛总结
- GaoJueYi【2016.07.19初中部 NOIP普及组 】模拟赛总结
- 【GaoJueYi 2016.08.15初中部 NOIP普及组 】模拟赛总结
- 【陈奕凝2016.08.15初中部 NOIP普及组 】模拟赛总结
- 【陈奕凝2016.08.14初中部 NOIP普及组 】模拟赛总结
- PowerBuilder Datawindow 滚动条控制
- JDK自带工具一览表
- OC中的一些编程写法--({"添加代码"})
- DOM1
- css3学习
- 2016.11.13【初中部 NOIP普及组 】模拟赛
- JS时间格式化
- python 连接mysql 并传入数据
- PE 71 72 73 Farey Neighbours (sequence) (farey序列)
- iOS用被误解的MVC重构代码
- [绍棠] masonry在iOS7中报错问题
- Python中错误和异常处理
- 论战大原题
- Mysql 插入中文乱码