首页 > 其他分享 >中高等DP总结(更新中

中高等DP总结(更新中

时间:2023-02-14 22:11:05浏览次数:46  
标签:总结 limits 高等 题意 个人 sum DP 关键点

1.CF613D Kingdom and its Cities

题意:给定一棵树,每个询问给出一些关键点,要求删掉最少的点使这些点两两不联通,无解输出-1。

思路:先判无解:只要有一个关键点的父亲也是关键点就无解。因为会被删除的点肯定是这些点中一些点的\(lca\),所以考虑建虚树,然后树形DP。具体来讲,设\(g_x\)表示当前有没有关键点与\(x\)直接联通(若\(x\)为关键点则\(g_x=1\)),\(f_x\)表示点\(x\)的答案。转移时先\(f_x=\sum\limits_{y\in son(x)}f_y\),然后根据\(x\)是否是关键点与\(\sum\limits_{y\in son(x)}g_y\)的值(设为\(sum\))分类讨论:

1.\(g_x=0\):
如果\(sum>1\)那就将点\(x\)删去,\(f_x++\);
如果\(sum=1\)那就将\(g_x=1\)
如果\(sum=0\)自然不变

2.\(g_x=1\)那与\(x\)联通的点都得删,\(f_x+=sum\)

最后\(f_1\)就是答案,复杂度\(\sum n\times\log(\sum n)\)

2.P2519 [HAOI2011]problem a

题意:一次考试共有\(n\)个人参加,可能出现多个人成绩相同的情况。第\(i\)个人说:“有\(a_i\)个人成绩比我高,\(b_i\)个人成绩比我低。”请求出最少有几个人没有说真话。(其实这就是原题面,这么简洁那我不直接复制过来)

思路:(十分人类智慧,不知道是怎么想出来的)首先定义一个人的排名是严格高于他的人数加1,然后就可以把每个限制改成:“我是第\(a_i+1\)名,算上自己共有\(n-a_i-b_i\)个人与我同分”,然后变成区间\([a_i+1,n-b_i]\)表示与第\(i\)个人分数相同的区间,并把这个区间的权值定义为区间长度与所有\(a_j=a_i+1,j=n-b_i\)的\(j\)的个数的较小值。然后我们就把问题转化成了要选出若干不交的区间,最大化权值和。

我们发现,对\(f_i\)做贡献的\(j\)要满足\(r_j<l_i\),因此将所有区间按\(r\)排序后\(j\)就是一个前缀的形式,转移时二分出最大的\(j\),再维护一个前缀最大值即可完成转移。复杂度\(nlog(n)\)

3.P6047 丝之割

题意:有若干条形如\((u,v)\)的弦,可以进行若干次操作,每次操作选定\((i,j)\),会切断所有满足\(u>i,j<v\)的弦会被破坏,代价为\(a_i\times b_j\),求破坏所有弦的最小代价。

思路:斜优裸题(只可惜第一步没想出来)先考虑那些弦不会做贡献,很容易发现如果有两个弦\(i,j\)满足\(u_j>u_i,v_j<v_i\)那么如果要删弦\(i\)就一定会同时删弦\(j\),那么弦\(j\)就不做贡献。当我们把所有不做贡献的弦\(j\)删去后,就不会存在一条弦的\(u\)大于另一条弦的\(u\)而\(v\)较小,换而言之就是弦的\(u,v\)都是单增的有了这个性质就很好DP了。

设\(f_i\)为破环前\(i\)个弦的最小代价,转移方程为\(f_i=\sum\limits_{j=1}^{i-1}f_j+min(\)

标签:总结,limits,高等,题意,个人,sum,DP,关键点
From: https://www.cnblogs.com/Xttttr/p/17120970.html

相关文章

  • 通过HH8WilEdit学习WIL 文件编码 5 delpic, outpic, AddOne, AddPic 文件单元
    unitmain;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,SUIForm,SUIButton,StdCtrls,SU......
  • 2023/2/14 考试总结
    7.30~7.40看题,T3是题答,感觉还很典。7.40~8.20糊了个T3的构造,感觉还挺对。8.20~9.40写T1,二分+长剖看起来很好写,但是过不掉。发现可以在长剖的过程中记录上一次修改的......
  • java面试总结
    java基础为什么java中只有值传递?java中基本类型是通过copy传递值的,引用类型是通过copy引用传递的,所以java中只有值传递。java序列化java不建议使用自带序列化Serializ......
  • 开学测试总结
    新学期的开学测试已经过去了,但是成绩却不甚理想。很多功能都没有成功做出来。究其根本,应当是我在寒假时懈怠了。寒假期间未曾学习新知识,复习老知识。经过这次测试,我理解......
  • HTML5+CSS3(六)-全面详解(学习总结---从入门到深化)
    目录​​CSS简介​​​​ CSS概念​​​​为什么需要CSS​​​​CSS和HTML之间的关系​​​​ 语法​​​​学习效果反馈​​​​ CSS的引入方式​​​​ 内联样式(行内......
  • drf的总结与前端vue框架了解
    drf的总结与前端vue框架了解一、drf知识点整合1、drf入门及规范#1drf入门规范-前后端分离模式-前后端混合-postman-restful规范-drf:django......
  • 2012总结--第10篇--工作篇
    3月到5月实习期间,完成了A项目的一个模块。更多信息,请参见实习期间遇到的5大问题及解决方案。好几次比较激动,最不淡定的一段工作。6月毕业到正式入职期间,看书,写代码,看......
  • Thread使用总结(1)——Runnable和Thread的区别是啥
    问题背景 在日常安卓开发和学习过程中,我们很可能习惯性地选择Runnable或Thread之一直接使用,那么问题来了,Runnable和Thread的区别是啥?一般来说这二者就是接口和类的区别。......
  • 2012总结--第1篇--技术篇
    以广度与深度并重为核心指南!1.语言1.1深入学习Java。1.2复习C++,Linux系统下写了几个小程序。大致阅读了一遍《C++Primer》。1.3了解了Python,在Windows平台写了......
  • 2012总结--第9篇--价值观篇
    自己也不小了,转眼间1/3左右的人生已经过去。是该给自己立点规矩,适度地约束自己的言行举止了。无论自己是迷茫时,或是得意时,都能有所选择!1.责任努力奋斗,自立自强!1.1父......