首页 > 其他分享 >11.19 CW 模拟赛 T3.又见 LIS

11.19 CW 模拟赛 T3.又见 LIS

时间:2024-11-20 16:18:22浏览次数:1  
标签:数列 T3 注意 LIS rm 考虑 CW dp

前言

老登你也知道你又在出 \(\rm{LIS}\)

算法

首先我们需要注意到, 本质上和随机了一个 \(1 \sim n\) 的排列没有任何区别
具体的, 任意一个 \(\rm{LIS}\) 数列, 都仅仅是由大小关系推过来的, 并且可以证明, \(\rm{LIS}\) 数列相同, 当且仅当大小关系完全相同

注意到这个之后(事实上我注意不到) , 我们可以拿到暴力的 \(20\%\)

先考虑全是 \(0\) 的情况
注意到 \(\rm{LIS}\) 的数列, 必须满足

\[a_1 = 1, a_i \leq \mathop{ \rm{max} }\limits_{j < i} (a_j + 1), a_i \geq 1 \]

用 \(dp_{i, j}\) 表示考虑了前 \(i\) 位, 其中 \(\mathop{ \rm{max} }\limits_{k < i} (a_k) = j\) 时可能性数量
转移是显然的 (注意最大值一次只能变化 \(1\))

\[dp_{i, j} = j dp_{i - 1, j} + dp_{i - 1, j - 1} \]

考虑 \(a_i\) 被指定的情况
有,

\[dp_{i, j} = dp_{i - 1, j} , j > a_i \]

\[dp_{i, a_i} = dp_{i - 1, a_i - 1} + dp_{i - 1, a_i} \]

现在我们需要考虑 \(a_i = -1\) 的情况
由于这一位不受关注, 我们直接填上最大的可能, 即

\[dp_{i, j} = dp_{i - 1, j - 1} \]

具体的, 只要填上最大的数, 后面所有的可能都可以被考虑到

时间复杂度 \(\mathcal{O}(n ^ 2)\)

代码

总结

一般来说, 可以将约束条件加入 \(\rm{dp}\) 柿子方便递推

这个题中, 关键信息是 : 最大值一次变化量最大为 \(1\)

积累一下, 思路确实非常好, 善于利用 \(\rm{Subtask}\) 推到正解

还是需要多联系 \(\rm{dp}\)

标签:数列,T3,注意,LIS,rm,考虑,CW,dp
From: https://www.cnblogs.com/YzaCsp/p/18558657

相关文章

  • 11.19 CW 模拟赛 T2.终端命令
    算法考场上想到了一些,但不多容易想到把相关的字符串全部加到字典树中然后操作只有两种嘛键盘输入按tab显然的,我们可以构造一颗\(\rm{trie}\)树,对于键盘输入,我们把\(\rm{trie}\)树上的点向其子节点连一条权值为\(1\)的点对于按tab的情况,分两种情况讨论......
  • 7、listener监听
    启动远程图形界面登录的工具[root@db11g~]#vncserver监听监听的启动[oracle@db11g~]$lsnrctlstart判断监听是否启动[oracle@db11g~]$netstat-tulnp|grep1521(Notallprocessescouldbeidentified,non-ownedprocessinfowillnotbeshown,youwould......
  • 即时通讯技术文集(第43期):直播技术合集(Part3) [共13篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 43 期。[-1-] 直播系统聊天技术(一):百万在线的美拍直播弹幕系统的实时推送技术实践之路[链接] http://www.52im.net/thread-1236-1-1.html[摘要] 直播弹幕指直播间的用户,礼......
  • 20241120 校内模拟赛 T3 题解
    题目描述给定一个数列\(A\),数列的元素取值范围为\([1,m]\)。请计算有多少个非空子区间满足以下条件:该区间内每个元素的出现次数都相同(没有出现的元素视为出现\(0\)次)。例如,当\(m=3\)时,\([1,2,3]\)和\([1,1,3,2,3,2]\)是满足条件的区间,而\([1,2,2,3]\)和\([1,1,3,3]......
  • WPF ListBox implement autoscroll via behavior extension and SelectedItem
    publicclassListBoxAutoScrollBehavior:Behavior<ListBox>{protectedoverridevoidOnAttached(){AssociatedObject.SelectionChanged+=AssociatedObject_SelectionChanged;base.OnAttached();}privatevoidAs......
  • 超详细的ArrayList扩容过程(配合源码详解)
    首先,在调用add方法的时候,会去调用ensureCapacityInternal方法,传入一个参数minCapacity大小是size+1,也就是现在我们需要的数组的最小的大小。在ensureCapacityInternal方法中,先判断一下elementdata是不是初始空数组是的话就把minCapacity变更为默认容量也就是10,和传进......
  • List集合按照由小到大排序或者由大到小排序
    @目录背景原代码由小到大排序由大到小排序背景原List<User>里面是无序的,比如从redis查找等情况,查出来的是无序的,现在想按照由小到大排序或者由大到小排序。原代码List<User>list=newArrayList<>();list.add(newUser(3,"c",newDate(1686402103000L),newDate(1688......
  • 李继刚Lisp提示词灵感之源:压缩推动进步
    前面在文章《访谈李继刚:从哲学层面与大模型对话》中提到,继刚总结去年写提示词的核心理念是“清晰表达”,而今年则是“压缩表达”,既而才有火爆全网的Lisp风格提示词呈现给大家。那么,为什么是压缩,或者说压缩表达的灵感来源是什么?从接下来的这篇文章中,我们可以对Lisp风格的提示词......
  • 11.19 CW 模拟赛 T1.谁开了小号
    算法嗯,和赛时做法也是没有一点相似之处,寄!挂个\(\rm{TJ}\)题解下载对于暴力,显然可以用\(\rm{dfs}\)实现,这种\(\rm{dfs}\)我还没有见过大概有个想法,每次有两种选择,要么新开集合,要么从前面加一个进去,大概就这样,也比较简单,剪剪枝小数据包过的正解做......
  • 11.19 CW 模拟赛 赛时记录
    看题\(\rm{T1}\)神tmzcy和jmr,what'sup至少看懂题了(雾)\(\rm{T2}\)也是看懂题了,怎么也应该比\(\rm{T1}\)难\(\rm{T3}\)这个类型的题\(100\%\)不会的呀看看能不能骗点算了\(\rm{T4}\)神秘计数,这个类型的题\(100\%\)不会的呀看看能不能骗点算了正序......