首页 > 其他分享 >CF1209E2 Rotate Columns (hard version) 题解

CF1209E2 Rotate Columns (hard version) 题解

时间:2024-08-09 20:16:33浏览次数:18  
标签:Rotate 题解 最大值 hard leq CF1209E2 dp

CF1209E2

给定 \(n \times m\) 的矩阵,可以对每一列进行若干次循环移位,求操作完成后每一
行的最大值之和的最大值。

\(1 \leq n \leq 12, 1 \leq m \leq 2000\)

  • 这里 \(m\) 很大,但有一个很重要的性质

  • 这 \(m\) 列中只有最大的前 \(n\) 个会对答案产生贡献

  • 因此我们直接就把 \(m\) 削到了 \(\leq 12\) 的范围

  • 这么小,当然可以状压啦

  • 设 \(dp_{i,S}\) 表示考虑了前 \(i\) 列数,集合 \(S\) 中的行的最大值已经确定,集合 \(S\) 中的最大值之和

  • 可以得到转移:

  • \[dp_{i,S} \leftarrow dp_{i-1,T} + \sum_{j \in S, j \notin T} a_{(j + \Delta)\mod n,i} \]

  • 总复杂度为 \(O(n3^n)\)

  • 这题的关键就在于,也许这么算的最大值会比真实答案要小,但正是因为原题要求最大值,我们可以直接忽略他的错误选择方式,因为最终获得的答案一定是合法解

标签:Rotate,题解,最大值,hard,leq,CF1209E2,dp
From: https://www.cnblogs.com/fox-konata/p/18351435

相关文章

  • 【题解】ABC365(A~E)
    前四题30min切,然后T5死磕70min+几发小唐错,距离比赛结束还有16s交最后一发,AC了。目录A.LeapYear题目描述思路代码B.SecondBest题目描述思路代码C.TransportationExpenses题目描述思路代码D.AtCoderJanken3题目描述思路代码E.XorSigmaProblem题目描述思路代码A.Lea......
  • CF908E New Year and Entity Enumeration 题解
    CF908E给定\(m\),令\(M=2^m-1\)。给定\(\{0,1,\cdots,M\}\)的大小为\(n\)的子集\(T\),定义集合\(T\subseteqS\subseteq\{0,1,\cdots,M\}\)是好的当且仅当:\(a\inS\Rightarrowa\oplusM\inS\)\(a,b\inS\Rightarrowa\and\b\inS......
  • 题解:CF1209E1 Rotate Columns (easy version)
    题目传送门题意给出一个\(n\timesm\)的矩阵,我们可以对每一列进行循环位移,不限次数,最后求每一行的最大值之和。\(1\leqn\leq4,1\leqm\leq100\)思路注意到\(n\)的范围很小,那么我们也可以缩小\(m\)的范围。正确的方案显然是取整个矩阵的前\(n\)大值,并且将它......
  • CF1647F Madoka and Laziness 题解
    CF1647F给定排列\(p\),将其划分为两个单峰子序列,求两个单峰子序列的峰的组合的情况数。\(2\leqn\leq5\times10^5\)首先要注意到一个非常常见的地方:两个单峰子序列中的一个的峰值一定在整个排列\(p\)的最大值处这个非常显然,但并不注意到他的重要性,容易被忽视为......
  • luogu题解:P10456 The Pilots Brothers' refrigerator【缺少 SPJ】
    思路此题题意酷似P10449.费解的开关。https://www.luogu.com.cn/problem/P10449不同之处便是状态连锁改变不同,但做法截然不同,此题是一个\(4\times4\)的矩阵。暴力枚举的复杂度是\(O(10^7)\),即\(2^{16}\times16\times16=16777216\),\(10^7\)的复杂度可以通......
  • P2901题解
    题目大意输出一张有向带权图前k短路的长度思路分析这是道k短路板子题我们可以用Astar算法来实现它OIwiki相关算法的网页简单来讲,Astar定义了一个估值函数f(x)=g(x)+h(x)g(x)表示由起点到达x点的路程(不一定是最短路),而h(x)则是终点到x点的最短路程这个估值函数可以预估从该......
  • Codeforces 165E Compatible Numbers 题解
    思路高维前缀和高维前缀和把数的二进制看成一个集合,二进制的每一位为\(1\)为全集\(V\)。根据题目描述,若两数\(a,b\)相容,则\(a\operatorname{and}b=0\),容易发现,\(b\in\complement_{V}a\),所以我们只需要用高维前缀和处理出\(\complement_{V}a\)的一个元素即可。......
  • ABC349D题解
    [ABC349D]DivideInterval题解传送门:luogu|atcoder题目简述给定非负整数\(l\)和\(r\)(\(l<r\)),令\(S(l,r)\)表示序列\((l,l+1,\ldots,r-2,r-1)\),其中包含从\(l\)到\(r-1\)的所有整数。此外,一个序列被称为“好序列”,当且仅当它可以表示为\(S(2^ij,2^{i}(j+1))\),......
  • AT_past202010_m 筆塗り 题解
    题目传送门前置知识线段树|树链剖分解法观察到要维护树上信息,且更改的呈链状,考虑进行树链剖分。将边权转化成点权,钦定边权给了深度更深的那个点,注意更新时不能更新\(\operatorname{LCA}\)。区间赋值和单点查询用线段树维护即可。代码#include<bits/stdc++.h>usingnam......