ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JOISC 2015 简要题解

2021-11-12 22:00:40  阅读:360  来源: 互联网

标签:那么 咕咕 题解 JOISC cost 2015 Day


目前还在咕咕咕咕的题目:#3001. 「JOISC 2015 Day 3」AAQQZ,#3006. 「JOISC 2015 Day 4」防壁

#2994. 「JOISC 2015 Day1」复制粘贴 2

考虑时间倒流,维护每个位置是从哪里来的,那么对于第 \(i\) 次插入,设 \(l_i = b_i - a_i + 1\), 对于位置 \(x\) :

  1. \(x < c_i\),没有影响。
  2. \(c_i \le x \le c_i + l_i - 1\),会变到 \([a_i, b_i]\) 中相应的位置。
  3. \(x > ci + l_i - 1\), 往前挪 \(l_i\) 。

复杂度为 \(\mathcal O(KN)\)

#2995. 「JOISC 2015 Day1」愉快的标志设计

声明:因为是环,对于 \([l, r]\) 这种表示形式,如果 \(r > n\) ,那么该区间代表 \([l, n] \vee [1, r \bmod n + 1]\) 。

维护几个 \(dp\) 数组,\(F_{k, i}\) 表示 \([i, i + 4^k - 1]\) 要满足条件至少要几次操作,\(J_{k, i}, O_{k, i}, I_{k, i}\) 分别代表使得 \([i, i + 4^k]\) 满足全是 JOI 至少要多少次操作,转移显然,注意空间可能不够,需要滚动数组优化。

可能也不算 DP,但确实是一种转移。

#2996. 「JOISC 2015 Day1」有趣的家庭菜园 2

首先从前往后考虑,在当前情况下,记 \(cost_i\) 表示保证高度为 \(i\) 的 IOI 草能够存活下所获得的最大贡献,同时记 \(f_i\) 表示 \(i\) 位置的 IOI 草能够存活的最大贡献,然后每次有这样几种转移:

  1. \(f_i = \max\limits_{j = 1}^{H_i}\left\{cost_j\right\} + P_i\)
  2. $\forall j \in [1, H_i - 1], cost_j \gets cost_j - C_i $ (必须拔了 \(i\) 号 IOI 草才能存活)
  3. \(cost_j = \max(cost_j, f_i)\)

然后题目的条件是,也就是只要有 一边满足条件就行了,那么再倒着搞一遍算出 \(g_i\),然后

\[ans = \max\left\{f_i + g_i - P_i\right\} \]

减去 \(P_i\) 是因为贡献被算了两遍。

#2997. 「JOISC 2015 Day 1」卡片占卜

感觉这个转为最短路好高级啊。

首先将区间翻转变为 差分后的两个单点取反,我们最后的目标就是整个差分数组为 \(0\)。

然后就有一个非常高级的操作:

如果我们选择翻转 \((x, y - 1), (y, z)\),那么在差分数组上就是 \(x - 1, y - 1, y - 1, z\) 取反,也就是 \(x - 1, z\) 取反了。

感觉上面的是废话

然后有几种情况:

  1. \(B, D\) 翻转
  2. \(BC, CD\) 翻转
  3. \(BD, C\) 翻转

都可以用最短路的形式表示出来,跑一跑就行了。

#2998. 「JOISC 2015 Day2」Building 3

考虑 check A 序列是否合法。

如果对于每个 \(A_i\), 存在一个 \(j < i, A_j + 1= A_i\) ,那么就 ok 了。

可以记一个前缀 \(mx\), 如果 \(t = \displaystyle \sum_{i = 2}^n \max(mx_i - mx_{i - 1} - 1, 0) > 1\) 那么显然无解。

对于 \(t = 0, t = 1\) 的情况,讨论一下在哪里插入就行了。

#2999. 「JOISC 2015 Day2」Keys

每个时间点都不同,极大程度上方便了情况的讨论。

考虑对于每个时间段分开讨论,对于时间段 \([i, i + 1]\),我们可以定位到对应的几个员工上,设 \(i\) 时间为员工 \(x\),\(i + 1\) 时间为员工 \(y\),那么有:

  1. \(x, y\) 都出去,如果 \(x\) 有钥匙,那么大门就可以关上。
  2. \(x\) 出去,\(y\) 进来,如果 \(x, y\) 都有钥匙,那么大门就可以关上。
  3. \(x\) 进来,\(y\) 出去,大门必定关上。
  4. \(x, y\) 都进来,如果 \(y\) 有钥匙,那么大门可以关上。

我们发现只有 情况 2 是要依赖前面人的情况的,那么可以连一条边 \((x, y)\), 最后图将由若干条链组成,最后的问题就是:

  1. \(x\) 如果有钥匙,那么就有 \(t_x\) 的贡献。
  2. \(x\) 和前面的人都有钥匙,那么就有 \(v_x\) 的贡献。

因此设 \(f_{x, k, 0 / 1}\) 表示考虑到第 \(x\) 人,共分配了 \(k\) 把钥匙,\(x\) 是否有钥匙的贡献最大值就行了。

#3000. 「JOISC 2015 Day2」Road Development

树剖板子,不解释。

#3001. 「JOISC 2015 Day 3」AAQQZ

不会,正在咕咕咕咕。

#3002. 「JOISC 2015 Day 3」Card Game Is Great Fun

痛苦的回忆,不太想写。

当初考试用爆搜 + 卡时过了,但是 \(\mathcal O(\frac{n^3}{w})\) 正解写得要死。

贴个链接,正在咕咕咕咕。

#3004. 「JOISC 2015 Day 4」Inheritance

维护 \(K\) 个并查集,边权从大到小对于每条边去二分第一个两点不连通的并查集,然后加边就行了。

#3005. 「JOISC 2015 Day 4」Limited Memory

考虑将 <[ 视为 (,即为 +1,将 >] 视为 ),记为 -1, 然后前缀和 \(s\), 就可以 check 了,如果这样都配不上不行,那么就不行了。

接下来就是考虑判断每次配对的两个是不是同种型号。

注意到允许的询问次数比 \(\mathcal O(n ^ 2)\) 还多,那么我们可以考虑分层 check,每次 对于 \(s = dep\) 时,check两个字符是否配对,这样只需要记录:

最后一个 \(s = dep\) 时的型号 ( \(0 \sim 1\) ) ,当前 \(pos(0 \sim n)\),前缀和 \(s (0 \sim n)\),当前要 check 的 \(dep(1 \sim n)\),共 \(1 + 7 + 7 + 7 = 22\) 个二进制位,刚好用完。

有个玄学问题,压位的时候不同的方式会直接导致 WA,调了不知道多久,甚至现在没有发现问题。

#3006. 「JOISC 2015 Day 4」防壁

不会,正在咕咕咕咕。

标签:那么,咕咕,题解,JOISC,cost,2015,Day
来源: https://www.cnblogs.com/werner-yin/p/JOISC2015-sol.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有