Codeforces Problemset

Constructive Algorithms

CF1709C

  • 判断是否是唯一解一般都是先构造出一组解再尝试做变换得到另一组解。
  • 令左括号为 +1,右括号为 -1,求前缀和,合法相当于前缀和数组每一位都大于等于 0,且最后一位恰好为 0。
  • 贪心地将所有左括号填在右括号前,该方案一定合法。
  • 任选一个左括号和一个右括号交换,相当于将它们中间一段区间的前缀和数组减 2。
  • 贪心地取最右边的左括号和最左边的右括号交换即可。
  • Code

CF1705D

算法 1

  • 取长度为 n − 1 n - 1 n1 的串
    s ‾ = ( s 1 ⊕ s 2 ) ( s 2 ⊕ s 3 ) … ( s n − 1 ⊕ s n ) t ‾ = ( t 1 ⊕ t 2 ) ( t 2 ⊕ t 3 ) … ( t n − 1 ⊕ t n ) \begin{aligned}\overline s &= (s_1 \oplus s_2)(s_2 \oplus s_3)\dots(s_{n - 1}\oplus s_n) \\\overline t &= (t_1 \oplus t_2)( t_2 \oplus t_3)\dots(t_{n - 1}\oplus t_n) \\\end{aligned} st=(s1s2)(s2s3)(sn1sn)=(t1t2)(t2t3)(tn1tn)
  • 则原操作相当于每次选择一对相邻的 0 和 1 交换。
  • 记串 s ‾ \overline{s} s 中 1 的位置从小到大依次为 a 1 , a 2 , … , a p a_1, a_2, \dots, a_p a1,a2,,ap,串 t ‾ \overline{t} t 中 1 的位置从小到大依次为 b 1 , b 2 , … , b q b_1,b_2,\dots,b_q b1,b2,,bq,显然 p ≠ q p \neq q p=q 时无解,同时最少操作步数为 ∑ i = 1 p ∣ a i − b i ∣ \sum \limits_{i = 1}^{p}|a_i - b_i| i=1paibi
  • Code

算法 2

  • 本质上与算法 1 相同。
  • 不难发现,每次操作只会让原串中连续的 1 (以下简称为连续段)伸长和缩短,但连续段数目保持不变,不同的连续段之间无法合并。
  • 因此贪心地将 s s s 中每个连续段移到 t t t 中对应连续段的位置即可。
  • Code

CF1338B

  • 为方便处理,选择一个不为叶子的结点为根,同时任意两个结点之间路径的异或和为它们分别到根结点路径的异或和的异或和。
  • 考虑最小的答案,注意到如果所有叶子结点的深度均为偶数或均为奇数(即所有叶子结点之间的路径长度均为偶数),则全填上 1 即可满足条件。若叶子结点的深度既有奇数又有偶数,则先交替地填上 1 和 2,再对深度为奇数的点(根结点深度为 0),将其到父结点的边改为 3 即可满足条件。
  • 考虑最大的答案,注意到若两个叶子结点的 LCA \text{LCA} LCA 不同时为它们的父结点,因为可以填任意大的数值,则将它们到它们的 LCA \text{LCA} LCA 的所有边填上的方案有足够多种,因此除了父结点相同的叶子结点到它们父结点的边必须填成相同的之外,剩下的所有边总能找到一种方案使得每条边的数值均不同。
  • Code

CF449C

  • 首先排除 1 和大于 ⌊ n 2 ⌋ \lfloor \frac{n}{2} \rfloor 2n 的素数配对的可能。
  • 容易想到按照素数的倍数分组两两配对,但如果有落单的情况很不好处理。
  • 考虑从大到小枚举素数 p p p,此时 2 p 2p 2p 一定还未配对,如有落单的情况就将 2 p 2p 2p 取出,剩下两两配对,则最终所有取出的数均有公因子 2,两两配对即可。
  • Code

