Helvetic Coding Contest 2019

A2

题意:给一个长度为 n 的01序列 y。认为 k 合法当且仅当存在一个长度为 n 的01序列 x,使得 x 异或 x 循环右移 k 位的 01 串得到 y 。问合法的 k 的个数。 \(n \le 2*10^5\)

key:找规律

考虑如何check一个 k 是否合法。那么对于所有的 i 和 i-k 在模 n 的意义下,如果 y 的第 i 位为 0 则二者必须不同,否则必须相同。这样可以用并查集判断是否合法。实际上是把相同的缩起来后看看是否存在奇环。

仔细观察可以发现实际上只有 i+k*m 这个集合中的点有边,并且形成了一个环,而环的大小就是集合中 1 的个数。

实际上,对于一个 k ,只需要把 1~n 按照模 gcd(k,n) 分成等价类,判断每个等价类中 1 的个数即可。所以只需要对 n 的每个约数做预处理。复杂度 \(O(n\sqrt n)\)

B2

题意:给一个带权二分图,边权均为 k 。可以加若干个右部点连向所有左部点,边权为 h。求二分图最小权匹配。 \(n \le 1000\)

key:二分图

实际上只有两种情况:全部匹配,花费为 n*h。或者不加新点,花费为匹配数*k。证明比较显然。写这个题主要是当时傻逼了……

E1

题意:给一个带权无向图。定义 \(E_{\max}(c_i)\) 是把第 i 条边的边权最大修改成多大,使得它可能出现在最小生成树中。求 \(E_{\max}(c_1)\)。 \(n \le 10^5\)

key:最小生成树

有一个易证的结论:若某边可以出现在最小生成树中,那么把严格小于该边边权的所有边加入图中,该边的两个端点仍然处于两个联通块中。

E2

题意:对于所有非树边,求上题中的 \(E_{\max}(c_i)\)。保证最小生成树唯一。 \(n \le 10^5\)

key:最小生成树

因为最小生成树唯一,所以还是有一个易证的结论:一条非树边的答案为对应最小生成树的链上最大值。

E3

题意:对于所有边,求上题中的 \(E_{\max}(c_i)\)。 \(n \le 10^5\)

key:最小生成树

首先先看非树边,考虑E2的做法以及它为什么在不唯一时仍然成立:对于做出来的一棵最小生成树,非树边的答案显然是大于等于链上最大值的。如果存在一个最小生成树的形态使得在这条链上的最大值更大,那么显然可以把这条边换掉来得到一个更小权的生成树,矛盾。实际上这表明对于最小生成树的任意形态,两点之间的最大值是不变的(NOIP2013 货车运输)

对于树边其实比较简单:如果在生成树上把这条边去掉,会分成两个联通块,考虑所有连接这两个联通块的边,除去它本身最大的那条边即为答案。换句话说,所有覆盖它的非树边中最小的即为答案。这可以用并查集简单的维护。

Helvetic Coding Contest 2019 差A3 C3 D2 X1 X2的更多相关文章

  1. Helvetic Coding Contest 2019 online mirror (teams allowed, unrated)

    http://codeforces.com/contest/1184 A1 找一对整数,使x^x+2xy+x+1=r 变换成一个分式,保证整除 #include<iostream> #in ...

  2. Helvetic Coding Contest 2019

    题目链接:戳我 小注:其中部分(大括号不换行的)代码是BLUESKY007神仙写的. 咕 CF1184 A1 直接枚举,以根号的时间复杂度判断即可.注意x,y都是正整数. #include<io ...

  3. CF 690C3. Brain Network (hard) from Helvetic Coding Contest 2016 online mirror (teams, unrated)

    题目描述 Brain Network (hard) 这个问题就是给出一个不断加边的树,保证每一次加边之后都只有一个连通块(每一次连的点都是之前出现过的),问每一次加边之后树的直径. 算法 每一次增加一 ...

  4. [Helvetic Coding Contest 2017 online mirror]

    来自FallDream的博客,未经允许,请勿转载,谢谢, 第一次在cf上打acm...和同校大佬组队打 总共15题,比较鬼畜,最后勉强过了10题. AB一样的题目,不同数据范围,一起讲吧 你有一个背包 ...

  5. 【Codeforces】Helvetic Coding Contest 2017 online mirror比赛记

    第一次打ACM赛制的团队赛,感觉还行: 好吧主要是切水题: 开场先挑着做五道EASY,他们分给我D题,woc什么玩意,还泊松分布,我连题都读不懂好吗! 果断弃掉了,换了M和J,然后切掉了,看N题: l ...

  6. Helvetic Coding Contest 2016 online mirror A1

    Description Tonight is brain dinner night and all zombies will gather together to scarf down some de ...

  7. Helvetic Coding Contest 2016 online mirror F1

    Description Heidi has finally found the mythical Tree of Life – a legendary combinatorial structure ...

  8. Helvetic Coding Contest 2016 online mirror B1

    Description The zombies are gathering in their secret lair! Heidi will strike hard to destroy them o ...

  9. Helvetic Coding Contest 2016 online mirror C2

    Description Further research on zombie thought processes yielded interesting results. As we know fro ...

随机推荐

  1. Tensorflow学习教程------简单练一波,线性模型

    #coding:utf-8 import tensorflow as tf import numpy as np #使用numpy 生成100个随机点 x_data = np.random.rand( ...

  2. 基于百度语音识别API的Python语音识别小程序

    一.功能概述 实现语音为文字,可以扩展到多种场景进行工作,这里只实现其基本的语言接收及转换功能. 在语言录入时,根据语言内容的多少与停顿时间,自动截取音频进行转换. 工作示例: 二.软件环境 操作系统 ...

  3. vue element-ui Table数据解除自动响应方法

    在对列表Table进行数据编辑时,会存在table的增删改操作后,列表view也自动响应发生了变化,原因是赋值的数据是一个引用类型共享一个内存区域的.所以我们就不能直接连等复制,需要重新克隆一份新的数 ...

  4. Java8集合框架——ArrayList源码分析

    java.util.ArrayList 以下为主要介绍要点,从 Java 8 出发: 一.ArrayList的特点概述 二.ArrayList的内部实现:从内部属性和构造函数说起 三.ArrayLis ...

  5. Centos下nginx安装

    安装很简单,这里记录只是为了记下下载地址: A.[root@localhost soft]# wget http://nginx.org/download/nginx-1.4.2.tar.gz B.[ ...

  6. Ubuntu hive 安装过程中遇到的一些问题

    环境:Ubuntu14.04 Hadoop3.2.0 MySQL5.7 hive2.3.6 安装步骤:安装hive.MySQL并进行配置 安装过程参照:Ubuntu安装hive,并配置mysql作为元 ...

  7. VUE获取焦点

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. C++queue的使用

    C++队列是一种容器适配器,提供了一种先进先出的数据结构. 队列(queue)模板类定义在<queue>头文件中 基本操作: 定义一个queue变量:queue<Type> q ...

  9. linux-线程同步之信号量

    1.任务:用户从终端输入任意字符然后统计字符个数显示,输入end则结束 2.使用多线程实现:主线程获取用户输入并判断是否退出,子线程计数 #include <stdio.h> #inclu ...

  10. centos挂载磁盘

    Aliyun实例为例 简单操作: 查看磁盘情况:fdisk -l 对数据盘进行分区,一般类似/dev/vdb这种为数据盘 输入fdisk  /dev/vdb 对数据盘进行分区.根据提示,输入 n, p ...