#4 公司利润 2014-01-16

这真的是动归?怎么觉得有点贪心的心态在。时间复杂度O(N),空间复杂度O(1),轻松加愉快!唯一要注意的是ANS一开始要赋负值,因为最终答案可能是负的。

program usaco_;
var n,i,x,ans,last:longint;
a:array[..] of longint;
begin
ans:=-maxlongint+;
readln(n);
for i:= to n do
begin
readln(x);
if last> then last:=x+last else last:=x;
if last>ans then ans:=last;
end;
writeln(ans);
end.

公司利润

#5 接住苹果 2014-01-17

亲娘说:“我给你榨胡萝卜汁吧,10分钟就好。”我说:“嗯,看我十分钟能不能把这题写出来。”差不多刚好十分钟,因为亲娘用了五分钟不到就榨好了…

a[i,j,p]表示第i只苹果掉落后,经过j次移动,最后一次接苹果是在p树下可以接到的最多苹果树。

可以优化的地方就是,反正计算a[i,j,p]只是和a[i-1,j-1,1..2]和a[i-1,j,1..2]有关嘛,所以不开数组应该也无妨吧。

写的时候犯了两个小错误:(1)for j:=0 to k do 写成了1 to k;(2)把循环里的j都写成了k… 都是脑残错误…

program usaco_;
var a:array[..,-..,..] of integer;
q:array[..,..] of word;
n,k,i,j,p1,p2,t,ans:integer;
begin
readln(n,k);
for i:= to n do
begin
readln(t);
q[i,t]:=;
end;
ans:=-+;
for i:= to n do
for j:= to k do
begin
p1:=a[i-,j,]+q[i,];p2:=a[i-,j-,]+q[i,];
if p1>p2 then a[i,j,]:=p1 else a[i,j,]:=p2;
if a[i,j,]>ans then ans:=a[i,j,];
p1:=a[i-,j,]+q[i,];p2:=a[i-,j-,]+q[i,];
if p1>p2 then a[i,j,]:=p1 else a[i,j,]:=p2;
if a[i,j,]>ans then ans:=a[i,j,];
end;
writeln(ans);
end.

接住苹果

BTW,这题因为是NOV04的题目,找数据找了会儿…最后发现只要改这个网址的最后就行了:http://cerberus.delos.com:794/NOV04

#6 方形牛棚 2014-01-17

似乎做过类似的题,似乎知道是四个小正方形拼成一个大的,就是脑残没想出动态转移方程:a[i,j]:=min(a[i-1,j],a[i-1,j-1],a[i,j-1])+1 {a[i,j]表示以(i,j)为右下角可取的正方形的最大边长} 现在处于脑残题也做不来,难题也不会的境界啊…

BTW,此题也是USACO Training 5.3.4。

program usaco_;
var a,map:array[..,..] of word;
n,m,i,j,tx,ty,ans:integer; function min(x,y,z:integer):integer;
begin
min:=x;
if y<min then min:=y;
if z<min then min:=z;
end; begin
readln(n,m);
for i:= to m do
begin
readln(tx,ty);
map[tx,ty]:=;
end;
for i:= to n do
for j:= to n do
if map[i,j]<> then
begin
a[i,j]:=min(a[i-,j],a[i-,j-],a[i,j-])+;
if a[i,j]>ans then ans:=a[i,j];
end;
writeln(ans);
end.

方形牛棚

其实做不大的改动也可成为求最大的矩形牛棚的程序。

#7 滑雪课程 2014-01-22

脑残的我回来了,被这道三星的题目坑死!错误主要有以下:

(1)没有考虑有没有获得能力的边界,解决办法:开始都赋初值-1,非-1才表示能力达到,可操作。

(2)work2过程的参数弄错,主程序里的i和过程里的i混了…解决办法,添加参数x,y。

(3)f[i,j]表示第i分钟结束后,以j的能力值可以划的最多次数。在算课程的时候,我不小心把i当开始时间了。解决办法:+1

总之这题从昨天做死都做不出来查不出错,到看别人解题觉得和我自己的一样,到睡觉前想怎么解决到失眠,到今天早上物理课没心情听还在想…啊啊啊我的DP水平是有多糟糕啊…最后程序只有60-行

program usaco_;
type rec=record
start,last,level:integer;
end;
var l:array[..] of longint;
f:array[-..,..] of longint;
r:array[..] of rec;
mark:array[..] of boolean;
t,s,n,i,j,c,d,temp,ans,maxa:longint; procedure work2(x,y:integer);
var i:integer;
begin
for i:= to s do
if r[i].start=x+ then
if f[x,y]>f[x+r[i].last,r[i].level] then
f[x+r[i].last,r[i].level]:=f[x,y];
end; begin
fillchar(mark,sizeof(mark),false);
readln(t,s,n);
for i:= to s do
begin
readln(r[i].start,r[i].last,r[i].level);
if r[i].level>maxa then maxa:=r[i].level;
mark[r[i].start]:=true;
end;
for i:= to do
l[i]:=;
for i:= to n do
begin
readln(c,d);
if l[c]>d then l[c]:=d;
end;
for i:= to do
if l[i-]<l[i] then l[i]:=l[i-];
for i:= to t do
for j:= to maxa do
f[i,j]:=-;
f[,]:=;
for i:= to t do
for j:= to maxa do
begin
if f[i,j]<>- then
begin
if f[i,j]>f[i+,j] then f[i+,j]:=f[i,j];
if i+l[j]<=t then
if f[i,j]+>f[i+l[j],j] then f[i+l[j],j]:=f[i,j]+;
if mark[i+] then work2(i,j);
end;
end;
for j:= to do
if f[t,j]>ans then ans:=f[t,j];
writeln(ans);
end.

