• noip模拟 10/30


    T1 随机游走1

    Description:

    你在数轴原点x=0处,每次移动可以向左或者向右移动1距离。比如当前的坐标为x=a,移动一次后可以到达 x=a-1/x=a+1中的一个。

    数轴上两点 x=a,x=b 的距离定义为abs(a-b)。

    初始你在x=0处,请你计算随机移动 n 次之后距离原点的期望。

    输出答案乘以2^n的值,mod 998244353。

    solution:

    设f[i][j]表示走i步,位于坐标j时的概率。(1<=i<=n,-n <= j <= n)
    转移:f[i][j] = 1/2 * f[i - 1][j - 1] + 1/2 * f[i-1][j + 1]
    时间复杂度是O(N^2)

    我们考虑直接f[n]j,如果走到j号点,设向右走了x步,向左走了y步,那么x + y = n , x - y = j。可以解出y = (n-j)/2并且(n - j) % 2 == 0 ,那么向左走的步数就求出来了。从0走到j相当于从n步中选择y步向左走,剩下的步数向右走,方案数为 C(n, (n - j) / 2)。
    预处理阶乘的逆元直接求。

    T2 整数拆分

    Description:

    给定 N,求将 N 划分成不同整数的方案数,对 1e9+7 取模
    例如n = 4, 则有2种合法方案:{1+3}, {4};n=7,有5种合法方案:{1+2+4}, {1+6}, {2+5}, {3+4}, {7}。

    Solution:

    方法1:设f[i][j]表示用1~i去凑j的方案数。转移考虑有i还是没有i,如果方案中有i,答案为f[i-1][j-i];如果没有i,答案为f[i-1][j]

    方法2:设f[i][j]表示将j拆成i个数的和。考虑这i个数中有1还是没1,如果有1,就将所有数减一,方案数为f[i-1][j-i],如果没1,还是将所有数减去1,方案数为
    f[i][j-i]。因为是拆成i个不同的数,所以i的最大值是O(sqrt(n))级别的,复杂度为O(n sqrt n)。

    T3互质的数

    Description:

    给一个整数区间[L,R]和1个整数x,请问区间中有多少个数与x互质,即求:
    (sumlimits_{i=L}^R[gcd(i,x)==1])

    Solution:

    算法1:

    前11个质数的乘积就大于1e10了,所以我们可以考虑容斥。设S_i为与x有公同质因数i的集合,容斥一下就解决了。复杂度为O(T*(sqrt(n) + 2 ^ 11))

    算法2:

    还是考虑容斥,只不过是用莫比乌斯函数。

    [ans = sum_{i = 1}^{n} mu[i] * frac{n}{i} [i | x] ]

    直接分解质因数,暴力计算(mu[i]),复杂度不太对,但是可以过。因为数据比较水,x的约数个数太少.
    复杂度(O(T* sqrt{nx}))

    T4 导弹拦截2(mis)

    Description:

    给长度分别为N,M的序列a[1…N]和b[1…M],求他们的最长公共严格下降子序列长度,并输出方案,若有多解输出序列在b中下标字典序最小的。

    Solution:

    设f[i][j]表示以a[i]结尾的LDIS的最长长度。转移有两种:
    1.a[i] == b[j] f[i][j] = f[k][j-1] + 1(1<=k<i)
    2.a[i] != b[j] f[i][j] = f[i][j-1]
    考虑优化:

  • 相关阅读:
    HDU_1285_拓扑排序(优先队列)
    HDU_1087_Super Jumping! Jumping! Jumping!_dp
    STL_优先队列_(转载)
    数据结构课程笔记_拓扑排序
    滋阴清火中药方 (推荐--自用)
    文件与文档内容搜索工具软件
    CrossUI SPA Builder ---- feathers API框架
    广州交警网上车管所
    BIM 相关资料
    WIN10 ISO 官方
  • 原文地址:https://www.cnblogs.com/wyy0804/p/13904291.html
Copyright © 2020-2023  润新知