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. 【明哥报错簿】之【inside the host appBase has been specified, and will be ignored】和【did not find a matching property.】

    tomcat启动时有时候会报一些警告,项目有时候也是可以正常运行.但是警告出现还是要找到原因消灭掉,两个典型的警告解决办法如下: 1.[inside the host appBase has been ...

  2. 认识User-Agent

    Windows NT 10 对应操作系统 windows 10 Windows NT 6.3 对应操作系统 windows 8.1 Windows NT 6.2 对应操作系统 windows 8 Wi ...

  3. JavaScript中“&&”和“||”操作符的意义,深入理解和使用场景

     一.概念 与其他语言不同,在js中,逻辑运算符可以返回任何类型的数据,不仅仅是true和false. &&和||的返回值是两个操作数的其中一个.即a&&b或者a||b ...

  4. 浅谈FFT&NTT

    复数及单位根 复数的定义大概就是:\(i^2=-1\),其中\(i\)就是虚数单位. 那么,在复数意义下,对于方程: \[ x^n=1 \] 就必定有\(n\)个解,这\(n\)个解的分布一定是在复平 ...

  5. mysql group_concat方法用法

    目前有三张表: 课程表: course,里面有student_id 学生表:     student,里面有 name 字段 中间表(课程和学生一对多): course_student, 里面有 co ...

  6. vmvare彻底删除(转)

    bat脚本 echo off cls echo "flag">>%windir%\system32\test.log if not exist %windir%\sys ...

  7. bzoj 2795 [Poi2012]A Horrible Poem hash+数论

    2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 640  Solved: 322[Subm ...

  8. 10.Android UiAutomator Junit 断言函数的使用

    一.断言函数介绍 1.断言函数: 确定被测试的方法是否按照预期的效果正常工作 比如说: if (假设成立){ 通过测试 }else{ 报错并终止当前用例测试 } 2.断言函数用例结构: 一个完整的测试 ...

  9. xcode禁用ARC(Automatic Reference Counting)

    Automatic Reference Counting,自动引用计数,即ARC,可以说是WWDC2011和iOS5所引入的最大的变革和最激动人心的变化.ARC是新的LLVM 3.0编译器的一项特性, ...

  10. 「LibreOJ β Round #4」框架

    https://loj.ac/problem/527 题目描述 有一个n×m的矩形框架,但其中有些边被删除了.qmqmqm想知道剩余部分中还有多少完整的正方形.只有当一个正方形的每一条边均被保留下来, ...