首页 > 其他分享 >CF1889C2. Doremy's Drying Plan (Hard Version)

CF1889C2. Doremy's Drying Plan (Hard Version)

时间:2023-10-30 10:35:32浏览次数:29  
标签:Hard Drying Doremy 决策 区间 维护 转移 dp

容易想到 dp:设 \(dp_{i,p}\) 表示前 \(i\) 天,强制第 \(i\) 天 dry,并且一共消除了 \(p\) 个区间的答案。

转移时可以考虑枚举前面的决策 \(j\),此时有转移方程:

\[dp_{i,p}=\max(dp_{j,p-w})+1 \]

其中 \(w\) 为满足 \(l\in(j,i],r\in[i,n]\) 的区间 \([l,r]\) 个数。

显然可以考虑套路动态维护随着 \(i\) 的移动,对于每个决策 \(j\) 的 \(w\) 值:考虑每次 \(i\to i+1\),我们都会干掉所有 \(r=i\) 的区间,加入所有 \(l=i+1\) 的区间。而转移时我们从 \(i\) 向前找,每找到一个区间左端点,\(w\) 就自增。而又由于 \(k\le 10\),故我们最多只需要找到 \(10\) 段 \(w\) 不同的决策。不妨开 \(k+1\) 个线段树分别维护对于每个 \(p\) 值,区间 dp 最大值,转移时线段树辅助查询转移即可。可以用 multiset 维护合法区间左端点。

总时间复杂度 \(O(nk\log n)\)。

动态维护状态对决策贡献。

标签:Hard,Drying,Doremy,决策,区间,维护,转移,dp
From: https://www.cnblogs.com/ydtz/p/17797208.html

相关文章

  • CF1889B. Doremy's Connecting Plan
    一开始不会先跳C了!差点满盘皆输!设\(i<j\),则\(i,j\)合并可以看作\(a_i\leftarrowa_i+a_j\)后删掉\(j\)!此时和初始局面本质相同!所以不妨先只看初始局面!不等式右侧和下标有关!显然若右侧\(i,j\)中只要有一个是\(1\),就会让右侧的值大幅减小!设\(1\)和\(i\)合并!则需满......
  • CF1890D Doremy's Connecting Plan
    Problem-1890D-Codeforces这个式子左边是加法,右边是乘法,很不好算但其实是降智题,不过同时也是我不擅长的找性质因为式子左边是加法而不是乘法,因此像类似于并查集那样求出当前每个联通块内\(\suma_i\)等价于固定一个点从这个点的联通块向外扩展。\(i\)越小越好......
  • shardingdb:支持分片和并发读写的 GoLevelDB
    概述shardingdb是一个开源包,旨在为GoLevelDB增加分片和并发读写功能。它可以作为LevelDB的替代品,方便地集成到现有项目中。本博客将介绍shardingdb及其功能,并介绍如何在您的项目中使用它。特点-分片支持:shardingdb使您能够将数据分布在多个LevelDB实例中,提高性能和可扩......
  • MyBatis-Plus和shardingsphere一起用。子查询取别名读取不到的问题。
    https://github.com/baomidou/mybatis-plus/issues/2585在使用MP和Shardingsphere的某些版本中,可能会出现join子查询表取别名之后,在where中用这个别名报错 Cannotfindownerfromtable.//重点是外层SQL不要出现*,不要使用别名,需要的字段都写清楚(内外层sql都要写清楚),......
  • CF1542E2 Abnormal Permutation Pairs (hard version) 题解
    AbnormalPermutationPairs(hardversion)两个限制:字典序小、逆序对大,一个显然的想法就是确保一对关系,统计另一对关系。确保哪一对呢?我们想了想,决定确保字典序小,因为字典序是可以贪心的。具体而言,我们考虑两个排列自第\(i\)位开始出现了不同。这样子,我们便将两个排列各自划......
  • 【前缀和优化 dp】CF1542E2 Abnormal Permutation Pairs (hard version) 题解
    CF1542E2首先时间复杂度肯定是\(\mathcal{O}(n^3)\)的。容易想到先枚举最长公共前缀,然后枚举\(p_{len+1}\)和\(q_{len+1}\),再枚举逆序对数进行统计。令\(f_{i,j}\)表示有\(j\)个逆序对的\(i\)阶排列的个数。易得转移\(f_{i,j}=\sum\limits_{k=\max(j-i+1,0)}^{j}f......
  • orchard core 搭建cms 加载其他模块的管理1
    有一个具体的例子:https://github.com/OrchardCMS/OrchardCore.Samples1、先使用教程,安装cms-可以是完全也可以是采用前后端分离管理。修改对应的program.cs的内容:`varbuilder=WebApplication.CreateBuilder(args);//Addservicestothecontainer.//builder.Service......
  • AtCoder Regular Contest 066 F Contest with Drinks Hard
    洛谷传送门AtCoder传送门下文令\(a\)为原题中的\(T\)。考虑若没有饮料,可以设\(f_i\)表示,考虑了前\(i\)道题,第\(i\)道题没做的最大得分。转移就枚举上一道没做的题\(j\),那么\([j+1,i-1]\)形成一个连续段。设\(b_i\)为\(a_i\)的前缀和,可得:\[f_i=\max\li......
  • CF1204D2 Kirk and a Binary String (hard version) 题解
    CF1204D2KirkandaBinaryString(hardversion)题解分析先来分析\(01\)串的最长不下降子序列。全是\(0\)显然是不下降的,如果中间出现一个\(1\),为了维护不下降的性质,后面就只能全是\(1\)。一句话概括一下,\(0\)后面能跟\(0,1\),\(1\)后面只能跟\(1\)。现在来分析这......
  • CodeForces 1882E2 Two Permutations (Hard Version)
    洛谷传送门CF传送门如何评价,模拟赛搬了一道,前一天晚上代码写了一半的题。考虑如何让操作次数最小。发现直接做太困难了。根本原因是,一次操作对序列的影响太大了。考虑做一些转化,减少一次操作对序列的影响。仍然先考虑一个排列怎么做。不知道为什么可以想到在排列前面添加特......