技巧总结

一、某动规题目

题意:

一共有n个物品,选定每个物品有得分,并且有m个关系使得选取给定的两种物品有额外得分,选取k个物品使得得分最大。(某种物品最多跟其他两种物品有额外得分)

n<=2000,m<=2000,k<=n


初步解析:

如果我们直接设f[i][j]表示前i个物品里选j个并且选取了i的最大得分。

我们发现有一种情况无法更新。

即如果第i个物品与第i-2个物品有额外得分的话,那么我们只能在选取第i-2个物品时来加上这个额外得分。

但是在第i-1个物品的状态里,可能选取了第i-2个物品,也可能没有选取第i-2个物品,这个时候我们无法记录是否应该加上这个额外得分,并且这种更新是不成立的,因为你当前选取某物品之后是对未来的决策具有影响的。


正确解法

我们注意到上面的解法里并没有用到题里的给定条件,即每个物品至多与两个物品有绑定关系。

显然可以发现这种绑定关系是一条链。

所以我们可以把所有的物品重新排序。

即按照链的顺序排列所有的物品。

(不妨把关系(i,j)看做物品i到物品j的一条边,i<j)

这样的话对于某物品i,如果有一个物品连向他,那么连向他的这个物品的新编号一定是i-1。

这样的话,继续套用上述DP方程,f[i][j]表示前i个点选取j个并且选i的最大得分。

那么显然

f[i][j]=max(max(f[k][j?1])(k<=i?2),f[i?1][j?1]+map[i?1][i])+val[i]

这样的话就完美避免了上述我们无法确定先前的状态是否选取了连向该点的点的情况。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-14 18:45:49

技巧总结的相关文章

微信公众平台的最新功能详细介绍与使用技巧!

近日微信官方发布消息,微信公众平台的操作进行了又一次"感天动地"的更新 且听我一一道来 本次主要重要改(Geng)革(Xin)凸显在三个地方 改(Geng)革(Xin)一:图文模版的收藏与使用 这,真的是一个超级实用的功能呀,那么如何使用呢?在哪里找呢? 首先告诉大家,如何收藏图文模板 选中编辑区的部分或者全部素材,然后点击添加模版,图文模板即可收藏成功: 当然,你还可以从外部进行粘贴和复制内容到图文模版. 那么,在哪里找到我收藏的模版呢?? 嗯,就在添加图文模版的旁边啦! 同时,你还

好用不需多说的微信公众号实用技巧,一起来叨叨!

