Pogo-Cow
题目大意:
给出直线上N个点的坐标和分数,任意选一个点出发,每次只能跳到另外一个点上并获得相应的分数,且每次跳的方向要相同,本次跳的距离不小于上次跳的距离。 求最大得分。 N<=1000.
解题过程:
1.借鉴了lsdsjy大牛的O(N^2logN)的方法,二分非常巧妙。http://www.cnblogs.com/lsdsjy/p/4032011.html
下面说说往右跳的方法(往左跳是一样的道理,只要把点的坐标相反数一下,然后重新排序,复制往右跳的代码就好)
F[i][j] (i<j) 表示最后一次跳跃是从i跳到j的最优解.
那么F[i][j]=max{F[k][i]}+val[j]. (dist[i]-dist[k]<=dist[j]-dist[i]) 复杂度是O(N^3) 显然不够快。
那么可以用一个辅助数组g[i][j]来记录max{ F[i...j-1][j] }. 显然g[i][j]随着i的减小而增大。
那么对于F[i][j],只要二分找到最小的k,满足dist[i]-dist[k]<=dist[j]-dist[i],那么F[i][j]=g[k][i]+val[j]。
为了方便维护g数组,外层循环为j (1 to N),内层循环为i (j-1 to 1).
2.其实还有更好的O(N^2)算法。 F[i][j]的含义同上。
注意到当j固定时,随着i的减小,需要找到的k也是不断减小的,所以没有每次必要二分找到k,只要每次i减小的时候,让k尽可能减小就可以。
Pogo-Cow的更多相关文章
- [luogu] P3089 [USACO13NOV]POGO的牛Pogo-Cow
		P3089 [USACO13NOV]POGO的牛Pogo-Cow 题目描述 In an ill-conceived attempt to enhance the mobility of his pri ... 
- POJ 3278 Catch That Cow(bfs)
		传送门 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 80273 Accepted: 25 ... 
- 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心
		SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ... 
- HDU Cow Sorting (树状数组)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1 ... 
- [BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
		[BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 试题描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发 ... 
- 细读cow.osg
		细读cow.osg 转自:http://www.cnblogs.com/mumuliang/archive/2010/06/03/1873543.html 对,就是那只著名的奶牛. //Group节点 ... 
- POJ 3176 Cow Bowling
		Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13016 Accepted: 8598 Desc ... 
- raw,cow,qcow,qcow2镜像的比较
		在linux下,虚拟机的选择方式有很多,比如vmware for linux,virtual box,还有qemu,在以前,使用qemu的人不多,主要是使用起来有些麻烦,但现在随着Openstack的 ... 
- poj1985 Cow Marathon (求树的直径)
		Cow Marathon Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 3195 Accepted: 1596 Case ... 
- (01背包变形) Cow Exhibition (poj 2184)
		http://poj.org/problem?id=2184 Description "Fat and docile, big and dumb, they look so stupid ... 
随机推荐
- hdu3264Open-air shopping malls(二分)
			链接 枚举伞的圆心,最多只有20个,因为必须与某个现有的圆心重合. 然后再二分半径就可以了. #include <iostream> #include<cstdio> #inc ... 
- Oracle在Linux下使用异步IO(aio)配置
			1.首先用root用户安装以下必要的rpm包 # rpm -Uvh libaio-0.3.106-3.2.x86_64.rpm# rpm -Uvh libaio-devel-0.3.106-3.2.x ... 
- asmca无法创建ASM磁盘
			现象 grid用户使用asmca无法创建asm磁盘,如下图 分析 如图所示,报错说是 Grid Infrastructure 出了问题.那么 Grid Infrastructure 是什么 ? 在安装 ... 
- semantic-ui dropdown is not a function
			按照semantic-ui官网示例,编写了如下示例,却不见效果. <div class="ui secondary menu"> <a class="i ... 
- as3中的多线程
			从fp11.4开始支持worker技术, 即as3中的线程概念, 到了fp11.5, flascc中开始支持pthread家族来创建线程. 总的来说, as3中有两种创建线程的方法: 1.直接在as3 ... 
- JUnit org.junit.runner.Request.classWithoutSuiteMethod解决方法
			欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ... 
- 4.2 EF的CRUD控制器代码
			以下的例子以留言本作为依据. 1.添加 public ActionResult Create() { return View(); } // // POST: /Contact/Create [Htt ... 
- Django开发博客- 部署
			安装Git Git是一个被大量程序员使用的”版本控制系统”.此软件可以跟踪任何时间文件的改变,这样你以后可以随时召回某个特定版本. windows系统下面可以下载git-scm安装.除了第5步”Adj ... 
- python 练习 22
			Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false. Python 编程中 if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… el ... 
- q和blockquote标签的区别
			q用来分离文本中的引语,定义一个短的引用.该标签会对引用的文本加双引号,一般情况很少用,博客论坛系统会用得多一些: blockquote用于对长文本的引用,用来定义一段引语,标签内的内容会自动有缩进: ... 
