zoukankan      html  css  js  c++  java
  • 题解 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) 的点的个数,直接求强连通分量即可。

  • 相关阅读:
    Java如何编写自动售票机程序
    install windows service
    redis SERVER INSTALL WINDOWS SERVICE
    上传文件
    This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
    解决Uploadify上传控件加载导致的GET 404 Not Found问题
    OracleServiceORCL服务不见了怎么办
    Access to the temp directory is denied. Identity 'NT AUTHORITYNETWORK SERVICE' under which XmlSerializer is running does not have sufficient permiss
    MSSQL Server 2008 数据库安装失败
    数据库数据导出成XML文件
  • 原文地址:https://www.cnblogs.com/Kylin-xy/p/CF-1534.html
Copyright © 2011-2022 走看看