至此军训之际,太阳大大当空照,火热的阳光真是好! 小编的心情也是非常的好,想一想那么多嗮黑了,饿瘦了的小学妹们,终于可以显的我好白好白啦(不是白胖白胖)! 白白瘦瘦的我现在比较容易紧张,一紧张我就...喜欢装逼... 装逼我就想到了微信,想到了微信就忍不住和大家叨叨几个超级牛逼的技巧(⊙o⊙) 牛逼的技巧一:图文封面图的获取 不知道大家是否知道如何获取,如果这个图文的封面图比较的符合你的气质,这个时候你就需要下面这样子做了 首先,在电脑上的浏览器打开文章,右键点击查看源代码 然后,点击[Ctrl

【精品】北京赛车计划冠军定位玩法技巧

車車是一種投資,我們的目標是:細水長流,見好就收,不求日金千金,只求長期穩定!許多人賠本的原因:1. 資金不足,卻大把下注,跟到第4期不出,錢不夠了,心慌了.有人孤注一擲,衝到第5期中了,嚇的半死.有人不敢跟,第5期出號了,氣死, 然後再跟新計劃,沒錢了,郁悶死.這兩種做法都不對,既然是以投資的心態做事,就應該計劃好翻倍的本錢,做到99%的穩賺,狀況不對就要及時止損. 看著連續中,就是不敢跟,最後咬牙跟了,馬上挂了.于是開始哭,我運氣咋這麽差.不買就中,一買就挂.相反,有些人專門等挂,一挂就上,

店铺淘客如何做到单店利润过万的个人实战技巧

大家都对店铺淘客挺感兴趣的吧,所以我就分享一些细节,还有如何批量化操作的,平时比较忙,所以之前早就说写文章的,现在才来写.还有其中有很多也是商业机密,大家也都不愿意分享.这次我是毫无保留的分享给大家了.说的都是实操经验,所以对没有操做过这个项的听起来或许有难度,但是对准备入行,或者已经在操作的朋友至少少让大家摸索两个月的时间,好了也就不废话多说了吧. 先来简单介绍一下店铺淘客是怎么操作的 首先我们需要开一个淘宝店铺,然后用我们的的采集上货软件,最后只用坐等成交,坐等收成就可以,简单说一下大家也许

做预解释题的一点小方法和小技巧

在JavaScript中的函数理解中预解释是一个比较难懂的话题.原理虽然简单,寥寥数言,但其内涵却有深意,精髓难懂.如何在轻松活跃的头脑中将它学会,现在针对我在学习中的一点小窍门给大家分享一下,希望能给大家一些帮助: 万事需遵循"原理"--"预解释"无节操和"this"指向:(可先看例题解析然后结合原理进行学习) (感谢蕾蕾老师给归纳的预解释无节操原理:) 如果函数传参数则先于以下执行,就相当于在函数私有作用域下var了一个变量:根据作用域原理,

Android 代码混淆之部分类不混淆的技巧

在编写Android程序之后,我们通常要代码进行混淆编码,这样才能保证市场上我们的应用不会被别人进行反编译,然后破解,所以此时需要在发布正式版本的时候,有一些类事不能混淆的,比如实现了 Serializable 接口的,否则反序列化时会出错,这种情况下,我们可以简单的通过在proguard.cfg(Eclipse)添加配置来解决: -keepnames class * implements java.io.Serializable -keepclassmembers class * implem

Windows 操作小技巧 之一(持续更新)

1.图片批量旋转 通常携带单反去景点排了大量照片回来处理图片时都会遇到很多横竖杂乱排序的图片难以处理的情形.现提供如下技巧进行处理. 1).在文件夹中添加“方向”的排列或分组选项: 2).选择需要进行旋转的全部图片进行批量顺时针旋转或逆时针旋转(取决于图片方向)

技巧-Linux内核参数调整办法

技巧 -Linux内核参数调整办法 ulimit设置 ulimit -n 要调整为100000甚至更大. 命令行下执行 ulimit -n 100000即可修改.如果不能修改,需要设置 /etc/security/limits.conf,加入 * soft nofile 262140 * hard nofile 262140 root soft nofile 262140 root hard nofile 262140 * soft core unlimited * hard core unli

SQL优化技巧

我们开发的大部分软件,其基本业务流程都是:采集数据→将数据存储到数据库中→根据业务需求查询相应数据→对数据进行处理→传给前台展示.对整个流程进行分析,可以发现软件大部分的操作时间消耗都花在了数据库相关的IO操作上.所以对我们的SQL语句进行优化,可以提高软件的响应性能,带来更好的用户体验. 在开始介绍SQL优化技巧之前,先推介一款数据库管理神器Navicat,官网:https://www.navicat.com.cn/whatisnavicat Navicat是一套快速.可靠和全面的数据库管理工

异常设计及相关技巧

一.嵌套异常的3种情况: 1.含except的嵌套: 就近原则:发生异常时,会被离发生异常的最近地方except捕获并拦截, 异常一旦被except捕获,就死了,这个异常的生命就终结了, 不会向上层的try,再做传递,同时执行就近的try后面的语句. 样例: 2. 含try/finally的嵌套: 异常会传递:异常会向上层嵌套或调用的try传递,直至传递到默认异常 处理器,打印出异常信息 样例: 3. 即含except又含finally的嵌套: 二.异常的几种用法: 所有的错误都是异常,但并不是