zoukankan      html  css  js  c++  java
  • 模拟2

    Day1

    T1

    考虑怎么计算一个长为 len 的序列 a 的 Gobo sort 的期望次数。令 (b_i) 表示 a 中 i 出现的次数

    那么期望次数为(E = len!prodlimits_{i} b_i)

    考虑30分,可以直接暴力递归求解,每次取最小值就好了

    freopen写错了,可能还有一些奇奇怪怪的地方写错了吧,改的时候又想到了一些问题不过样例没卡

    T2

    有一些人没有人可以感染他,我们称作是关键点,不难想象当最后一个关键节点被感染,游戏结束

    在 n 个数字的所有排列中,有 m 个关键的数字,计算所有关键点最后一个出现的位置的期望

    此时([pos+1,len])没有关键点,而最后一个关键点的选取又有m种,所以最后的答案为:

    (Cegin{pmatrix}len-pos\len-mend{pmatrix} imes (len-pos)! imes (pos-1)! imes m)

    T3

    这样可以区间 DP,设 (dp_{1,n}) 表示 [1,n] 自给自足的答案是多少。那么 n 一定要放,照不到的做成区间 ([l_i ,r_i ]) 以后,每个区间的答案是 (min(dp_{l_i ,r_i} ,dp_{l_i ,r_i +1} ))。分别表示选取 i − 1和 i 的情况。

    这样复杂度 (O(n^3 ))。不难发现如果区间 DP 的时候固定右端点,左端点从右往左扫过去,复杂度可以优化到(O(n^2 ))

    Day2

    T1

    pufer数列(应该是叫这个名字):对应唯一的一棵无根树,数列中每个数出现的次数=度数-1

    得出dp[i][j][k] 前i个点,选了j个点,pufer数列中填了k个数的方案数

    dp[i+1][j][k] += dp[i][j][k];(不选当前点)

    dp[i+1][j+1][k+w] += dp[i][j][k]*C(k+w,w);(选当前点,且当前点出现了w次)

    题面不给模数啊,太坑了

    T2

    算博弈吧,但是给的树形dp,标算给的也比较奇怪,我写了一个假的博弈好像,得了20分

    T3

    dp+记忆化,不知道算不算数位dp,打算写写看,如果写出来了就补题解

    Day3

    T1

    扩展汉诺塔,n个盘子,m个柱子的情况

    先来回想三个柱子的情况:f[i]表示i个盘子的最小步数 f[i] = 2*f[i-1]+1

    可以看成是把i-1个盘子移到2上,把最大的盘子移到目标柱子,然后再把i-1个盘子移到目标柱子

    再来扩展到m个柱子:f[i][j]表示i个盘子,j个柱子的最小步数 f[i][j] = min(f[i-k][j]*2+f[k][j-1])

    可以看成是把i-k个盘子在移到j个盘子中的一个,这时剩下j-1个盘子,然后把剩下的k个盘子移到目标柱子,最后把i-k个盘子移到目标柱子

    T2

    构造,贪心

    T3

    期望带回头,两个数组:f[x]表示从x走到fa[x]的期望边数,g[x]表示从fa[x]走到x的期望边数

    通过各种枚举边的情况,可以得出一个两个式子

    f[x] = (sumlimits_v) f[v] + deg g[to] = f[x]+g[x]-f[to]

    然后可以树上路径和就好啦

    Day4

    又是一天的Day4

    T1

    仔细思考一下不难发现答案很小,并且举不出 > 2的例子,很简陋不严谨

    首先如果 s 不是回文串答案为 1。

    考虑对于 1<=i<n,是否都满足 s[1..i]和 s[i+1..n]至少有一个是回文的。如果不满足那么答案为 2。

    如果满足的话,如果 s[1]=s[2],那么 s 只会形如 aaaaa或 aaabaaa;如果 s[1]!=s[2],那么 s 只会形如 abababa。这三种情况都是无解的。

    T2

    把每个状态都算一遍然后取所有情况中最大的,正解最小割,连边属实想不到

    T3

    博弈问题,单个问题应该都是很好解决的吧,只是要把每个问题都计一遍数……

    不妨假设 a<b。

    每堆石子先对 a+b 取模,然后可以分为 4 种:

    (1) xi<a,没用。

    (2) a<=xi<b,只要存在则 a 必胜。

    (3) b<=xi<2a,只和奇偶性有关。

    (4) 2a<=xi,存在至少 2 个则 a 必胜,存在 1 个且(3)为偶数则先手必胜,存在 1 个且(3)为奇数则 a 必胜,不存在且(3)为奇数则先手必胜,不存在且(3)为偶数则后手必胜。

    Day5

    T1

    刚开始看还以为是某个数据结构维护的题,但是后来才发现是搜索!

    启发式迭代加深搜索+估价函数剪枝

    T2

    T2看到有向图可能有环就想到了Tarjan缩点

    1、由于最长链上的点两两不能同时轰炸,因此最优解>=最长链长度。

    2、令 fi 表示从 i 出发的最长链长度,那么在第 fi 轮轰炸 i,可以得到一个恰好为最长链长度的方案,因此最优解<=最长链长度。

    容易发现将一个大小为 x 的强连通分量替换成一个长度为 x 的链,所有点两两之间的连通关系不变。

    T3

    AC自动机+dp,看到n <= 6,可以状压,反对称就可以先考虑一半,不过好像有一点细节,我不太会写,尝试再看一看吧

  • 相关阅读:
    Codeforces Round #609 (Div. 2)---C. Long Beautiful Integer
    Codeforces Round #609 (Div. 2)--B.Modulo Equality
    J
    G
    Convoy
    Farming Mars
    Java indexOf() 方法
    request.getContextPath()得到的是什么路径?
    OLAP、OLTP的介绍和比较
    Book recommendation
  • 原文地址:https://www.cnblogs.com/little-uu/p/14831281.html
Copyright © 2011-2022 走看看