- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线性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)