• 题解 Codeforces LATOKEN Round 1 (Div. 1 + Div. 2) (CF1534)


    目前只有 A ~ F1 的题解,请谨慎食用。

    A Colour the Flag

    对网格黑白染色,判断和给定条件是否冲突,冲突就反色再判一下。

    B Histogram Ugliness

    发现格子给轮廓的贡献是 (0,1,2) 条边,那么把贡献是 (2) 的格子都删掉即可。

    C Little Alawn's Puzzle

    发现答案就是 (2^{环个数}) 直接找环即可。

    D Lost Tree

    钦定 (1) 为根,查询,于是得到每个点的深度 (dep_i)

    发现如果询问一个点,找和它距离为 (1) 的,比较 (dep) 的大小就可以找到这个点的父亲和儿子。

    那么我们可以每隔一层问一下,于是把点分为深度奇数和偶数的。显然深度为奇数的点集与深度为偶数的点集不可能同时超过 (frac{n}{2}) ,于是选小的集合问就可以了。

    E Lost Array

    upd:这个恶心的做法假了,大家别看!

    首先发现每个数出现次数必须是奇数,那么 (n) 为奇数 (K) 为偶数就一定不合法,直接输出 (-1) 即可。

    如果 (n)(K) 的倍数,那么把每 (K) 个数分成一段,直接做即可。

    考虑前面每 (K) 个数分成一段,拿出来问。记剩下的为剩余部分 (w,w=n mod K)

    • (w) 为偶数:

    发现可以这样问:在前面某一组拿出 (K-frac{w}{2}) 个,先把这些和前 (frac{w}{2}) 个放一起问,再和后 (frac{w}{2}) 个放一起问。

    • (w) 为奇数:

    如果 (w=1) ,需要特殊考虑,我们要把前面拿出一整段,这样就有 (K+1) 个数了。然后我们输出一个 (K*K) 的矩阵,第 (i) 行是 (1,2,3,cdots,K+1) 去掉 (i) 。再把前面没被使用的分段做。

    如果 (w>1) ,还是分成两个部分 (x,y)(x=frac{w+1}{2},y=frac{w-1}{2}) 。由于 (w) 为奇数,那么 (K) 必为奇数,所以 (K-w) 一定是偶数。那么先把前面某段的 (K-x) 个数拿出来和 (x) 一起问,再把后面的 (w) 个数和前面问过两次的 (frac{K-w}{2}) 个数和前面只问过一次的 (frac{K-w}{2}) 个数拿出来问,最后再把所有问过两次的数问一遍。容易发现是对的,因为所有问过两次的数一共有 (x+frac{K-w}{2}+(K-x-frac{K-w}{2})=K) 个。

    注意细节。

    F1 Falling Sand (Easy Version)

    考虑把一段连通的并起来,于是我们需要求的是缩点后入度为 (0) 的点的个数,直接求强连通分量即可。

  • 相关阅读:
    【数论】好推不好记的扩展欧几里德
    【GDOI2016模拟3.11】历史
    【NOIP2013模拟】守卫者的挑战(期望概率)
    【NOIP2015模拟10.27】魔道研究
    【NOIP2015模拟10.27】挑竹签
    【NOIP2015模拟10.22】最小代价
    【NOIP2015模拟10.22】最大子矩阵
    【NOIP2015模拟10.22】矩形
    【NOI2013模拟】棋盘游戏
    机器人M号
  • 原文地址:https://www.cnblogs.com/Kylin-xy/p/CF-1534.html
Copyright © 2020-2023  润新知