码迷,mamicode.com
首页 > 其他好文 > 详细

【Aguin】第九周 7.12-7.18

时间:2015-07-19 08:49:19      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

7.12

HDU 5280 Senior‘s Array

补一个O(n)的dp方法。

dp1[i]为i左端最大连续和。dp2[i]为i右端最大连续和。

枚举改p的位置。

若p在最大区间和中。则ans为p左右最大连续和加上p。

若p不在最大区间和中。则ans为所有最大连续和中最大的。

注意区间取整个数组时。p是一定包含在内的。

即第二种情况不能取整个数组。

技术分享 Aguin

 

7.13

结果上讲的确什么都没干。

 

7.14

补一个上次的BC

HDU 5282 Senior‘s String

本来是想昨天补的。毕竟高代考完≈放假了。

然而磨磨唧唧没看懂状态转移方程。

今天反复看那截官方题解。又看了别人代码。才算差不多懂。

dp数组就是求LCS。

用f[i][j]表示在X串的前i个字符中,有多少个长度为dp[i][j]的子序列在Y的前j个字符中也出现了。

注意一下空串的情况。所以f初始化是dp[i][j]==0时f[i][j]=1。其余为0。

转移分两个情况。

i) X[i]不属于长度为dp[i][j]的子列。只有dp[i][j]==dp[i-1][j]时才会有这种情况。那么f[i][j]+=f[i−1][j]。

ii) X[i]属于长度为dp[i][j]的子列。这时要先找到Y中最后一个和X[i]的字符。位置标识为p。

因为X[i]结尾的长度为dp[i][j]的子列数等于在最后一对匹配的字符前面且长度为dp[i][j]-1的子列数。

即满足dp[i−1][p−1]+1==dp[i][j]时。有f[i][j]+=f[i−1][p−1]。

技术分享 Aguin

可以先把所有p用一个数组先记下。然而并没有快。

 

7.15

背英语。

 

7.16

考完心情坏坏。补BC。

迷之RE。明日再调。

 

7.17

HDU 5283 Senior‘s Fish

 发现自己蠢死了。

#define maxn 100000+10

然后线段树大小写tree[maxn*4]。

。。。。。。。。。。。。。。。。

算是温习了一下线段树和lazytag。第一次补完一套BC。

技术分享 Aguin

 

7.18

 打了个BC。几个计算客。待补。

【Aguin】第九周 7.12-7.18

标签:

原文地址:http://www.cnblogs.com/chdacm/p/4658113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!