首页 > 其他分享 >题解:CF1767E Algebra Flash

题解:CF1767E Algebra Flash

时间:2024-09-13 09:35:28浏览次数:1  
标签:code le 题解 Flash 40 right CF1767E left

可以在 cnblogs 中阅读。

\(m \le 40\) 的数据范围提示让我们往颜色种类上考虑。

由题每次可以跳 \(1\) 或 \(2\) 格,即存在一条从 \(1\) 到 \(n\) 的路径的充要条件是不存在两个相邻的未激活格。换句话说,对任意两个相邻的格子都必须选择至少一个激活。

任意两个,至少一个,这样的条件使我们联想到最小权点覆盖,我们在 \(1\) 号和 \(n\) 号连自环,其他点相邻的颜色连边,问题转化为求这个图的最小点覆盖。

一个经典结论是最大权独立集 + 最小权点覆盖 = 点权和。最大权独立集可以用记忆化搜索的方式实现。

具体地,设 \(f_S\) 表示集合 \(S\) 的最大权独立集,则有转移:

\[f_S = \max \left\{ f_{S- \left\{ p \right\} },f_{S- \left\{ p \right\} -edge(p)} \right\} \]

其中 \(p\) 表示集合中一个点,\(edge(p)\) 表示与 \(p\) 有连边的点集。

但是 \(m \le 40\),怎么开的下?用 std::map 等工具可以动态开记忆化数组,而状态数的转移满足 \(G(m) \le G(m-1)+G(m-2)\),最劣情况下是一个斐波那契数列,也就是说 \(G(m) \le O(1.618^m)\),\(m=40\) 时在 \(2 \times 10^8\) 的级别,而实际上远远跑不满,时间空间都可以接受。

code,使用 __pbds::gp_hash_table 可以跑得更快。

实际上还有一种做法,就是对高 \(20\) 位爆搜,低 \(20\) 位记忆化,这样做保证了复杂度是 \(O(n+2^ \frac{m}{2})\),而且避免了开 map 等时空消耗大的操作,实测也跑得更快。

code

标签:code,le,题解,Flash,40,right,CF1767E,left
From: https://www.cnblogs.com/tai-chi/p/18411625

相关文章

  • 洛谷P10504 守卫者的挑战 题解 概率DP
    题目链接:https://www.luogu.com.cn/problem/P10504状态\(f_{i,s,k}\)表示:当前正面临第\(i\)项挑战(此时第\(1\simi-1\)项挑战已完成,第\(i\)项挑战还没开始);目前已经挑战成功了\(s\)项(即第\(1\simi-1\)项挑战中共有\(s\)项挑战成功,\((i-1)-s\)项没挑战成功);......
  • [ARC101E] Ribbons on Tree 题解
    [ARC101E]RibbonsonTree题解其实算一道好题了。首先考虑不相关的simple的dp。平凡的想法是设\(dp_{i,j}\)表示\(i\)子树内有\(j\)个点还需要向上转移的方案数。转移式大概是个\(dp_{x,i+j}=dp_{y,i+j-1}+(dp_{p,i-1}+dp_{q,j-1})\)之类的东西。这样的dp是\(O(......
  • 题解 力扣 LeetCode 105 从前序与中序遍历序列构造二叉树 C/C++
    题目传送门:105.从前序与中序遍历序列构造二叉树-力扣(LeetCode)https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/每次在中序遍历序列片段中找到前序遍历序列队首,这是该层的根节点该位置左侧是左子树,右侧是右子树再......
  • P3267 [JLOI2016/SHOI2016] 侦察守卫 题解
    P3267[JLOI2016/SHOI2016]侦察守卫题解\(n\le5\times10^5,D\le20\)的数据范围显然想到\(O(nd)\)的树形dp。考虑\(d\)这一维的状态设计。考虑\(i\)子树中的情况分为全部被覆盖和未全部被覆盖两种。对于第一种,显然我们要考虑子树中能向上覆盖影响的点的个数,于是设......
  • P11030 『DABOI Round 1』Blessings Repeated题解
    P11030『DABOIRound1』BlessingsRepeated题解【形式化题意】给定一个正整数\(k\)和两个字符串\(S,T\)。设字符串\(s\)为\(k\)个字符串\(S\)首尾相接得到的字符串,\(n=\verts\vert,m=\vertT\vert\)。设答案集合\(P=\{(i_0,i_1,\dots,i_{m-1})\mid0\lei......
  • CTS2024 题解
    \(\text{ByDaiRuiChen007}\)D1T1.水镜ProblemLink给定\(a_1\sima_n\),求多少个\([l,r]\)满足存在实数\(L\),将若干个\(a_i\)变成\(2L-a_i\)后\(a_l\sima_r\)严格递增。数据范围:\(n\le10^6\)。考虑钦定\(i-1\)翻转/不翻转,\(i\)翻转/不翻转,容易发现......
  • 【题解】Solution Set - NOIP2024集训Day27 树形 dp
    【题解】SolutionSet-NOIP2024集训Day27树形dphttps://www.becoder.com.cn/contest/5521「HDU4661」MessagePassing「BZOJ3935」Rbtree「ARC101E」RibbonsonTree「AGC034E」CompleteCompress「COCI2014.10」Kamp「SCOI2015」小凸玩密室「AGC008F」Black......
  • 通过打包 Flash Attention 来提升 Hugging Face 训练效率
    简单概述现在,在HuggingFace中,使用打包的指令调整示例(无需填充)进行训练已与FlashAttention2兼容,这要归功于一个最近的PR以及新的DataCollatorWithFlattening。它可以在保持收敛质量的同时,将训练吞吐量提高多达2倍。继续阅读以了解详细信息!简介在训练期间,对小......
  • <<编码>> 第 4 章 手电筒剖析(Anatomy of a Flashlight) 示例电路
    简单灯泡电路info::操作说明鼠标单击按钮开关切换开合状态另:黄色小点为电流,后同.可通过“菜单–选项–显示电流”控制是否显示primary::在线交互操作链接https://cc.xiaogd.net/?startCircuitLink=https://book.xiaogd.net/code-hlchs-examples/assets/circ......
  • LOJ4222 「IOI2024」马赛克上色 题解
    题目描述给定长为\(n\)、下标从零开始的\(01\)序列\(x,y\),保证\(x_0=y_0\)。令\(col_{0,j}=x_j,col_{i,0}=y_i\),对\(\forall1\lei\ltn,1\lej\ltn\),\(col_{i,j}=[col_{i-1,j}=0\andcol_{i,j-1}=0]\)。\(q\)次询问,给定\(u,d,l,r\),求\(\sum_{i=u}^d......