首页 > 其他分享 >ARC150F Constant Sum Subsequence 解题记录

ARC150F Constant Sum Subsequence 解题记录

时间:2022-10-13 14:48:10浏览次数:72  
标签:Constant log Sum times Subsequence ARC150F 序列 dp

题意:

给定长度为 \(n\) 的序列 \(A\),保证对每个 \(i\in[1,S]\),\(i\) 都在 \(A\) 中出现了至少一次。

令 \(X\) 表示 \(A\) 重复 \(S\) 次组成的序列。

求最小的 \(L\),满足:

对每个和为 \(S\) 的序列 \(B\),\(B\) 都是 (\(X\) 的前 \(L\) 个元素组成的序列) 的子序列。

\(n \le 1.5\times 10^6, S\le2\times 10^5\)


考虑一个朴素的 dp。

令 \(dp_i\) 表示:\(X\) 的前 \(i\) 个元素组成的序列,可以包含所有的和不大于 \(dp_i\) 的序列。

易知有这样的转移:

维护一个辅助数组 \(g\),其中 \(g_i\) 表示结尾为 \(i\) 的序列此时的答案。
枚举每个 \(i \in [1,n\times S]\),令:

\[dp_i=\min_{j=1}^S g_j\\ g_{X_i}=\max(g_{X_i},dp_i+X_i) \]

采用适当的维护方法,就可做到复杂度 \(O(n\times S)\)。


仔细分析可知 \(dp_i\) 只有 \(O(S\log S)\) 个不同的取值。

这引导我们得到和 \(dp_i\) 取值强相关的做法。

我们考虑对 \(dp_i\) 相同的一段进行快速转移。

维护 \(L\),表示此时只考虑 \(i<L\) 的 \(dp_i\) 转移。
接下来从小到大对最小的一些 \(g_i\) 一次性更新这些:

\[g_i=dp_{*}+i \]

如果此时 \(g_i\) 没有发生变化,就更新 \(L\),并令 \(g_i\to g_i+i\)。

仔细分析,可知每当 \(g_i\) 更新两次,\(g_i\) 至少变大 \(i\)。

总复杂度 \(O(S\log^2(n+S))\),可以通过此题。

标签:Constant,log,Sum,times,Subsequence,ARC150F,序列,dp
From: https://www.cnblogs.com/havzriu/p/16786868.html

相关文章

  • Consumer
    Consumer/**java.util.function.Consumer<T>接口和supplier接口相反*它是消费一个数据,*Consumer泛型执行什么类型,就用accept方法消费什么类型***/public......
  • 活动预告 | Feature Store Summit 2022
    10月12日北京时间上午7:05-7:15 (10.1116:05-16:15GMT-7),OpenMLDBPMC、第四范式系统架构师卢冕,将在FeatureStoreSummit2022活动中为大家带来议题为《OpenMLDB:......
  • Codeforces Round #825 (Div. 2)D. Equal Binary Subsequences
    CodeforcesRound#825(Div.2)D.EqualBinarySubsequences题意:给定一个长度为2n的01字符串s。你可以对其中一个子序列进行向右旋转一个位置。问能否将字符串分割成......
  • leet Code [209. Minimum Size Subarray Sum]
    [209.MinimumSizeSubarraySum][(https://leetcode.cn/problems/minimum-size-subarray-sum/)暴力解法两个for循环,不断寻找符合条件的子序列classSolution{pu......
  • 常用的函数式接口_Consumer接口与常用的函数式接口_Consumer接口的默认方法andThen
    3.3Consumer接口java.util.function.Consumer<T>接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。消费者<T`接口则......
  • Summary of XSS
    SummaryofXSSDefinition​ 跨站脚本攻击XSS(CrossSiteScripting),为了不和层叠样式表(CascadingStyleSheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻......
  • Problem P32. [算法课分支限界法]Partition to K Equal Sum Subsets
    纯暴力遍历+剪枝,将任务看出有k个桶,要将每个桶都刚刚好装满。#include<iostream>#include<bits/stdc++.h>#include<cstdio>#include<string>usingnamespacestd;......
  • 条件区域循环的Sumif
    问题:Sumif条件为D12:D16,求和区域从E3:E8向右,条件区域为B3:D8三列循环函数解决:=SUMIF(OFFSET($B$3:$B$8,,MOD(COLUMN(C1),3)),$D12,E$3:E$8) 思路:利用Mod(Column(......
  • Ele_0008:electron 锁屏恢复事件 resume unlock-screen once事件响应一次
    1,有的时候需要监听Electron的系统恢复事件(从睡眠、休眠中恢复,或者从锁屏状态恢复),这个时候我们会使用Electron主进程powerMonitor模块的resume事件或者unlock-screen事件......
  • Subsequence Path(图论,DP)
    题意给定\(N\)个点,\(M\)条边的无向图,边权为\(C_i\)。给定一个序列\(E=(E_1,E_2,\dots,E_K)\),其中\(E_i\)表示边的编号。路径是“好路径”当且仅当边的编号按照经过......