|
|
|
|
|
|
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...
阅读全文
usaco 3.4.1 fence4
摘要:哇咔咔,终于过了我的第一道计算几何~~一开始看了题解,没看懂...然后在自己的思维下开始写:1,判断合法的闭合栅栏,其实就是判断线段两两是否相交(顶点相交不算相交)2,判断某条线段能否被看到,二分,先从出发点到该线段中点连一条线段(k,kk)(k为看的点,kk为线段中点),看其他线段(设为(p,q))与(k,kk)是否相交,若不相交,则说明线段(p,q)没有遮住该线段,若相交,则继续二分,直到到达精度限制3,这样写出来后,发现严重超时,开始考虑优化,如果从看的点出发到两个顶点所连线段都与其他某一条线段(设为(p,q))相交,那么线段(p,q)一定遮住该线段,这是可以肯定的。事实证明这是个很强大
阅读全文
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');
阅读全文
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(.
阅读全文
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...
阅读全文
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&
阅读全文
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...
阅读全文
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;
阅读全文
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]
阅读全文
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
阅读全文
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
阅读全文
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
阅读全文
|
|