滑雪课程

P.S. 我拿到的题目的output里有注释,坑子的是这个注释竟然是错的!!正确的应该是3-4去上课,5-10在滑雪。

#8 滑雪比赛

终于没看解题,不过做的过程略脑残,一开始只想到转移方程的其一,后来才想到要判断,就是分(1)从T[i]到T[i+1]的路程没办法使速度从S[i]加到S[i+1] (2)从T[i]到T[i+1]的路程没办法使速度从S[i]降到S[i+1] 问题(1)写在转移方程的第二段里,(2)写在前面的预判里,直接对S数组进行处理。我相信还有别的处理方法,总之觉得自己写烦了。

还要注意有可能是通过重点的时候达到最大速度,再特判一个即可。

顺便0-0这真的是动归?我对我自己对DP的理解表示怀疑…第二章至此完美结束。

program usaco_;
var t,s,f:array[..+] of longint;
n,i,j,l,max,temp:longint;
procedure qsort(l,r:longint);
var i,j,mid,temp:longint;
begin
i:=l;j:=r;mid:=t[(l+r) div ];
repeat
while t[i]<mid do inc(i);
while t[j]>mid do dec(j);
if i<=j then
begin
temp:=t[i];t[i]:=t[j];t[j]:=temp;
temp:=s[i];s[i]:=s[j];s[j]:=temp;
inc(i);dec(j);
end;
until i>j;
if i<r then qsort(i,r);
if j>l then qsort(l,j);
end; begin
readln(l,n);
for i:= to n do
readln(t[i],s[i]);
qsort(,n);
for i:=n- downto do
if (s[i]-s[i+])>(t[i+]-t[i]) then
s[i]:=s[i+]+(t[i+]-t[i]);
t[]:=;s[]:=;f[]:=;
for i:= to n- do
begin
if (s[i+]-f[i])<=(t[i+]-t[i]) then
begin
temp:=trunc((t[i+]-t[i]+s[i+]+f[i])/);
f[i+]:=s[i+];
end
else
begin
temp:=f[i]+(t[i+]-t[i]);
f[i+]:=temp;
end;
if temp>max then max:=temp;
end;
if f[n]+(l-t[n])>max then max:=f[n]+(l-t[n]);
writeln(max);
end.

滑雪比赛

[USACO精选] 第二章 动态规划(一)的更多相关文章

  1. [USACO精选] 第一章 数值计算

    好不容易坑来了传说中的USACO精选,近100题我要是能做完就哈哈哈哈了…继今天学并查集连番受挫之后,决定写一写基础题. #0 负二进制 2014-01-10 其实是想到就会做,不想到就不会做的题,数 ...

  2. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第二部分,其余章节将陆续放出.上一 ...

  3. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(1)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第一部分,其余章节将陆续放出.上一 ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  6. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

  7. Python黑帽编程 2.0 第二章概述

    Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...

  8. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  9. Asp.Net MVC4 + Oracle + EasyUI 学习 第二章

    Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...

随机推荐

  1. Nexus中自定义私服,每个项目都用独立的工厂,仓库

    原文:http://blog.csdn.net/mexican_jacky/article/details/50278045 第一步:创建工厂仓库 第二步:cms项目,那么我们就只能cms项目组用,那 ...

  2. control file sequential read 等待事件

    可能的原因 control file sequential read Reading from the control file. This happens in many cases. For ex ...

  3. css3中的过渡(transition)

    css3 transition(过渡)1.语法: transition:[ transition-property ] || [ transition-duration ] || [ transiti ...

  4. C# Socket编程(5)使用TCP Socket

    TCP 协议(Transmission Control Protocol,传输控制协议)是TCP/IP体系中面向连接(connection oriented)的传输层(transport layer) ...

  5. SAP 通过屏幕字段查看透明表

    我要查看创建采购订单屏幕上抬头部分付款条件的这个透明表中的字段. 图1. 1.首先准备好MM模块中的常用透明表. 图2. 2.把光标放在字段上,按F1,再点击图中技术信息按钮. 图3. 3.在弹出的技 ...

  6. Spring AOP propagation七种属性值

    <!-- 配置事务通知 --> <tx:advice id="advice" transaction-manager="transactionManag ...

  7. jqury.jqzoom插件--放大镜

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. hdu 1021

    刚开始直接按题意来写,WA了,唉,果然经验不够..然后开始找规律,本来一看到这种题,第一反应就是规律题,然后看看题意,貌似没啥规律哦!就像当时学DP一样,总是想当然被智商压制了啊喂! #include ...

  9. Android EditText 获得输入焦点 以及requestfocus()失效的问题

    最近做公司项目的时候,经常会遇到一个问题,就是我为某个控件如EditText设置requestfocus()的时候不管用,比如说登陆的时候,我判断下用户输入的密码,如果正确就登陆,错误就提示密码错误, ...

  10. hdu---(1800)Flying to the Mars(trie树)

    Flying to the Mars Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...