ICode9

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

国外训练试题泛做

2020-11-07 12:01:23  阅读:157  来源: 互联网

标签:国外 试题 训练 复杂度 决策 左侧 序列 加点 右侧


\(36th\ Petrozavodsk\ Programming\ Camp , 300iq\ contest\ 3\)

\(F\)

首先如果选择 \(i\) , 记花费在 \(i\) 上的有 \(r_{i}\) 次 , 则 \((h_{i} - r_{i} \cdot a)\ mod\ b < a\)。

发现 \(r_{i} = \lfloor \frac{(h_{i}\ mod\ b)}{a} \rfloor\)。 那么得分至少要花费 \(r_{i} + 1\) 次。

注意到如果选择 \(i\) 个物品也只需花费 \(r_{i} + 1\) 次 , 因为多花费显然不优。

那么就有一个反悔贪心的思路了。 每次假定不选择 , 将决策放入小根堆 , 每次将堆顶与当前的决策比较即可。

时间复杂度 : \(O(NlogN)\)

\(J\)

首先每个点可以看成一个线性同余方程 , 因此这个题目的本质是求一个线性同余方程组的自由元个数。

任取一棵生成树 , 注意到在非树边确定的情况下树边的权值是确定的。 并且每个点权值向上的贡献是一个正负交替的形式。 因此还要

额外保证奇数深度和偶数深度的点权和相等。 这里的 "点权" 指的是相邻的边权和。

换言之 , 就是对于一个连通分量 , 如果它是二分图 , 那么贡献是 \(2 ^ {|E| - |V| + 1}\) , 否则是 \(2 ^ {|E| - |V|}\)。

时间复杂度 : \(O(N)\)

\(I\)

每个数被统计当且仅当这个数没有 \(a_{1} \oplus a_{2} ... \oplus a_{i - 1}\) 中的位。

直接考虑每个数的贡献即可。

时间复杂度 : \(O(NlogV)\)

\(H\)

题目可以抽象为两种操作 :

\(0.\) 在右侧加点。

\(1.\) 在左侧加点 , 向右侧所有点连边。

这样所给的 \(a\) 序列就可以转化为一个 \(0\) 和 \(1\) 的交错操作序列。

注意到最后答案的形式必然是 \(010101010.....\) 这样的形式。

不妨记 \(dp_{i , j}\) 表示考虑了操作序列的前 \(i\) 个操作 , 当前形成了 \(j\) 条链的方案数。

每次如果是在右侧加点 , 那么这个点与当前左侧所有点都没有连边。 有两种决策 :

\(1.\) 单独成一条链。

\(2.\) 添加在之前某条链的末尾。

如果加入的是左侧点 , 那么该点与右侧所有点都有连边 , 有两种决策 :

\(1.\) 什么都不做。

\(2.\) 合并两条链。

这样分析后 , 这个动态规划就很容易转移了。

注意对于一个环而言 , 其正向和反向都被记了一遍 , 所以答案要除以二。

还需减去二元环的个数 , 为 \(\sum{a_{i}}\) 。

时间复杂度 : \(O(N ^ 2)\)

\(B\)

记度数为 \(1\) 的点有 \(x\) 个。

答案为 \(min\{\frac{N}{2} , N - x\}\)。

证明略。

时间复杂度 : \(O(N)\)

标签:国外,试题,训练,复杂度,决策,左侧,序列,加点,右侧
来源: https://www.cnblogs.com/evenbao/p/13940534.html

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

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

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

ICode9版权所有