Petrozavodsk Summer Training Camp 2017

Problem A. Connectivity

题目描述:有\(n\)个点,现不断地加边。每条边有一种颜色,如果一个点对\((a, b)\),满足\(a=b\)或对于每一种颜色的子图(图中只有该种颜色的边),\(a, b\)总是连通,则该点对称为好连通。求出每加一条边,好连通的点对数。

solution
每个子图用并查集维护连通块,并且用\(vector\)记录每个连通块的点,便于之后进行答案的统计,合并时启发式合并即可。
每种颜色生成一个\(hash\)值,每个点记录一个\(hash\)值,表示在每个子图中是属于哪个并查集,若两个点的\(hash\)值相同,则认为它们是好连通。

时间复杂度:\(O(mlogn)\)(常数比较大)

Problem B. Hotter-colder

Problem C. Painting

题目描述:有连续\(n\)个,每个点开始时都没有颜色,现在每次选择一个连续的区间,然后将这个区间涂成一种颜色,使得最终变成目标的样子。颜色有\(m\)种,每种颜色至少出现一次,涂色也只能涂\(m\)次,每次涂色的花费为区间长度。问总花费的最大值。

solution
可以先预处理出每种颜色的最小涂色区间,由于数据的特殊性,这些区间是不相交的,只可能是相离或包含。这样就可以按嵌套关系将区间分成很多层,必须先涂外层,再涂内层。对于同一层的区间,再分成很多段,每一段是连续的相邻的区间,每一段用\(dp\)来确定如何涂色,答案就是全部加起来的值。

时间复杂度:\(O(n^2)\)

Problem D. Ones

题目描述:定义一种1-expressions \(E ::= 1 | E+E | E*E | (E+E) | (E*E)\),给出一个数\(k\),用一个不多于\(100\)个\(1\)的表达式,使得答案为\(k\)。

solution
偶数时除于二,奇数时减一。

时间复杂度:\(O(logk)\)(每次询问)

Problem E. Seats

Problem F. Ants

Problem G. Permutation

题目描述:给出一个\(n\)排列\(p_i\),将其分成两个子序列,使得一个子序列递增,另一个递减。或无解。

solution
贪心。假设枚举到第\(i\)个数,如果\(p_i\)小于递增序列最后一个数,则扔进递减序列,若大于递减序列最后一个数,则扔进递增序列,若两个条件都满足,则无解。如果是介于两者之间,则考虑\(p_{i+1}\),若\(p_{i+1}>p_i\),则扔进递增序列,否则扔进递减序列。

时间复杂度:\(O(n)\)(每次询问)

Problem H. Primes

题目描述:定义\(\pi (x, y)\)表示能同时整除\(x, y\)的质数个数。给出\((a, b)\),求出\(\sum_{a \leq x < y \leq b} \pi(x, y)\)

solution
答案为\(\sum_{d} \left \lfloor \frac{b}{d} \right \rfloor - \left \lfloor \frac{a-1}{d} \right \rfloor\),\(d\)为质数。然后其实对于不同的\(d\),里面的值也可能一样,可以将值一样的\(d\)一起算,也就是跳着跳着算。

时间复杂度:\(O(log^2n)\) (每次询问)

Problem I. Vertex covers

Problem J. Scheduling

题目描述:有\(m\)个线程,有\(n\)个需要执行的程序,每个程序需要在时刻\(p_i\)到\(k_i\)内执行,执行时间为\(c_i\),每条程序可以随意暂停,跳转线程,但同一线程同一时刻只能执行一条程序。问是否能执行所有程序。

solution
将时刻拆分成若干个区间,每个区间连向汇点,流量为区间长度,每个程序连向源点,流量为程序的执行时间,然后每个程序连向所在的区间。跑一遍网络流就可以了。

时间复杂度:\(O(n^2m)\)

Problem K. Shufe

题目描述:有\(2^n\)张牌,有一种洗牌的方法:1、如果只有两张牌,则交换它们。2、将牌分成上下两堆,交换两堆牌,然后每堆牌递归操作。问洗\(t\)次牌后的顺序。

solution
显然,洗一次牌后所有牌会调转,再洗一次就会变回原样。

时间复杂度:\(O(2^n)\)

