05 2022 档案

摘要:有一种暴力,枚举全排列,然后暴力 dfs,复杂度是 O(n!⋅2n)O(n! \cdot 2^n)O(n!⋅2n)。撇开 long long 能不能存得下,这种做法显然超时。 显然,对于任意一种顺序而言,显然应该先做加法再做乘法。所以可以优化,枚举全排列后每次枚举一个位置作为加法和乘法的中断点,复杂 阅读全文
posted @ 2022-05-28 16:54 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题意 题面描述十分清晰。 思路 CF 上有一个 tag 是搜索,但是尝试了许久,bfs 一直 WA,于是考虑 DP。 注意到范围 n≤107n \leq 10^7n≤107,显然考虑 O(n)O(n)O(n) 的线性 DP。可以设 fif_ifi​ 表示生成长度为 iii 的最小代价,显然: fi= 阅读全文
posted @ 2022-05-15 19:32 HappyBobb 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题意 一个 nnn 个元素的序列和一个双端队列,按顺序每次在前或后面插入每个 aia_iai​,求出插入完成后最小逆序对数量。 解法 比较容易的贪心。 贪心,就是局部最优导致全局最优。显然,每次插入 aia_iai​,计算在前面和后面插入造成的逆序对数量,取较小的累加即可。 手玩一下样例,发现是对的 阅读全文
posted @ 2022-05-13 16:48 HappyBobb 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题意 题目描述非常清晰。 思路 先考虑一个 O(n2)O(n^2)O(n2) 级别的算法,就是暴力枚举每个 aia_iai​,并对其向两边扩展,最坏情况 O(n2)O(n^2)O(n2),但是在随机数据下跑得非常快。 想办法优化。 显然,我们发现枚举次数过多,所以考虑尽量少枚举一些。 对于每个 ai 阅读全文
posted @ 2022-05-12 17:29 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题意 给定序列 aaa,以及两个数 c,tc,tc,t,求 ∑i=1n−c+1[(max⁡j=ii+c−1aj)≤t]\sum_{i=1}^{n-c+1} [(\max_{j=i}^{i+c-1} a_j) \leq t]∑i=1n−c+1​[(maxj=ii+c−1​aj​)≤t],即有多少个长度 阅读全文
posted @ 2022-05-08 10:54 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题意 给定 nnn 个数的序列 aaa,交换序列的任意两个数 kkk 次,求交换后最大子段和。 解法 考虑贪心。 因为 n≤200,k≤10n \leq 200, k \leq 10n≤200,k≤10,所以我们可以考虑平方级别的复杂度。 假设最终必须选区间 l,r(l≤r)l, r(l \leq 阅读全文
posted @ 2022-05-07 21:10 HappyBobb 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题意 带权值最长上升子序列。 解法 考虑 dp,和普通最长上升子序列一样,设 dpidp_idpi​ 表示以 iii 为结尾的最长上升子序列的权值和,则有 dpi=(max⁡j=1i−1{dpjhj<hi0hj≥hi)+hidp_i = (\max_{j=1}^{i-1} \begin{cases} 阅读全文
posted @ 2022-05-02 16:08 HappyBobb 阅读(5) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示