「考试」noip模拟1
Posted 土 块
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「考试」noip模拟1相关的知识,希望对你有一定的参考价值。
序列
首先可以发现,当公比不为 1 时,序列的长度最多是 \\(\\log\\) 值域
所以应该试着把复杂度往这个性质上优化一下
暴力判断合法有 60 分,但是这个 zz 写挂了
考虑怎么把公比确定下来,然后发现只要确定两个数,公比就可求
如果两个数为 \\(x,y\\) 且 \\(x\\) 被 \\(y\\) 整除,那么这个公比一定是从 \\(\\frac x y\\) 里提取的,就是说满足 \\(q^k=\\frac x y\\)
那么把 \\(\\frac x y\\) 质因数分解,各质因数的次数间取最大公因数,就可以求出最小的由两数确定的公比
这样一来,只要有两个数,就可以得到公比
那么可以枚举每一个序列开始的 \\(a_i,a_{i+1}\\),然后向后直到不能加进序列,并用 set 判重
因为 \\(q\\leq 1000\\) 的限制,所以在 \\(\\frac x y\\) 有 1000 以上因子时应当跳过
由开头得到的性质,似乎可以保证复杂度几乎为 \\(O(n)\\) (筛,分解质因数和set的复杂度都不是很高)
熟练剖分
题解没太看懂QAQ所以复读一下赵sir的神仙做法
因为是 n 方 dp,所以可以想到一维结点,另一维表示轻链长度
这样一来就可以直接用定义式算出期望,所以只需要 dp 求出各状态的概率即可
在转移时,可以这样来处理随机选重链的过程:在转移用的临时数组另开一维 0/1 代表是否已经选了重链
然后就有已选 -> 已选,未选 -> 已选,未选 -> 未选三种转移
最后按定义式算答案即可
建造游乐园
首先得到一个结论:答案即为 n 个点的无向连通欧拉图个数与 \\(C_{n-1}^2\\) 的乘积
证明:因为两个无向连通欧拉图之间的转化会且仅会更改 2 条边,所以在它基础上加边/减边可以逆推出所求,且是不重不漏的
那么现在的问题转化成了 n 个点的无向连通欧拉图个数
由求无向联通图个数的相似方法可以做到 \\(O(n^2)\\) 求解
其中 n 个点的无向欧拉(不保证联通)图个数为 \\(2^{C_{i-1}^2}\\)
这是因为可以对于 n-1 个点的任意图,把其中度数为奇数的点向点 n 连边(这些点的个数一定是偶数),得到一个欧拉图
以上是关于「考试」noip模拟1的主要内容,如果未能解决你的问题,请参考以下文章