Petrozavodsk Summer Training Camp 2017的更多相关文章

  1. Petrozavodsk Summer Training Camp 2017 Day 9

    Petrozavodsk Summer Training Camp 2017 Day 9 Problem A. Building 题目描述:给出一棵树,在树上取出一条简单路径,使得该路径的最长上升子序 ...

  2. 【模拟退火】Petrozavodsk Winter Training Camp 2017 Day 1: Jagiellonian U Contest, Monday, January 30, 2017 Problem F. Factory

    让你在平面上取一个点,使得其到给定的所有点的距离和最小. 就是“费马点”. 模拟退火……日后学习一下,这是从网上扒的,先存下. #include<iostream> #include< ...

  3. 【动态规划】【二分】Petrozavodsk Winter Training Camp 2017 Day 1: Jagiellonian U Contest, Monday, January 30, 2017 Problem B. Dissertation

    题意: 给定S1串,长度100w,S2串,长度1k.问它俩的LCS. f(i,j)表示S2串前i个字符,LCS为j时,最少需要的S1串的前缀长度.转移的时候,枚举下一个字符在S1的位置即可.(可以预处 ...

  4. 【二分】Petrozavodsk Winter Training Camp 2017 Day 1: Jagiellonian U Contest, Monday, January 30, 2017 Problem A. The Catcher in the Rye

    一个区域,垂直分成三块,每块有一个速度限制,问你从左下角跑到右上角的最短时间. 将区域看作三块折射率不同的介质,可以证明,按照光路跑时间最短. 于是可以二分第一个入射角,此时可以推出射到最右侧边界上的 ...

  5. 2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】

    2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据 ...

  6. 2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest (5/9)

    2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest B. Forcefield 题意 给你一维平面上n个镜子 ...

  7. Petrozavodsk Winter Training Camp 2018

    Petrozavodsk Winter Training Camp 2018 Problem A. Mines 题目描述:有\(n\)个炸弹放在\(x\)轴上,第\(i\)个位置为\(p_i\),爆炸 ...

  8. 2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest)

    2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest) Problem A. M ...

  9. 【推导】【数学期望】【冒泡排序】Petrozavodsk Winter Training Camp 2018 Day 5: Grand Prix of Korea, Sunday, February 4, 2018 Problem C. Earthquake

    题意:两地之间有n条不相交路径,第i条路径由a[i]座桥组成,每座桥有一个损坏概率,让你确定一个对所有桥的检测顺序,使得检测所需的总期望次数最小. 首先,显然检测的时候,是一条路径一条路径地检测,跳跃 ...

随机推荐

  1. BZOJ 1565 植物大战僵尸(拓扑排序+最大权闭合子图)

    图中的保护关系就类似于最大权闭合子图.即你想杀x,你就一定要杀掉保护x的点,那么把x向保护它的点连边.那么题目就转化成了最大权闭合子图的问题. 但是这个图有点特殊啊... 考虑有环的情况,显然这个环以 ...

  2. NOI2013 矩阵游戏 【数论】

    题目描述 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储).她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i ...

  3. 20135239益西拉姆 Linux内核分析 汇编一个简单的c程序并分析其指令过程

    益西拉姆+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第一周linux内核分析 学习笔记 一.计算机 ...

  4. [JSOI2007]建筑抢修——贪心反悔堆

    题目描述 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建 ...

  5. 【agc006C】Rabbit Exercise

    Portal --> agc006C Solution 啊感觉是好有意思的一道题qwq官方题解里面的说辞也是够皮的哈哈哈..(大概就是说如果你没有意识到那个trick的话这题这辈子都做不出来qw ...

  6. 使用Hystrix进行微服务降级管理

    前言:目前我们的项目是微服务架构,基于dubbo框架,服务之间的调用是通过rpc调用的.刚开始没有任何问题,项目运行健康.良好.可是过了一段时间,线上总有人反应查询订单失败,等过了一段时间才能查到.这 ...

  7. Codeforces 932.F Escape Through Leaf

    F. Escape Through Leaf time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  8. jdk1.5后枚举类的定义规则

    转: http://blog.csdn.net/willcold/article/details/12844487  JDK1.5 新增的enum关键字用于定义枚举类             枚举类也 ...

  9. update condition 字段报错

    mysql> update tf_user_present set condition="0" where id=1;ERROR 1064 (42000): You have ...

  10. proxy vue3.0

    <html> <head> <meta charset="UTF-8" /> <meta name="viewport" ...