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

    Day1

    T1

    (不知道为什么左端点排序,并且std都T了)

    看到题就想会不会什么数据结构,确实用了数据结构,不过主体还是dp

    一点技巧是,可以把区间左右端点离散化(就是把多余的部分直接卡掉,包含的就是关键点,可能说的比较抽象)

    暴力dp转移方程:

    dp[i][j] 表示前i个区间里选,前j个关键点被包含的方案数

    dp[i][j] = dp[i-1][j](不选当前区间直接继承)

    dp[i][r[i]] += dp[i-1][k] ((l[i]-1leq k leq r[i])) (选当前区间,之前的情况需要与他有交或者直接相切)

    dp[i][k] += dp[i-1][k]((r[i]+1leq k leq m))(选当前区间之前的情况需要把区间没覆盖的覆盖掉)

    只与i-1有关,线段树维护就好了

    T3

    显然, 对于权值最小的点, 选了它的父亲后一定马上就会选它。

    这样我们可以把这两个点合并, 那么每个点现在都是一个二元组 (s[i],t[i]), s[i]表示权值之和, t[i]表示点的个数.

    那么两个二元组 i,j 之间也是可以比较的. i 比 j 优的条件就是

    (t[i] imes s[j] > t[j] imes s[i])

    (s[i]/t[i] < s[j]/t[j])

    于是点合并之后也可以用s[i],t[i]作为关键字比较大小. 并查集 + 可删堆即可,但是我写错了,暂时还没有找出来哪里错了

    Day2

    T2

    原来的环不可改变,可改变的只有链。

    链可以分成奇链和偶链,偶链跟任何别的链相连他的奇偶性不变,也就是无影响

    可以写出转移方程f[x][y] = f[x][y-1]*(x+y) f[x][y]表示有x个奇链,y个偶链的合法方案数

    如果我往图里加一条偶链,他可以和x个奇链拼在一起,奇偶链个数不变,方案数为f[x][y-1]( imes)x,也可以本身拼成一个环,方案数为f[x][y-1],也可以和偶链拼,方案数为f[x][y-1]( imes)(y-1)

    那么最后f[x][y] = f[x][0]( imes)(x+1)( imes)(x+2)( imes)……( imes)(x+y)

    现在问题转化为如何求f[x][0]

    此时奇链个数必须是偶数,才会有答案

    那么我们每次可以往里加2个奇链

    f[x][0] = f[x-2][0]( imes)(x-1)( imes)(x-1)

    两个个奇链都可以和另一个奇链和原来的奇链连

    T3

    (n^3)dp,但是时间复杂度好像是假的,实际最大不超过(frac{n+m}{k}),我记得是这样的

    dp[i][j]表示当前长度为i,在A中匹配到第j为,在B中能匹配到的最远位置

    和NOIonline有点相似,贪心的想匹配到的越远后面合法的可能越小

    那么我们可以预处理出A和B中位置i的下一个k在哪个位置

    然后dp[i+1][nxta[j][w]] = max(dp[i][nxta[j][w]],nxtb[dp[i][j]][w])

    Day3

    T1

    最后的答案可以写成这种形式:(sumlimits_{i = 1}^n frac{w_i}{2^i})

    贪心:w从大往下取

    小tips:不取模,还会除以一个数,当这个数很大的时候就可以忽略,所以我们大概找前30大的数就可以

    考虑每个数对答案的贡献,他只会对他左边T大数和右边T大数包含的区间有贡献

    (ans = w_i imes sumlimits_{i = 1}^n sumlimits_{x = 1}^Tsumlimits_{y = 1}^T (l_{x-1}-l_x) imes (r_y-r_{y-1}) imes frac{1}{2^{x+y-1}})

    (ans = 2w_i imes sumlimits_{x = 1}^T (l_{x-1}-l_x) imes frac{1}{2^x} imes sumlimits_{y = 1}^T (r_y-r_{y-1}) imes frac{1}{2^y})

    T2

    水了(k = 3)的30,如果不存在大小为3的环,说明原图是个DAG,DAG的数量为n!

    好像剩下的还要多项式求逆,可是我不会多项式求逆呀

    T3

    可以把问题转化为左右括号匹配问题,dp[i][l][r]表示位置i的左边有l个左括号,右边有r个右括号的方案数

    那么这些方案对应的贡献就是,ans[i][l][r] += f[i][l][r]( imes (r-l)^k)

    然后我们就可以(n^3)dp就可以了

    Day4

    刚刚闪退了,导致写的东西全没了!!!!!!

    T1

    前两个点是高斯消元,按照白点的集合分层高斯消元,但是真正考出来才发现自己高斯消元还没有掌握

    个人认为白点比黑点好写,但是同学都认为黑点比白点好写,所以我就只写了白点,拿到了35分(不过我也是几个人最高了,毕竟他们强的都不想写T1)

    白点的贡献就是他被经过的概率,和之前某天模拟的T3一样

    设f[i]表示从fa[i]到i的概率,g[i]表示从i到fa[i]的概率,之后照常推推式子就出来了

    黑点好像是树形dp的一种常规处理,但是我并不会,知识比较欠缺

    T2

    推了个O(n)的式子,预处理阶乘算组合数,正解看ppt就让人望而生畏啊,不过看到分组就感觉和斯特林数有点关系,但我还是不会

    T3

    先想了个暴力(n^3)dp,然后发现,如果一部分已经不合法,那么前面更不可能,所以可以(n^2)往外扩展

    这次的部分分拿的比较好吧

  • 相关阅读:
    工科物理实验()中国大学MOOC答案(已更新)
    类似jar文件使用java无法打开问题
    python9、10章
    nmap的理解与利用(初级)
    常见端口
    配置优化
    删除表操作
    万能的map
    测试
    Mapper.xml
  • 原文地址:https://www.cnblogs.com/little-uu/p/14885715.html
Copyright © 2011-2022 走看看