• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






种梦想的路

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

随笔分类 -  usaco

 
usaco 3.4.2 heritage
摘要:已知树的前序遍历和中序遍历,求后序遍历,这个没什么好说的了,我是先建树(虽然不建树也可以把..){ID:lucky141PROG:heritageLANG:PASCAL}program heritage;var s1,s2:string; tree:array[1..700] of char;procedure buildtree(l,r,num,k:integer);var i,j:integer;begin if rr then begin buildtree(l,i-1,num*2,k+1); buildtree(i+1,r,num*2+1,k+i-l+1); e... 阅读全文
posted @ 2013-08-05 21:27 种梦想的路 阅读(115) 评论(0) 推荐(0)
usaco 3.4.1 fence4
摘要:哇咔咔,终于过了我的第一道计算几何~~一开始看了题解,没看懂...然后在自己的思维下开始写:1,判断合法的闭合栅栏,其实就是判断线段两两是否相交(顶点相交不算相交)2,判断某条线段能否被看到,二分,先从出发点到该线段中点连一条线段(k,kk)(k为看的点,kk为线段中点),看其他线段(设为(p,q))与(k,kk)是否相交,若不相交,则说明线段(p,q)没有遮住该线段,若相交,则继续二分,直到到达精度限制3,这样写出来后,发现严重超时,开始考虑优化,如果从看的点出发到两个顶点所连线段都与其他某一条线段(设为(p,q))相交,那么线段(p,q)一定遮住该线段,这是可以肯定的。事实证明这是个很强大 阅读全文
posted @ 2013-08-05 20:56 种梦想的路 阅读(321) 评论(0) 推荐(0)
usaco 3.4.4 rockers
摘要:dp,设f[i,j,k]为前i首曲子放在前j个CD中,且最后一个CD剩下k分钟{ID:lucky141PROG:rockersLANG:PASCAL}program rockers;var f:array[0..20,0..20,0..20] of integer; a:array[1..20] of integer; n,m,t,i,j,k:integer;function max(p,q:integer):integer;begin if p>q then max:=p else max:=q;end;begin assign(input,'rockers.in'); 阅读全文
posted @ 2013-07-24 19:42 种梦想的路 阅读(121) 评论(0) 推荐(0)
usaco 3.4.3 fence9
摘要:皮克定理,一个计算点阵中顶点在格点上的多边形面积公式:S=a+b÷2-1,其中a表示多边形内部的点数,b表示多边形边界上的点数,s表示多边形的面积。直线(x1,y1),(x2,y2)上点的数量为gcd(abs(x1-x2),abs(y1-y2))+1{ID:lucky141PROG:fence9LANG:PASCAL}program fence9;var n,m,p:longint;function gcd(p,q:integer):integer;begin if q=0 then gcd:=p else gcd:=gcd(q,p mod q);end;begin assign(. 阅读全文
posted @ 2013-07-21 19:46 种梦想的路 阅读(104) 评论(0) 推荐(0)
usaco 1.2.4 palsquare
摘要:简单的进制转换,判断回文数的话可以利用字符串判断program palsquare;var a:array[1..300] of longint; n,i,v:integer; p1,p2:longint; s,ss:string;procedure first;var i:integer;begin for i:=1 to 300 do a[i]:=i*i;end;procedure change(p:longint);var s1:string; x:longint; j:integer;begin x:=p; s:=''; while x>0 do beg... 阅读全文
posted @ 2013-07-17 21:28 种梦想的路 阅读(109) 评论(0) 推荐(0)
usaco 1.2.3 namenum
摘要:这道题要格外的文件读入(当然这比较少见,我当时应该也是从题解上抄的txt文件读入吧。。。)其他就没什么好说的了program namenum;const a:array[1..26] of integer=(2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0);var s,n,s1,x:string; fp:text; i,k:integer; flag:boolean;begin assign(input,'namenum.in'); reset(input); assign(output,'namenum.out& 阅读全文
posted @ 2013-07-17 21:19 种梦想的路 阅读(138) 评论(0) 推荐(0)
usaco 1.2.2 transform
摘要:模拟7种状态,不解释program transform;type arr=array[1..10,1..10] of char;var a,aa,b,c:arr; n,i,j,k:integer;procedure init(var d:arr);var i,j:integer; s:string;begin for i:=1 to n do begin readln(s); for j:=1 to n do d[i,j]:=s[j]; end;end;function check(a,c:arr):boolean;var i,j:integer;beg... 阅读全文
posted @ 2013-07-17 21:12 种梦想的路 阅读(126) 评论(0) 推荐(0)
usaco 1.1.4 beads
摘要:还是模拟,不过这也算是usaco中第一道不水的题,因为是2年前做的,觉得还挺难,现在也觉得好水了。。。program beads;var c:char; a:array[1..700] of char; max,s,j,k,i,left,right,n:integer;begin assign(input,'beads.in'); reset(input); assign(output,'beads.out'); rewrite(output); readln(n); for i:=1 to n do read(a[i]); left:=1; right:=n; 阅读全文
posted @ 2013-07-17 20:57 种梦想的路 阅读(128) 评论(0) 推荐(0)
usaco 1.1.2 gift1
摘要:简单题,直接模拟即可,注意是收到的钱数-花出钱数(不是总钱数)program gift1;type node=record s:string; v1,v2:longint; end;var a:array[1..10] of node; i,j,n,p,q:integer; s1:string;begin assign(input,'gift1.in'); reset(input); assign(output,'gift1.out'); rewrite(output); readln(n); for i:=1 to n do begin readln(a[i] 阅读全文
posted @ 2013-07-17 19:53 种梦想的路 阅读(104) 评论(0) 推荐(0)
usaco 1.1.1 ride
摘要:简单水题,模拟即可program ride;var a:array['A'..'Z'] of integer; j,p,q:longint; s1,s2:string; i:char;begin assign(input,'ride.in'); reset(input); assign(output,'ride.out'); rewrite(output); readln(s1); readln(s2); for i:='A' to 'Z' do a[i]:=ord(i)-ord('A 阅读全文
posted @ 2013-07-17 18:42 种梦想的路 阅读(112) 评论(0) 推荐(0)
usaco 2.4.4 comehome
摘要:纯裸的最短路,因为最多只有52个点,floyd,spfa,dijksta都可以,不过记得判重边{ID:lucky141PROG:comehomeLANG:PASCAL}program comehome;var a:array['A'..'z','A'..'z'] of longint; b:array['A'..'z',1..52] of char; l:array['A'..'z'] of integer; d:array['A'..'z&# 阅读全文
posted @ 2013-02-24 19:21 种梦想的路 阅读(105) 评论(0) 推荐(0)
usaco 2.4.3 cowtour
摘要:用floyd预处理两个点之间的距离,用max[i]表示每个点所能到达的最长距离,用并查集判断两个点是否同属一个牧区,并求出每个点所在牧场的直径maxdis[i],枚举每两个不在同一牧区的点i,j,判断连上这两个点后的新牧场的直径max(maxdis[i],maxdis[j],max[i]+max[j]+i,j间距离是否最小最后一定要注意的是,其他牧场的直径可能本身就比所连两个点之后的直径要大,这时应该输出最大的直径{ID:lucky141PROG:cowtourLANG:PASCAL}program cowtour;type node=record x,y:integer; end;var d 阅读全文
posted @ 2013-02-24 10:39 种梦想的路 阅读(110) 评论(0) 推荐(0)