CF1704E

  • 注意到足够多轮后 a i > 0 a_i > 0 ai>0 的点会形成一个连通块,并且之后每次只能使 a i a_i ai 的总和减少 1,因此之后所需的时间就为此时 a i a_i ai 上的每个 1 移动到那个唯一的出度为 0 的点上的方案数的总和。
  • 先暴力模拟 n n n 轮,易知此时 a i > 0 a_i > 0 ai>0 的点一定会形成一个连通块,拓扑排序后统计方案数即可。
  • 时间复杂度 O ( n 2 ) \mathcal O(n^2) O(n2)
  • Code

CF1705F

  • 先问出 T T T … T TTT\dots T TTTT,显然对于某一道题目,可以将该位置改成 F F F 一次询问得到答案。
  • 考虑将每两个问题合在一起询问,即对 1 ≤ i ≤ ⌊ n 2 ⌋ 1 \le i \le \lfloor \frac{n}{2}\rfloor 1i2n ,将 T T T … T TTT\dots T TTTT 中第 2 i − 1 2i - 1 2i1 道问题和第 2 i 2i 2i 道问题改为 F F F 后询问,比较和 T T T … T TTT\dots T TTTT 的差异,则很容易区分两道问题都是 T T T 或者 F F F 的情况,但是 F T FT FT T F TF TF 的情况则难以区分,该情况下再增加一次询问,即可得到期望询问次数为 3 4 n \frac{3}{4}n 43n 的算法。
  • 考虑问出 F T FT FT T F TF TF 的情况,实际上知道其中一个的答案就能确定另一个,因此每次将该情况下其中一道问题取出,重新随机分组,不断进行上述的算法流程,即可得到期望询问次数为 2 3 n \frac{2}{3}n 32n 的算法。
  • 若要得到上界为 2 3 n \frac{2}{3}n 32n 的算法,我们还需要转变一下思路。
  • 先问出 T T T … T TTT\dots T TTTT T F T F … T TFTF\dots T TFTFT,对 1 ≤ i ≤ ⌊ n 3 ⌋ 1 \le i \le \lfloor \frac{n}{3}\rfloor 1i3n,将 T T T … T TTT\dots T TTTT 中第 2 i − 1 2i - 1 2i1 道问题和第 2 i 2i 2i 道问题改为 F F F 后询问,比较和 T T T … T TTT\dots T TTTT 的差异,若为 F T FT FT T F TF TF,在 2 ⌊ n 3 ⌋ < i ≤ n 2 \lfloor \frac{n}{3} \rfloor < i \le n 23n<in 中任选一道题,将 T F T F … T TFTF\dots T TFTFT 这三个位置对应的字母由 T T T F F F F F F T T T,再询问一次,因为前两个问题不是 T F TF TF 就是 F T FT FT,两次的差异只能为 ± 2 \pm2 ±2,而第三个问题的差异只能为 ± 1 \pm 1 ±1,故可以在一次询问中区分出来,即每三个问题只需要两次询问,上界为 2 3 n \frac{2}{3}n 32n
  • Code

Dynamic Programming

