动态规划
文章平均质量分 86
WedsonLin
这个作者很懒,什么都没留下…
展开
-
牛客IOI周赛23-普及组 /D(序列dp)
牛客IOI周赛23-普及组 /D(序列dp)题目题面:小L喜欢数和数列。小L称a1…ana_1…a_na1…an这些数为优秀的。小L称一个序列b1…bmb_1…b_mb1…bm为好的当且仅当:1.对于任意的 i(1≤i<m)i (1 \leq i <m)i(1≤i<m),满足 bi<bi+1b_i<b_{i+1}bi<bi+1。2.对于任意的 i(1≤i<m)i (1 \leq i <m)i(1≤i<m),满足 gcd(bi,bi+原创 2021-03-06 13:20:07 · 182 阅读 · 0 评论 -
UVA 1412 Fund Management (复杂状态的DP,状态池)
UVA 1412 Fund Management (复杂状态的DP,状态池)受到前面题目的影响,一开始的思路是用d(i,s)表示经过第i天后,选择了集合s里面的股票的当前最大现金。但是发股票可以选多手,根本无法用集合表示。由于每只股票的可持有的手数为(0<=ki<=8),最多有8只股票,所以表示当前手持股票资产的理论状态数最多有98<5*107种,但是由于还有一个持有总手数k的最大限制,实际状态数将远远低于这个值。实际状态数<1.5e4(我也不知道为什么)所以用d(i,p)表示原创 2020-08-15 18:06:18 · 231 阅读 · 0 评论 -
UVA 1252 Twenty Question (集合DP,时间优化)
UVA 1252 Twenty Question (集合DP,时间优化)用d(s,a)表示当前状体,集合s表示已询问的特征,集合a表示已询问的特征里面属于目标物w的特征,则集合a一定位s的子集。每一次询问对应着状态的转移,则可得到状态转移方程:d(s,a)=min(d(s,a),max(d(s+k,a+k),d(s+k,a))+1) ,k表示询问的特征。当有且仅有一个物体满足a集合中的所有特征,而不满足{s}-{a}中的所有特征,那么此时d(s,a)=0。有二项式定理可以得知,状态数有O(3m)个原创 2020-08-14 17:17:41 · 147 阅读 · 0 评论 -
UVA 10817 Headmaster‘s Headache(最优配对问题,DP,状态压缩)
UVA 10817 Headmaster’s Headache(最优配对问题,DP,状态压缩)题目大意:有m个在校老师,n个求职者,s个课程,给出每个人的工资和授课集合,在校老师必须聘请,每个课程匹配至少两名老师,求最少工资开销。咋一看,我的思路是用d(i,S)表示考虑前i个课程和集合S中的教师和求职者完成配对的最少工资开销,然后发现不行,状态转移表示不出来,而且集合无法用二进制表示。参考了紫书上的分析,我发现我还是太年轻了。紫书上用d(i,s1,s2),表示考虑了前i个人,集合s1表示当前状态有且仅原创 2020-08-12 13:27:07 · 249 阅读 · 0 评论 -
UVA 1218 Perfect Service (树上 DP)
UVA 1218 Perfect Service (树上 DP)本题的状态数较多,一个节点有三种状态表示(一开始我只想到两个):0、该节点不是服务器,该节点的父节点也不是服务器1、该节点是服务器。2、该节点不是服务器,该节点的父节点是服务器对于着三种状态,分别用d(u,0),d(u,1),d(u,2)表示对于以上三种状态进行分析,并写出状态转移方程1、对于第一种状态,则子节点里有且仅有一个为服务器。需要枚举每一个子节点为d(v,1),把其他子节点的d(v,0)相加。如果在每次枚举时进行计算,那原创 2020-08-10 11:54:18 · 104 阅读 · 0 评论 -
UVA1331 Minimax Triangulation (区间DP)
UVA1331 Minimax Triangulation (区间DP)本题属于最优三角剖分问题,用dp(i,j)表示在编号为i的顶点和编号为j的顶点间的最大三角面积的最小值。这样我们就可以得到状态转移方程dp(i,j)=min(max(dp(i,k),dp(k,j),S(i,k,j))),其中i<k<j知道三角形的三点坐标,可以用向量叉乘来求面积;知道三角形的三边长,可以用海伦公式求面积;本题需要注意的地方是,需要判断i-j是否是多边形的对角线(除了i=1且j=n的情况),我们可以原创 2020-08-07 17:25:22 · 168 阅读 · 0 评论 -
UVA 10003 Cutting Sticks (区间DP+四边形不等式)
UVA 10003 Cutting Sticks (区间DP+四边形不等式)这题是一个典型的区间DP的问题,用dp[i][j]表示区间i-j内的最优解,最终的答案是dp[0][n+1]状态转移方程为:dp[i][j]=min(dp[i][k]+dp[k][j]+该区间的木棍长度,dp[i][j])如果仅仅是区间DP,状态量为O(n2),每个状态的决策有O(n)个,则总的时间复杂度为O(n3)。如果通过四边形不等式优化状态的决策,可以将时间复杂度降低为O(n2)。使用四边形不等式的前提:1、d(原创 2020-08-05 16:59:28 · 205 阅读 · 0 评论 -
UVA1625 Color Length(线性DP
UVA1625 Color Length(线性DP)类似于LCS问题,可以用dp[i][j]来表示已选择序列1前i项和序列2前j项的最小目标函数值L( c )。显然,dp[0][0]=0;因为在选序列1第i个项的前提是前i-1个项必须被选择,序列2同理。所以dp[i][j]仅可能从dp[i-1][j]和dp[i][j-1]两种状态转移而来。对目标函数的处理,借鉴紫书上的方法:当把一个元素放到最终序列的时候,递增“已经出现但还未结束”的颜色的L( c )值。最初的想法是在每次状态转移的时候计算目标函原创 2020-08-04 20:32:39 · 176 阅读 · 0 评论 -
UVA 12563 (劲歌金曲)(多条件最优的动态规划问题)(01背包
UVA 12563 (劲歌金曲)(多条件最优的动态规划问题)(01背包)依照题意可知,首要条件是:在t-1的时间内唱最多的歌曲数目,次要条件是:在不超过t-1的时间内唱的最久。可以用dp_1[i]去表示在 i 时间内能唱的最多曲数。用dp_2[i]去表示在 i 时间内能唱的最久时间。状态转移的决策思想为:1、如果在 j 时间内唱当前歌曲比不唱当前歌曲有着更大的歌曲数,那么同时更新dp_1和dp_2的值。2、如果在 j 时间内唱当前歌曲和不唱当前歌曲有着一样的歌曲数,那么如果唱当前歌曲有着更长的唱原创 2020-07-31 19:34:41 · 295 阅读 · 0 评论