Contest Info


Practice Link

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\)越大越好,那么倒着标记即可,这样标记过了肯定不用再标记了,因为被标记过说明下标肯定大于等于当前的下标。
但是要注意下标等于的情况

最新文章

  1. discuz教程:discuz模板js与jQuery冲突的解决方案
  2. validate插件深入学习-04自定义验证方法
  3. vs c++系统函数 计时器和暂停
  4. 在 ASP.NET 中使用 jQuery.load() 方法
  5. GUI异步编程之BackgroundWorker类
  6. Codeforces Round #204 (Div. 2)-&gt;C. Jeff and Rounding
  7. 扩展:gridview 空数据时显示表头
  8. ecmall 后台导航增加菜单
  9. 转:Red Hat JBoss团队发布WildFly 8,全面支持Java EE 7并包含全新的嵌入式Web服务器
  10. 移动开发(webapp)过程中的小细节总结
  11. hdu2037 经典贪心入门
  12. Appium 服务命令行参数
  13. HDU 3068 最长回文 Manacher算法
  14. JavaScript中的trim自定义
  15. sql server 删除所有表和递归查询、数字类型转为字符串
  16. python学习笔记(十 四)、web.py
  17. linux CentOS
  18. 记录tiny6410 使用linux-2.6.28.6内核遇到starting kernel...的问题
  19. logrotate-日志切割示例
  20. Shell脚本交互之:自动输入密码

热门文章

  1. Bootsrap表格表单及其使用方法
  2. CentOS7安装firewall防火墙
  3. 使用Android Studio遇到的问题
  4. 使用 pykafka 进行消费
  5. md5 helper
  6. 【转载】Sqlserver使用Right函数从最右边向前截取固定长度字符串
  7. MongoDB官方推荐的GUI工具-Compass的使用
  8. Vue框架之基础知识
  9. 【清单】值得「等待」的12个指示加载状态的 js 库
  10. RT-Thread--内存管理