CF1348E

  • 可以求出答案的上下界:
    a n s R = ⌊ ∑ i = 1 n a i + ∑ i = 1 n b i k ⌋ a n s L = ⌊ ∑ i = 1 n a i k ⌋ + ⌊ ∑ i = 1 n b i k ⌋ \begin{aligned} ans_R &= \lfloor \frac{\sum \limits_{i = 1}^{n}a_i + \sum \limits_{i = 1}^{n}b_i}{k}\rfloor \\ ans_L &= \lfloor \frac{\sum \limits_{i = 1}^{n}a_i}{k} \rfloor + \lfloor \frac{\sum \limits_{i = 1}^{n}b_i}{k}\rfloor \\ \end{aligned} ansRansL=ki=1nai+i=1nbi=ki=1nai+ki=1nbi
  • 下界 a n s L ans_L ansL 表示不考虑能将同一颗树的红梅和蓝莓放进同一个篮子的情况。
  • 注意到 a n s R ans_R ansR 至多比 a n s L ans_L ansL 多 1,若 a n s L = a n s R ans_L = ans_R ansL=ansR,我们可以直接输出答案。
  • 因此我们只需要判断答案是否能取到上界,即是否能使与同一棵树的蓝莓放在同一个篮子里的红梅总数模 k k k 的结果落在区间 [ k − ( ∑ i = 1 n b i m o d    k ) , ∑ i = 1 n a i m o d    k ] [k - (\sum \limits_{i = 1}^{n}b_i \mod k), \sum \limits_{i = 1}^{n}a_i \mod k] [k(i=1nbimodk),i=1naimodk]
  • f i , j f_{i,j} fi,j 表示已经考虑了 i i i 棵树,能否使与同一棵树的蓝莓放在同一个篮子里的红梅总数模 k k k 的结果为 j j j
  • 转移即枚举第 i i i 棵树上与蓝莓放在同一个篮子的红梅数 t t t,这些红梅必定只会被放在一个篮子里(否则一定能再凑出一个全是红梅或全是蓝莓的篮子)。
  • 因此对于 0 ≤ t < k 0 \le t < k 0t<k,若满足 t ≤ a i t \le a_i tai k − t ≤ b i k - t \le b_i ktbi,有转移
    f i − 1 , j → f i , j f i − 1 , j → f i , ( j + t ) m o d    k \begin{aligned} f_{i - 1,j} &\to f_{i,j} \\ f_{i - 1, j}&\to f_{i,(j+t)\mod k} \\ \end{aligned} fi1,jfi1,jfi,jfi,(j+t)modk
  • 时间复杂度 O ( n k 2 ) \mathcal O(nk^2) O(nk2),前缀和优化可做到 O ( n k ) \mathcal O(nk) O(nk)
  • Code

CF1511G

  • 显然是 Nim Game,设 f j , i = ⨁ i ≤ c k ≤ i + 2 j − 1 ( c k − i ) , s u m i = ∑ [ c k ≤ i ] f_{j,i} = \bigoplus \limits_{i \le c_k \le i+2^j-1} (c_k - i), sum_i = \sum [c_k \le i] fj,i=icki+2j1(cki),sumi=[cki]
  • 转移过程中可独立计算最高位的贡献:
    f j , i = f j − 1 , i ⊕ f j − 1 , i + 2 j − 1 ⊕ ( [ ( s u m i + 2 j − 1 − s u m i + 2 j − 1 − 1 ) m o d    2 = 1 ] × 2 j − 1 ) f_{j,i} = f_{j - 1,i} \oplus f_{j - 1,i + 2^{j - 1}} \oplus ([(sum_{i + 2^j - 1} - sum_{i + 2^{j - 1} - 1})\mod 2 = 1] \times 2^{j - 1}) fj,i=fj1,ifj1,i+2j1([(sumi+2j1sumi+2j11)mod2=1]×2j1)
  • 询问时以类似转移的方式计算答案即可。
  • Code

Greedy

CF1344D

