2017湖南多校第三场

  • A(cj)
    水题

  • C(chy)
    给出两个n*n的矩阵A,B.判断A*A == B?
    构造一个n*1的随机矩阵C。
    问题转化为A*A*C == B*C.
    即A*(A*C) == B*C。这样复杂度就降低到了n^2。

  • E(cj)
    2-sat。
    对于字符串中的每个字符,可以分成4个点,xi, x i,yi, y i
    xi, x i,分别表示第i个字符不改变和改变。
    yi, y i,分别表示第i个字符减一和加一。
    首先让相邻两个字符不能同时改变, x i x i+1
    对于每次询问,对称的编号的两个字符应该相同;
    如果两个字符相同,则xi等于xj,yi等于yj
    如果两个字符的距离为1,则( x i yj) ( x j y i),注意,这里对y还是 y 应该分类讨论;
    如果两个字符的距离为2,则( y i yj) ( y j yi),xi,xj

  • G(ly)
    将边按权值从小到大排序,依次插入一条边,判断是否产生回路;
    如果产生回路,则删除回路中最短的一条边。
    插入之后,判断已插入边数是否等于n-1,如果等于,计算出结果,保存,然后删除树上最小的一条边。
    插入完所有边后,找到最小的结果,输出。
    复杂度O(VE);
    也可以用LCT做到O(Elog(V));学会再来补

  • H(ly)
    DP:
    cost(i, i, k) = 0 if the component at position i is of type k.
    cost(i, i, k) = ∞ if the component at position i is not of type k.
    cost(i, j, k) = MIN{cost(i, m, a) + cost(m + 1, j, b) + Ca,b
    | m ∈ [i, j), a, b ∈ types of pieces, Ra,b = k}
    注意输出要求!!!

  • I(cj)
    模拟。从起点向终点走,如果遇到锁则中断,去拿需要的钥匙,拿到钥匙后回到中断产生的点,打开锁。如果在拿钥匙的过程中又遇到另一把锁,则继续中断。最后如果遇到一把锁,而这把锁的钥匙是之前中断过程中要拿的钥匙,则不可能打开这把锁,所以不可能到达终点。

  • J(chy)
    法一:
    因为三个面的概率和为1,所以可以用二维向量表示,即判断前三个向量能否合成第四个向量。
    以其中某个向量为原点,转化成三角形。
    问题变为判断点4是否在前三个点构成的三角形内或线段上。
    法二:
    可以从解方程组的角度来考虑。
    根据全概率公式列出方程组。
    判断解集是否满足概率性质即可。

你可能感兴趣的:(ACM解题报告)