网站大量收购独家精品文档,联系QQ:2885784924

线性动态规划详解.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性DP 打鼹鼠(CSC WorkGroup 邀请赛II,来自VIJOS) 描述 Description 根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气。你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死。而机器人每一时刻只能够移动一格或停留在原地不动。机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i,j-1),(i,j+1)四个网格,机器人不能走出整个n*n的网格。游戏开始时,你可以自由选定机器人的初始位置。 现在你知道在一段时间内,鼹鼠出现的时间和地点,希望你编写一个程序使机器人在这一段时间内打死尽可能多的鼹鼠。 输入格式 Input Format 文件第一行为n(n=1000), m(m=10000),其中m表示在这一段时间内出现的鼹鼠的个数,接下来的m行每行有三个数据time,x,y表示有一只鼹鼠在游戏开始后time个时刻,在第x行第y个网格里出现了一只鼹鼠。Time按递增的顺序给出。注意同一时刻可能出现多只鼹鼠,但同一时刻同一地点只可能出现一只鼹鼠。 输出格式 Output Format 输出文件中仅包含一个正整数,表示被打死鼹鼠的最大数目。 样例输入 Sample Input 2 2 1 1 1 2 2 2 样例输出 Sample Output 1 知其然:设F[I]表示到前I个鼹鼠能打死的MAX. F[I]:=MAX{F[J]+1},能在规定的时间内从第I只鼹鼠到达第J只鼹鼠。 知其所以然:其实就是LIS问题。 评价:代码要优秀,特别是已接近10的8次方的时候。多了一句话,就可能超时。 思考:要善于发现事物的本质。 引申:大地的秘密(将一串数排成规定的序列,每次只能移动临近的两个数,求最少移动次数。勇气的足迹仙剑模拟赛),合唱队形(NOIP2004),难解的问题(求解得的LIS必须有第K项。VIJOSP1369). 代码: var max,n,m,p:longint; a:array[0..10000,1..3] of longint; f:array[0..10000] of longint; procedure rf; var i,j,x,y,tt:longint; begin assign(input,mole.in); reset(input); readln(n,m); for i:=1 to m do begin readln(tt,x,y); if (x0)and(y0)and(x=n)and(y=n) then begin inc(p); a[p,1]:=tt; a[p,2]:=x; a[p,3]:=y; end; end; close(input); end; procedure main; var i,j:longint; begin for i:=1 to p do f[i]:=1; for i:=1 to p do for j:=i-1 downto 1 do if f[j]+1f[i] then if a[i,1]-a[j,1]=abs(a[i,2]-a[j,2])+abs(a[i,3]-a[j,3]) then f[i]:=f[j]+1; for i:=1 to p do if f[i]max then max:=f[i]; end; procedure wf; begin assign(output,mole.out); rewrite(output); writeln(max); close(output); end; begin rf; main; wf; end. Buy Low, Buy Lower (USACO)逢低吸纳 “逢低吸纳”是炒股的一条成功秘诀。如果你想成为一个成功的投资者,就要遵守这条秘诀: 逢低吸纳,越低越买 这句话的意思是:每次你购买股票时的股价一定要比你上次购买时的股价低.按照这个规则购买股票的次数越多越好,看看你最多能按这个规则买几次。 给定连续

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档