JOISC 2014 简要题解

代码,题目推荐在 LOJ 上看。

#2872. 「JOISC 2014 Day1」巴士走读

大常数做法。

假设我们知道了终止的时间,那么就显然可以最短路直接求出最晚要什么时候到达 \(n\) 号点,复杂度为 \(\mathcal O(n\log m)\) ,然后可以二分终止的时间,复杂度为 \(\mathcal O(n \log m\log V)\)

但是有多组询问,因此直接整体二分就行了,复杂度应该是 \(\mathcal O(n \log m\log V)\)

#2873. 「JOISC 2014 Day1」有趣的家庭菜园

题目就是想说明要求 IOI 草是一个单峰的形状。

因此我们可以按照 \(H_i\) 从高到低加入 IOI 草,然后每次可以放左边或者右边,这两种的贡献形式都是逆序对个数,直接树状数组维护,然后注意一下相同 \(H_i\) 的 IOI 草同时处理,不能让他们互相影响就行了(因为一定是左边一部分选择放左边,其他部分放右边,然后互相之间不会有逆序对)。

#2874. 「JOISC 2014 Day1」历史研究

回滚莫队板子,不解释。

#2875. 「JOISC 2014 Day1」拉面比较

先两两分组,每组比较分出最大值和最小值,共\(\left\lfloor \frac{n}{2}\right\rfloor\) 次,然后把两组的最大值和最小值分别比较,共 \(2 (\left\lceil \frac{n}{2}\right\rceil - 1)\) 次。

今年我初赛题比较次数就是因为这个对的

#2876. 「JOISC 2014 Day2」水壶

写个广搜搜一搜,同时用并查集建出一个建筑物之间的生成树(就是两个节点交界处时计算边权),然后直接建出来 Kruskal 重构树,询问的时候找一下 LCA 就行了。

#2877. 「JOISC 2014 Day2」交朋友

定义 \(to_x\) 代表 \(x\) 出边的集合。

显然,对于每个 \(x\)\(to_x\) 中的城市两两是友好国家。

然后我们发现,如果 \((x, y)\) 是友好国家,那么 \(\forall z \in to_y, (x, z)\) 也是友好国家,因此最后再次用并查集合并一下就行了。

#2878. 「JOISC 2014 Day2」邮戳拉力赛

之前写了一个贪心 + DP ,然后萎了成 80 pts,找了半天错,最后发现是思路不对。

注意到走的方法可以很鬼畜,七拐八拐的,但是总有一个不变:

在某个点转向成下行列车,必定有一个地方转向成上行列车走回来。

然后我们可以将转向成下行列车作为 ) ,转向成上行列车作为 (,那么所有的方案一定是一个括号序列。

因此,考虑 记 f[i][j] 代表 目前考虑到 \(i\) 点,有 \(j\)(,的最小代价, 考虑 \(i\) 要放几个( 或者), 而贡献可以通过费用提前计算很好地计算出来。

#2879. 「JOISC 2014 Day3」JOIOJI

首先,我们对于 3 种字母分别进行前缀和统计个数,我们发现对于满足条件的子串 \((l, r)\),那么 \(l - 1\)\(r\) 的前缀和数组的差分数组一定相同,那么就可以直接对前缀和数组差分后进行 hash,用 map 统计答案即可。

#2880. 「JOISC 2014 Day3」稻草人

不解释。

#2881. 「JOISC 2014 Day3」电压

原问题等价于问有多少边满足删了该边使得整个图为二分图且 删边可以使得图不连通或者不删会成为非二分图 。

首先建出 dfs 生成树,然后通过差分可以求出每条边有多少个奇环和偶环经过,于是有两种情况:

  1. 删掉非 dfs 生成树边,只有当奇环个数为 \(1\) 的时候,可以删去该边
  2. 删掉 dfs 生成树边,当所有奇环经过该边并且没有偶环经过该边的时候可行。

简单讨论即可。

#2882. 「JOISC 2014 Day4」两个人的星座

计算几何,还不太会,正在咕咕咕咕咕。

#2884. 「JOISC 2014 Day4」挂饰

我们注意到,当 \(a_i = 0\) 的时候,相当于将可用的挂钩数 \(-1\), 其他的都是增加或者不变。

那么将 \(a_i = 0\) 的单独考虑,其他的先跑一个背包,设 \(f_i\) 表示当期可用挂钩剩余量为 \(i\) 的最大喜悦值,最后再贪心匹配 \(a_i = 0\) 的挂饰就行了,复杂度 \(\mathcal O(n ^ 2)\)

posted @ 2021-11-12 19:19  Werner_Yin  阅读(389)  评论(2编辑  收藏  举报