lightoj 1071
2016-04-22 00:05
337 查看
如果在赛场上告诉我,这道题就是暴力的记忆化搜索,我肯定就搞了
如果在赛场上告诉我,线段树lazy标记是可以过的,我肯定现场就学了就过了
哎,还是实力不够,校赛给我了一发补题的机会也挺好的
题意:n*m的矩阵,每个点上有权值,一个人从左上角到右下角遍历两次,若两条路径有重复点,则只计算一次,求最大的收益,n和m的最大范围100
看到这种题,我知道是DP
正常情况的设置是:dp【i】【j】【k】【l】为第一个人走到了【i】【j】这个点,第二个走到【k】【l】,所能够得到的最大价值
但是范围在100,这样开数组是爆炸的,能不能少一维
注意到题意:只能从左上角走到右下角,意味着总步数是固定的:n+m-2
所以可以用总步数和两个人在x方向的步数,来计算y方向的步数从而减少一维变量
即定义为:dp【step】【x1】【x2】为当前总共走了step步,第一个人的坐标是【x1】【step-x1】,第二个人的坐标是【x2】【step-x2】所能得到的最大价值
因此,剩下的方向:怎么得到最大价值:记忆化搜索
两个人最多四种方向,依次判断就好:AB下;AB右;A下B右;A右B下
剩下的代码就好写了,初始化为-1,然后dfs记忆化搜索,只需要判断4种方向能不能走(有没有点在边界上判断一发即可)
还是太弱,贴上我谷巨的博客压压惊
膜拜我谷
另外呢,这个题如果把2次,改成3次,甚至更多的K次,用dp就不方便了
就需要用最小费用最大流模板处理最大费用最大流问题,暂时还不会,留个坑在这吧
如果在赛场上告诉我,线段树lazy标记是可以过的,我肯定现场就学了就过了
哎,还是实力不够,校赛给我了一发补题的机会也挺好的
题意:n*m的矩阵,每个点上有权值,一个人从左上角到右下角遍历两次,若两条路径有重复点,则只计算一次,求最大的收益,n和m的最大范围100
看到这种题,我知道是DP
正常情况的设置是:dp【i】【j】【k】【l】为第一个人走到了【i】【j】这个点,第二个走到【k】【l】,所能够得到的最大价值
但是范围在100,这样开数组是爆炸的,能不能少一维
注意到题意:只能从左上角走到右下角,意味着总步数是固定的:n+m-2
所以可以用总步数和两个人在x方向的步数,来计算y方向的步数从而减少一维变量
即定义为:dp【step】【x1】【x2】为当前总共走了step步,第一个人的坐标是【x1】【step-x1】,第二个人的坐标是【x2】【step-x2】所能得到的最大价值
因此,剩下的方向:怎么得到最大价值:记忆化搜索
两个人最多四种方向,依次判断就好:AB下;AB右;A下B右;A右B下
剩下的代码就好写了,初始化为-1,然后dfs记忆化搜索,只需要判断4种方向能不能走(有没有点在边界上判断一发即可)
还是太弱,贴上我谷巨的博客压压惊
膜拜我谷
另外呢,这个题如果把2次,改成3次,甚至更多的K次,用dp就不方便了
就需要用最小费用最大流模板处理最大费用最大流问题,暂时还不会,留个坑在这吧
相关文章推荐
- LiteIDE X33.1 发布,Go 语言开发工具
- ASP.NET 中ImageMap控件的用法
- ASP.NET中Label控件用法详解
- ASP.NET中 ListBox列表框控件的使用方法
- ASP.NET中Application、Cookie、Session、Cache和ViewState
- ASP.NET中Literal控件的使用方法 原创
- ASP.NET Core配置教程之读取配置信息
- Django小白教程之Django用户注册与登录
- Python开发之快速搭建自动回复微信公众号功能
- 基于python实现的抓取腾讯视频所有电影的爬虫
- 在windows下快速搭建web.py开发框架方法
- web.py 十分钟创建简易博客实现代码
- ThinkPHP连接Oracle数据库
- jinfo命令
- php生成酷炫的四个字符验证码
- 利用php输出不同的心形图案
- thinkPHP实现将excel导入到数据库中的方法
- thinkPHP3.1验证码的简单实现方法
- PHP简单获取及判断提交来源的方法
- php简单实现sql防注入的方法