算法 1

  • f i ( x ) = x ( a i − x 2 ) f_i(x) = x(a_i - x^2) fi(x)=x(aix2)
  • 如果没有和的限制,很容易求出最值位置 x i = a i 3 x_i = \sqrt \frac{a_i}{3} xi=3ai ,令 b i b_i bi f i ( ⌊ x i ⌋ ) f_i(\lfloor x_i \rfloor) fi(⌊xi⌋) f i ( ⌈ x i ⌉ ) f_i(\lceil x_i \rceil) fi(⌈xi⌉) 中较大的位置即可。
  • ∑ i = 1 n b i = k \sum \limits_{i = 1}^{n} b_i = k i=1nbi=k,则 ∑ i = 1 n b i ( a i − b i 2 ) \sum \limits_{i = 1}^n b_i (a_i - b_i^2) i=1nbi(aibi2) 最大可等价为下面的形式
    ∑ i = 1 n b i ( a i − b i 2 ) + C k = ∑ i = 1 n b i ( a i + C − b i 2 ) = ∑ i = 1 n g i ( b i ) \begin{aligned} &\sum \limits_{i = 1}^{n}b_i(a_i - b_i^2) + Ck \\ = &\sum\limits_{i = 1}^{n}b_i(a_i + C - b_i^2)\\ = &\sum\limits_{i = 1}^{n} g_i(b_i) \end{aligned} ==i=1nbi(aibi2)+Cki=1nbi(ai+Cbi2)i=1ngi(bi)
  • 其中 g i ( x ) = x ( a i + C − x 2 ) , C ∈ R g_i(x) = x(a_i + C - x^2), C \in \mathbb R gi(x)=x(ai+Cx2),CR,其最值位置 x i x_i xi 满足
    • a i + C ≥ 0 a_i + C \ge 0 ai+C0 时, x i = min ⁡ { a i , a i + C 3 } x_i = \min\{a_i, \sqrt\frac{a_i + C}{3}\} xi=min{ai,3ai+C }
    • a i + C < 0 a_i + C < 0 ai+C<0 时, x i = 0 x_i = 0 xi=0
  • Lagrange \text{Lagrange} Lagrange乘数法 也可以得到相同的结果。
  • 因此可以二分得到 C C C,恰使 ∑ i = 1 n x i = k \sum \limits_{i = 1}^{n}x_i = k i=1nxi=k
  • 先令 b i = ⌊ x i ⌋ b_i = \lfloor x_i \rfloor bi=xi,然后将 b i b_i bi Δ i = f i ( b i + 1 ) − f i ( b i ) \Delta_i = f_i(b_i + 1) - f_i(b_i) Δi=fi(bi+1)fi(bi) 从大到小排序,取前 k − ∑ i = 1 n b i k - \sum \limits_{i = 1}^{n}b_i ki=1nbi 个增加 1 即可。
  • 注意精度误差的处理。
  • Code

算法 2

  • 考虑一个暴力做法,初始时令所有 b i = 0 b_i = 0 bi=0,用堆维护 Δ i \Delta_i Δi(定义同上),每次取 Δ i \Delta_i Δi 最大的增加 1,共增加 k k k 次。
  • 不难发现每次取的 Δ i \Delta_i Δi 是单调不增的,因此我们可以二分最后一次取的 Δ i \Delta_i Δi b i b_i bi 可以通过解二元一次方程计算出来。
  • 因为每次取的 Δ i \Delta_i Δi 并非单调减,最终的 ∑ i = 1 n b i \sum \limits_{i = 1}^{n}b_i i=1nbi 取值范围可能是一个区间,我们可以先二分得到一个 ∑ i = 1 n b i ≤ k \sum \limits_{i = 1}^{n}b_i \le k i=1nbik 且最后取的 Δ i \Delta_i Δi 最大的解,剩下的处理方法同 算法 1
  • Code

CF1775E

算法 1

  • 将序列中的 0 直接删除,并将同符号的相邻数字合并,可得到一个正负号交替的序列。
  • 不难得到一种贪心的策略:
    • 取当前序列中绝对值最小的数的绝对值为 m x mx mx
    • 将序列中每个数的绝对值减去 m x mx mx
    • 此时序列会产生新的 0,删除 0 后需将之后出现的同符号相邻数字合并。
  • 可用链表维护这一序列,并通过 set 维护序列中的数的绝对值,将序列中每个数减去一个值可通过全局标记实现。
  • 由于每个数只会被删除一次,总时间复杂度 O ( n log ⁡ n ) \mathcal O(n\log n) O(nlogn),实现较为繁琐。
  • Code

算法 2

  • 取原序列的前缀和序列 b b b,此时原操作变为选择若干个位置,同时 +1/-1。
  • 显然答案为 max ⁡ { 0 , max ⁡ 1 ≤ i ≤ n { b i } } + max ⁡ { 0 , max ⁡ 1 ≤ i ≤ n { − b i } } \max\{0,\max\limits_{1 \le i \le n}\{b_i\}\} + \max\{0,\max\limits_{1 \le i \le n}\{-b_i\}\} max{0,1inmax{bi}}+max{0,1inmax{bi}}
  • Code
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值