Codeforces Round #469 (Div. 2)

Codeforces Round #469 (Div. 2)

A. Left-handers, Right-handers and Ambidexters

题目描述:有\(l\)个人用左手,\(r\)个人用右手,\(a\)个人两只手都可以用,现要组成一支偶数个人的队伍,满足一半的人用左手,一半的人用右手,求队伍人数的最大值。

solution
水题不说。

时间复杂度:\(O(1)\)

B. Intercepted Message

题目描述:给出两个序列\(a_i, b_i\),将\(a_i, b_i\)分别分割成\(k\)份(每一份连续),使得对于每一份,\(a_i\)的和等于\(b_i\)的和,求\(k\)的最大值。

solution
双指针移动,相等时加一。

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

C. Zebras

题目描述:给出一个\(01\)串,每一次从中取出一个\(0101...010\)的子序列,删掉,重复操作,直到\(01\)串为空,问最少需要多少次操作,输出方案,或无解。

solution
首先将连续的一段相同的数字看成是一个数字,并记录数字的个数,这样\(01\)串就变成一个简单的\(0101...010\)的字符串,每次找数字个数最少值\(s\),进而生成\(s\)个操作,然后每个数字的个数减少\(s\),合并。

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

D. A Leapfrog in the Array

题目描述:给定一个数\(n\),将\(1\)$n$的每个数$i$放到第$2i-1$个格子,然后每次找出最后一个有数字的格子,将移动到前面最后一个没有数字的格子,重复操作,知道第$1$\(n\)的格子被填满。给出\(Q\)个询问,问第\(i\)个格子上的数字。

solution
显然,一个数字原来的位置都是奇数,移动后的位置都是偶数,假设询问第\(x\)个格子上的数字。若\(x\)为奇数,则对应数字\(2x-1\),若\(x\)为偶数,考虑\(x\)的数字从哪里来,只有当\(x\)后面全是数字,才会有数字移到\(x\),所以\(x\)的数字来自与在第\(x+(n-x/2)\)格子,重复上述分类操作。

时间复杂度:\(O(Qlogn)\)

E. Data Center Maintenance

题目描述:有\(n\)个数据中心,\(m\)份数据,每份数据会保存在两个数据中心。每个数据中心有一个维护时间\(u_i\),题目保证每份数据保存的两个数据中心的维护时间不同。现要选出若干个数据中心(非空),将这些数据中心的维护时间加一,问选择最少的数据中心使得操作后依然满足题目条件。

solution
构图,\(n\)个点,边\((u, v)\)表示:若\(u\)的维护时间加一,则\(v\)的维护时间也要加一。找环缩点,找出一个点数最少的无出度的点,即为答案。

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

posted @ 2018-03-16 08:21  GerynOhenz  阅读(192)  评论(0编辑  收藏  举报