Educational Codeforces Round 71 (Rated for Div. 2) 题解

(5-1)/7 Penalty: 224 Rank: 1243/1082

小号被 hack 人生大落大起大落还能上蓝我是真的佛了。

A. There Are Two Types Of Burgers

题目描述

做一个汉堡需要两片面包和一片牛肉,做一个鸡肉汉堡需要两片面包和一块鸡肉。现在有 片面包, 片牛肉和 片鸡肉。做一个汉堡挣 元,做一个鸡肉汉堡挣 元。求最大总利润。

数据范围:

题解

数据范围很小,直接暴力都行……

时间复杂度 ,空间复杂度

如果 范围大的话,根据每个汉堡的价格贪心即可。

但是一分钟手速掉这道题发现网太慢了交不上去……

代码在这里

B. Square Filling

(反正这里是熊猫头,下面是脏话)

题目描述

一个 的矩阵,初始全是 ,每次可以选择一个 的范围将它们全部填充为 ,求是否能填充成给定的 矩阵,若能则输出填充最少步数的方案,否则输出

题解

直接枚举每个 区域填充即可,最后判断一下是不是和给定矩阵一样。

注意只能填充 范围内全部是 的范围。

然后手贱把 打成 了之后被 hack 了。

(反正这里是熊猫头,下面是脏话)

时间复杂度 ,空间复杂度

代码在这里

C. Gas Pipeline

题目描述

给了一条街道和一个 串,如果串的某一位为 则表示这一段是路口,管道高度必须为 ,否则高度为 均可。一个单位长度管道价格为 ,一单位支管道的柱子价格为 ,求建管道的最小花费。

数据范围:

题解

队友贪心过去了,实际上和 DP 打的是一样的……

表示第 段路高度为 的花费。

对于高度没有要求的路段,转移如下:

对于高度有要求的路段,转移如下:

初值为:

答案就是 了。

时间复杂度 ,空间复杂度

代码在这里

D. Number Of Permutations

题目描述

个二元组 ,一个坏排列定义为这 单调不减或 单调不减,求好排列数量对 取模。

数据范围:

题解

好排列数量等于 减去坏排列数量。统计一下坏排列数量个数就行了。

坏排列数量直接容斥一下,就是 单调不减的排列数量加 单调不减的排列数量减去 均单调不减的排列数量。

单调不减的排列数量只需要统计 中元素相同的个数,然后乘一下全排列就行了,同理,但是注意 统计后需要再检查一下这个序列是不是真的单调不减(排完序之后会出现第二维减的情况),如果不是则这部分贡献为

然后输出答案就行了……

时间复杂度 ,空间复杂度

代码在这里

E. XOR Guessing

题目大意

可以询问 个数,要求猜一个给定的数。Grader 会返回询问的数中的某一个与要求猜的数的异或值。

数据范围:

题解

分二进制前 位为 和后 位为 ,分别查询 个数即可。

数据范围很良心,最大查询是 正好在 范围内……

代码在这里

F. Remainder Problem

题目描述

给定一个长度为 的序列,有 个操作,分为两类:

  • 给位置 的元素加
  • 查询位置编号对 取模为 的所有元素值之和。

数据范围:

题解

下面记

CF 又双叒叕出原题辣,在这里

2014 年集训队论文里也写辣,详见《根号算法——不只是分块》。

我们想对直接统计不是那么优秀的合并统计,直接统计很快的暴力过去,于是我们统计所有 的答案,这样就合并了这些统计出来很慢的东西,然后对于大于 的部分,直接暴力,复杂度是 的。

对于修改,暴力过去就完事了……

时间复杂度 ,空间复杂度

Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 感觉上是一道题……

代码在这里

G. Indie Album

题目描述

给一棵 Trie 树,询问一个字符串在某条链上的出现次数。

数据范围:

题解

又被熊大爷教育了……

中的出现次数转化为有多少个 的前缀以 作为后缀, 的前缀以 作为后缀当且仅当代表前者的点在代表 的点的子树中。」

这里子树指 Fail 树。

然后就是基本操作了……对询问离线,插到 AC 自动机里,跑一遍 dfs 序,再 dfs 一下 Fail 树处理询问即可……

时间复杂度 ,空间复杂度

代码在这里