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) 的点的个数,直接求强连通分量即可。

  • 相关阅读:
    条形码分类
    ubuntu下配置j2ee开发环境——sunjdk1.6的安装
    折腾的这几天
    Windows Phone 8 开发环境搭建
    Windows Phone SDK 8.0的安装软硬件配置要求
    ubuntu连接无线网遇到的错误和解决思路总结(无具体过程)
    解析html标签并转化成图片
    javaIO的类备忘
    ubuntu下配置j2ee开发环境——sunjdk1.7的配置
    Jmeter之JDBC Request及参数化
  • 原文地址:https://www.cnblogs.com/Kylin-xy/p/CF-1534.html
Copyright © 2011-2022 走看看