Manthan, Codefest 19
目录
Contest Info
| Solved | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 6/8 | O | O | Ø | O | O | Ø | - | - |
- O 在比赛中通过
- Ø 赛后通过
- ! 尝试了但是失败了
- - 没有尝试
Solutions
A. XORinacci
题意:
\(f(0) = 1, f(1) = b, f(n) = f(n - 1) \oplus f(n - 2)\),求\(f(n)\)。
思路:
循环节为\(3\)。
B. Uniqueness
题意:
给出一个序列\(a_i\),可以删去连续的一段,使得剩下的数是互不相同的。
求删除的那一段的最小长度。
思路:
枚举左端点,那么一个右端点可行,当且仅当左端点左边的数是互不相同的,右端点右边的数是互不相同的,并且右端点右边的数中没有左端点左边的数。
- 左端点左边的数是互不相同的,右端点右边的数是互不相同的
- 这两个条件可以\(O(n)\)预处理。
- 右端点右边的数中没有左端点左边的数。
- 这个条件可以维护左端点的数中最后一次出现的位置的最大值,那么右端点比这个最大值还大即可。
C. Magic Grid
题意:
构造一个\(n \cdot n\)的矩阵,里面的数为\([0, n^2 - 1]\)的一个排列。
要求每一行以及每一列的异或和相同。
\(n = 4k\).
思路:
对于\(4\)的情况这样构造:
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
发现每一行每一列都是\(0\)。
那么对于\(n = 4k\)的情况,直接划分成若干个\(4 \cdot 4\)的小矩形,这样仿照的画葫芦即可。
D. Restore Permutation
题意:
有一个排列\(p_i\),现在告诉你\(s_i\):
\[
\begin{eqnarray*}
s_i = \sum\limits_{p_j < p_i} p_j
\end{eqnarray*}
\]
要求还原出\(p_i\)。
思路:
显然一个合法的\(s_i\)的序列唯一对应一个\(p_i\)序列,那么我们从最后一个数考虑。
假设最后一个数为\(p_n\),那么\(s_n = p_n(p_n - 1) / 2\)。
其实本质就是小于\(p_n\)的数都在它前面,他们的和构成了\(s_n\)。
那么确定了最后一个数,那么依次倒着确定\(s_{n - 1}, s_{n - 2}, \cdots\)。
用线段树维护还有哪些数没有出现,以及他们的和。
对于每个\(s_i\),在线段树上二分即可。
E. Let Them Slide
题意:
有一个\(n \cdot w\)的矩形,每一行有若干个数,并且每一行的数是可以整体移动的,像这样:

