首先日西一下...Van_Persie是我的小号..zzyzzy12是我的大号..囧...上面是按空间排序..下面是按时间排序...时间排第七...空间居然是第一..好吧!!晒得果断!
回到正题..这道题是上个周末在衡阳八中跟他们一起训练做的...当时只过了6个点...回来再POJ上A发现更多问题...题意我就不再说明了..注意的是这里的长度不会影响上下..也就是说整个可以看成一个每个格子相等的矩阵...长度只是代表一个数~~不是说每个格子的边长..否则没法做了...
首先是输入很恶心..数据量很大...用scanf光OI就超时..所以只能先gets一行字符再来自己转...
dp方程也比较好想吧...dp[ k ] [ i ] 代表到达第k行第i个路口能取到的最大值...dp从第一行开始做到最后一行...
题目最原始的做法是一行一行往上做..首先将下一行的值copy上来(上下走不要距离代价)..然后枚举每个点左走到能走的路口更新...右走到能走的路口更新..这样的话最强数据的运算次数将是 10^5*10^5*100 给的1S...铁定超时..
看状态转移方程...我是没想出其他的了...那就在状态转移的时候做优化...每一个点向左扫描更新到能更新到的距离...向右扫描更新到能更新到的距离..可以想象每次更新只能更新到特定的一个长度..并且长度是非降的..所以用单调队列..
这里每行做两次扫描....一次从左向右...一次从右向左..分开做两次扫描...先更新单调队列..也就是从头结点挤掉距离大于L的...从尾挤掉更新值小于当前点的..再插在尾结点的后面..用头结点来更新当前点的dp值...
为了处理方便...开始在读入时...就可以把每个点的长度以及快乐值都置成1到当前点的之和...方便后面dp时得出一段的距离长度或者一段的快乐值~~~
读入时千万要注意快乐值可能是负的~~用字符串读得时候要多判断一下~~
我的空间少就是因为我的长度是边读边做的~~~dp是滚动数组的~~
Program:
分享到:
相关推荐
北大POJ3253-POJ3253-Fence Repair【STL优先队列】 解题报告+AC代码
北大POJ2002-Squares 解题报告+AC代码
poj 1000 - 2000 部分题目 官方分类 poj 1000 - 2000 部分题目 官方分类
POJ---1456.Supermarket测试数据及答案,题目描述:A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral ...
北大POJ1426-Find The Multiple【BFS+同余模】 解题报告+AC代码
北大POJ3020-Antenna Placement 解题报告+AC代码
北大POJ3414-Pots 解题报告+AC代码
北大POJ1015-Jury Compromise【动态规划DP】 解题报告+AC代码
这是魔兽世界终极版POJ的-测试数据,找了好久才找到的。 本来想设置为0积分,但是它居然自动收费(o_ _)ノ。 看传送门:https://pan.baidu.com/s/1cCIwW8psGDASu2JdZawG3Q
POJ3211--Washing Clothes
北大POJ2305-Basic remains POJ2305-Basic remains
北大POJ1321-Chess Problem POJ1321-Chess Problem
北大POJ1080-Human Gene Functions POJ1080-Human Gene Functions
北大POJ1159-Palindrome 解题报告+AC代码
POJ3259--Wormholes,使用bellman方法。
poj 1000-3000部分代码 网上收集
北大POJ1159-Palindrome
北大POJ1837-Balance
北大POJ2503-Babelfish 解题报告+AC代码