提高组模拟赛总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提高组模拟赛总结相关的知识,希望对你有一定的参考价值。
貌似是tyvj 2012年的题?
T1:给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点。绿豆蛙从起点出发,走向终点。
到达每一个顶点时,如果有K条离开该点的道路,绿豆蛙可以选择任意一条道路离开该点,并且走向每条路的概率为 1/K 。
现在绿豆蛙想知道,从起点走到终点的所经过的路径总长度期望是多少?
刚看到题目,歪歪斜斜的每页上都写着‘水题’几个字。我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满本都写着一个字是‘坑’!”
显然是个DAG,拓扑排序,然而写完之后发现死活过不去样例,这个时候有人和我说概率是通过入度是边的数量算的
于是就改了一下,过了样例,但是这样正着写对拍是过不去的
考虑如果只算入度的概率,其保证正确性必须要在入度的几条路径都是等概率的情况下,否则概率无法简单的1/k计算,这条路径的概率需要结合之前的期望推过来,然而正着算的话并不能
于是就(正难则反)雾,改为从n到1算,然后就愉快的AC了
T2:
给定一个整数n,求一个整数m,满足m<=n,并且m/phi(m)的值最大。
注:phi(m)代表m的欧拉函数,即不大于m且与m互质的数的个数。
对于10%的数据, n<=1000
对于30%的数据, n<=1010
对于60%的数据, n<=102000
对于100%的数据,T<=100,n<=1025000。
找规律发现,满足一个数欧拉函数尽可能小,当且仅当乘上一个不为其因子倍数的数,就是互质,于是只要连续乘上质数,就能保证答案的正确性
即找到 m = prime[1] * prime[2] *.. *prime[k] 使得m+1恰好第一次> n
然而这样只有70分,由于询问次数过多,复杂度比较大
但是考虑无论询问多少组,k最大也只求到当中值最大的那一组的值,于是就可以离线了,对高精度数的排序虽然有点坑,但是sort还是轻松解决
另外发现了一个玄学的东西 inline bool cmp(BigNum A, BigNum B) 比 inline bool cmp(const BigNum &A, const BigNum &B)要慢很多,前者甚至只能得70
T3:
据说是一个拆点二分图,实在是太神了,看来只有联赛以后能来填坑了(flag)
以上是关于提高组模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章