随笔分类 -  dp

摘要:一、题目 点此看题 二、解法 \(3300\) 的题啊,就差临门一脚了 \(...\) 直接做有点难,我们观察操作结构设计图论模型,因为这是相邻两个数配对的问题,那么如果两个数配对我们新建一个点表示它们配对后的数,然后把它们和新点连一条边,发现最后是一颗二叉树的结构。 定义某点的深度为从根到它向右走 阅读全文
posted @ 2021-08-13 10:33 C202044zxy 阅读(168) 评论(0) 推荐(0)
摘要:一、题目 点此看题 \(\tt H2\) 有点毒瘤,不是很想写。 二、解法 首先对原问题建出网络流图,我们把 \(S\) 连所有蓝色接口,\(T\) 连所有红色接口,矩形内的所有点也建出来,向四周连容量为 \(1\) 的无向边,然后对原图跑最大流就是答案。 这里补充一个小知识点,也就是网络流图怎么连 阅读全文
posted @ 2021-08-10 15:59 C202044zxy 阅读(761) 评论(0) 推荐(0)
摘要:一、题目 点此看题 这么简单的去重我竟然没想到,我是个哈批。 二、解法 首先有一个显然的 \(dp\),依次加入 \(1\) 到 \(i\),每次考虑逆序对的增量: \(dp[i][j+k]\leftarrow dp[i-1][j] \ \ \ k\in[0,i)\) 这个可以用前缀和优化,时间复杂 阅读全文
posted @ 2021-08-09 11:47 C202044zxy 阅读(296) 评论(0) 推荐(0)
摘要:一、题目 点此看题 洛谷的题目据说是转化过的,但是原来的题面太长我真不想看了。 二、解法 显然是两类元素问题,那么我们以白边为主,考虑原图会形成若干个置换环。 那么环内部是不能有任何白边的,然后我们把环当成点,不难发现问最后能形成多少个 \(\tt DAG\) 补充:\(\tt DAG\) 计数是一 阅读全文
posted @ 2021-08-08 22:44 C202044zxy 阅读(332) 评论(0) 推荐(1)
摘要:一、题目 点此看题 二、解法 理解本题给出序列的方式很重要,我们把它放在坐标轴上,那么我们枚举一个转折点,然后找它后面最高的转折点,求最大差值就可以求出最长上升子序列长度,关键在于求出子序列个数。 不难发现不同的最低点和最高点组合范围一定不交,如果相交可以通过调整获得更优解,所以每一段可以单独处理。 阅读全文
posted @ 2021-08-07 20:16 C202044zxy 阅读(590) 评论(0) 推荐(0)
摘要:一、题目 点此看题 二、解法 首先观察到一个条件 \(0\leq x_{i,j}\leq m\),结合 \(x_{i,j}<x_{i,j+1}\),我们可以用缺少的数来表示一行的状态。 再考虑限制 \(x_{i,j}<x_{i-1,j+1}\),设 \(a_i\) 为第 \(i\) 行缺少的数,手玩 阅读全文
posted @ 2021-08-05 21:10 C202044zxy 阅读(415) 评论(2) 推荐(0)
摘要:一、题目 点此看题 二、解法 真是第一次见,这是一道 \(dp\) 维护直线函数的题。 设 \(x_i=X\ \%\ a_1\ \%\ a_2\ ...\% \ a_i\),如果 \(x_i>0\),那么 \(X\) 减 \(1\) 时 \(x_1,x_2...x_i\) 必定减 \(1\),考虑到 阅读全文
posted @ 2021-07-30 21:39 C202044zxy 阅读(301) 评论(0) 推荐(0)
摘要:一、题目 点此看题 二、解法 身为一个正常人拿到这道题,最难解决的是数出现偶数次的限制,那我的逻辑是放数,但是发现 \(dp\) 不动。 其实是 \(dp\) 主体选错了,我们直接选集合为 \(dp\) 主体,设 \(f[i]\) 表示考虑前 \(i\) 个集合的方案数。 这就是天才的逻辑,就像科比 阅读全文
posted @ 2021-07-29 15:31 C202044zxy 阅读(477) 评论(1) 推荐(0)
摘要:一、题目 点此看题 二、解法 首先我们考虑值域序列上决策,每个位置放 \(0/1\),要求任意两个 \(1\) 之间的距离不能是 \(x/y\),由于 \(n\) 很大但是 \(x,y\) 很小,可以猜测 \(x+y\) 是原序列的一段循环节,也就是这一段的最优解可以通过复制得到 \(n\) 的最优 阅读全文
posted @ 2021-07-29 11:01 C202044zxy 阅读(524) 评论(2) 推荐(0)
摘要:这场题质量真的高,我愿称之为 \(\tt Atcoder\ Regular\ Counting\ 124\) E.Pass to Next 题目描述 点此看题 人和人是不能一概而论的,因为 \(\tt zxy\) 不知道想了多久的问题被小减一语道破天机。 \(n\) 个人排成一个环玩传球游戏,第 \ 阅读全文
posted @ 2021-07-27 19:57 C202044zxy 阅读(323) 评论(0) 推荐(0)
摘要:一、题目 点此看题 二、解法 首先把要求的东西翻译一下,其实就是找到一个 \(x\geq 0\),使得下列式子最小: \(\sum cnt(x+\max a-a_i)\) 其中 \(cnt(x)\) 表示 \(x\) 二进制位中 \(1\) 的个数,为了方便我们使 \(a_i\leftarrow\m 阅读全文
posted @ 2021-07-26 16:48 C202044zxy 阅读(434) 评论(0) 推荐(2)
摘要:一、题目 点此看题 二、解法 不得不说 \(\tt construction\ force\) 的 \(dp\) 题质量确实高,而且我敲出来调都没调,开心$\sim$ 首先看这道题就很好贪心,因为每个游戏可以多次打,所以一旦有激活机会后一定会一直打期望收益最大的那个关卡。记 \(m=\max b_i 阅读全文
posted @ 2021-07-24 16:05 C202044zxy 阅读(409) 评论(0) 推荐(1)
摘要:一、题目 点此看题 二、解法 考虑 \(dp\),首先选定 \(dp\) 主体,因为每个点有向左倒和向右倒两个状态,我们的主要目的是对这两个状态进行规划。设 \(dp[i]\) 表示考虑到 \(i\) 能覆盖的最大前缀,这样以前的状态既可以遗留问题(没填满),也可以帮助后面解决问题,但它的本质还是对 阅读全文
posted @ 2021-07-24 10:46 C202044zxy 阅读(910) 评论(1) 推荐(6)
摘要:一、题目 点此看题 二、解法 首先根据农民伯伯都会的排序不等式(因为他们知道把最好的菜种进最好的地里),贪心策略是把人和马都按照权值大小排序,然后对应位相乘求和就行了,不难证明这是最优的匹配方案。 但是因为本题有第 \(i\) 个人不能和第 \(i\) 匹马配对的限制,所以说不一定取得到最优方案。这 阅读全文
posted @ 2021-07-23 22:14 C202044zxy 阅读(638) 评论(0) 推荐(2)
摘要:一、题目 点此看题 二、解法 其实这题挺难的,而且我觉得网上的题解讲的有点不清楚 \(...\) 看到题目要求的是 \(f(x)^k\) 并且 \(k\leq 200\),搞一个傻逼斯特林反演即可: \(\sum_{x}f(x)^k=\sum_x\sum_{i=1}^k S(k,i)\cdot i! 阅读全文
posted @ 2021-07-22 09:55 C202044zxy 阅读(443) 评论(0) 推荐(0)
摘要:一、题目 点此看题 二、解法 设 \(dp[i][j]\) 表示 \(j\) 时间走到 \(i\) 需要花费的最小期望钱数。 区别于随机游走问题,对于某状态 \(dp[u][j]\),需要决策一个后继节点 \(v\): \(dp[u][j]=\min_v(\sum_k dp[v][j+k]\time 阅读全文
posted @ 2021-07-20 22:19 C202044zxy 阅读(287) 评论(0) 推荐(0)
摘要:D.Inc,Dec-Decomposition 题目描述 点此看题 给一个长度为 \(n\) 的 \(A\) 序列,试构造单调不降的 \(B\) 和单调不增的 \(C\),满足 \(a_i=b_i+c_i\) 并且最小化代价: \(\sum_{i=1}^n|b_i|+|c_i|\) \(n\leq 阅读全文
posted @ 2021-07-20 16:41 C202044zxy 阅读(202) 评论(6) 推荐(0)
摘要:操作 题目描述 点此看题 解法 分裂有点难,但是发现分裂第一堆石子就相当于合并第二堆石子,问题就转化为两堆石子都能合并,最后达到相同的状态。 全部合并成一堆石子答案是 \(n+m-2\),考虑第一堆石子的某个子集和跟第二个子集的某个子集和相等,答案就能减少 \(2\),那么设计 \(dp[s]\) 阅读全文
posted @ 2021-07-19 17:10 C202044zxy 阅读(181) 评论(0) 推荐(0)
摘要:一、题目 点此看题 二、解法 首先选子树为 \(dp\) 主体,但是考虑没有时间做不动,我们假设子树 \(u\) 是在时间 \(i\) 被断开的,也就是断开操作是由于 \(u\) 的祖先引起的。设 \(dp[u][i]\) 表示子树 \(u\) 在 \(i\) 时间内被断开最后能得到的最大果汁,转移 阅读全文
posted @ 2021-07-16 22:52 C202044zxy 阅读(221) 评论(0) 推荐(0)
摘要:一、题目 题目描述 有 \(n\) 个点排成一列,相邻两个点之间连边,\(i\) 到 \(i+1\) 的双向边代价是 \(a_i\),转向的代价是 \(a_0\),现在我们想选出 \(m\) 个点,可以构成若干个回路,每个点最多被选一次,起点也算一次转向,试最大化代价。 比如选出的点是 1,3,2, 阅读全文
posted @ 2021-07-15 20:46 C202044zxy 阅读(1382) 评论(8) 推荐(2)