那么现在询问,对于每一列,下面每一行的数如何移动,使得该列的数的和最大,如果没有数那么就是\(0\)。
每一列的询问独立。
思路:
每一行考虑,考虑这一行的哪些数会对哪些列产生贡献。
显然这个每个数产生贡献的范围是连续的,那么用栈贪心维护一下范围即可。
F. Bits And Pieces
题意:
给出一个序列\(a_i\),询问\(a_i \;|\; (a_j \& a_k)\)这个式子的最大值,其中\(i < j < k\)
思路:
考虑固定\(a_i\),然后我们只需要关心\(a_i\)那些二进制位上为\(0\)的位,从高位到低位确定。
比如说对于第\(x\)位,那么我们相当于固定了一个前缀,去找\(i < j < k\)是否存在一个\(a_j\)以及一个\(a_k\),它们都有这样的前缀。
那么直接枚举子集标记前缀即可。 但是这样复杂度不对。
我们可以倒着来,因为我们发现对于一个\((j, k)\),那么肯定希望\(j, k\)越大越好,那么倒着标记即可,这样标记过了肯定不用再标记了,因为被标记过说明下标肯定大于等于当前的下标。
但是要注意下标等于的情况
Manthan, Codefest 19的更多相关文章
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)-D. Restore Permutation-构造+树状数组
Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)-D. Restore Permutation-构造+树状数组 [Pro ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)-C. Magic Grid-构造
Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)-C. Magic Grid-构造 [Problem Descripti ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)-E. Let Them Slide-思维+数据结构
Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)-E. Let Them Slide-思维+数据结构 [Problem ...
- Manthan, Codefest 19(Div. 1 + Div. 2)
传送门 A. XORinacci 签到. Code /* * Author: heyuhhh * Created Time: 2020/2/26 9:26:33 */ #include <ios ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) F. Bits And Pieces sosdp
F. Bits And Pieces 题面 You are given an array
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) G. Polygons 数论
G. Polygons Description You are given two integers
- Manthan Codefest 19 题解
这套题还是有点质量的吧 -- 题目链接 A. XORinacci 傻叉签到题,因为异或的性质所以这个序列的循环节长度只有 \(3\) -- 查看代码 B. Uniqueness 因为序列长度乃至数的种 ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) (1208F,1208G,1208H)
1208 F 大意: 给定序列$a$, 求$\text{$a_i$|$a_j$&$a_k$}(i<j<k)$的最大值 枚举$i$, 从高位到低位贪心, 那么问题就转化为给定$x$ ...
- RMQ+差分处理(Let Them Slide)Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)
题意:https://codeforc.es/contest/1208/problem/E 现有n行w列的墙,每行有一排连续方块,一排方块可以左右连续滑动,且每个方块都有一个价值,第i 列的价值定义为 ...
随机推荐
- VS.NET(C#)--1.3_VS2005开始
VS2005开始 开始页 1.文件系统:这是默认,把网站创建到当前物理文件系统上(可以本地或网络).此时VS2005将使用内置的Web服务器,不使用IIS运行Web应用程序.2.HTTP使用IIS处理 ...
- Centos7阿里云安装OpenProject-亲测
10/182019年10月18日13:50 参考 <https://ywnz.com/linuxyffq/4085.html> 说在前头:网上有各种教程,包括官方自己的教程,在阿里云服务器 ...
- C# 微信消息模板 发送
项目要用到微信提醒 ,加上调转到小程序页面,或者 指定url 用到 RestSharp.Senparc.Weixin 类库 一开始直接照着微信示例直接post进去 发现一直提示 47001 ,估计 ...
- [转]Entity Framework 异常: 'OFFSET' 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效
https://blog.csdn.net/weixin_34321977/article/details/85850064 在使用 EF 的时候,突然发现更新后在服务器中运行出错,异常信息主要包含以 ...
- VSCode-设置webstorm的主题和快捷键
前提:VScode很火啊,理由:轻量,免费,不用找各种破解qi.... 好吧那我也从webstorm转过来试试,但是webstorm已经用了4年多了,对于一个有洁癖的人,必须把VScode打扮的和we ...
- 使用Feign通过服务名调用服务,找不到服务
fegineureka 报错环境: eureka注册中心在远程服务器上 本地服务注册到远程的eureka注册中心 本地服务通过Fegin组件+服务名调用服务 报错时,注册中心的情况: Applicat ...
- R_数据操作_高级_04
数学函数: abs(x) 绝对值 sqrt(x) 平方根 ceiling(x) 放回不小于x的最小整数 floor(x) 不小于x的最大整数 trunc(x) 先0方向截取x的整数部分 ...
- setTimeout()方法和setInterval()方法
setTimeout方法: 定义和用法: setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. tip: 1000 毫秒= 1 秒. tip: 如果你只想重复执行可以使用setI ...
- js数组实现上移下移
up(index) { if(index === 0) { return } //在上一项插入该项 this.list.splice(index - 1, 0, (this.list[index])) ...
- mysql表设计注意点
[原创]面试官:讲讲mysql表设计要注意啥 需要设计一个主键 因为你不设主键的情况下,innodb也会帮你生成一个隐藏列,作为自增主键.所以啦,反正都要生成一个主键,那你还不如自己指定一个主键,在有 ...