fmj's profile遲dē傳說PhotosBlogLists Tools Help

fmj fmj

Occupation
Interests
兲幗▓嘚倖福Оo侟洅於怼缜嫒嘚唏朢﹖.┈o
by 
by 
by 
by 
by 
by 
by 
by 

遲dē傳說

愛する者よ,死に候え……

Welcome

ネ斤ネ壽ロ幸ロ福
May, 2006

usaco 1.3 Ordered Fractions

{
ID:fanminj1
PROG:frac1
LANG:PASCAL
}
var
  i,j,n,k,l:integer;
  m:longint;
  a:array[1..10000,1..2] of integer;
  e:array[1..10000] of real;
procedure sort(l, r: integer);
var
  y,z:integer;
  w,x:real;
begin
  i := l; j := r; x := e[(l+r) div 2];
  repeat
    while e[i]<x do inc(i);
    while x<e[j] do dec(j);
    if i <= j then begin
      y := a[i,1]; a[i,1] := a[j,1]; a[j,1] := y;
      z := a[i,2]; a[i,2] := a[j,2]; a[j,2] := z;
      w := e[i]; e[i] := e[j]; e[j] := w;
      inc(i); dec(j);
    end;
  until i > j;
  if l < j then sort(l, j);
  if i < r then sort(i, r);
end;
function gcd(c,d:byte):integer;
var
  t:byte;
begin
  while d>0 do begin
    t:=c mod d;
    c:=d;
    d:=t;
  end;
  gcd:=c;
end;
begin
  assign(input,'frac1.in');  reset(input);
  assign(output,'frac1.out');  rewrite(output);
  m:=0;
  readln(n);
  writeln('0/1');
  for i:=2 to n do
    for j:=1 to i-1 do
      if gcd(i,j)=1 then begin
        inc(m);
        a[m,1]:=i;
        a[m,2]:=j;
      end;
  for i:=1 to m do e[i]:=a[i,2]/a[i,1];
  sort(1,m);
  for i:=1 to m do writeln(a[i,2],'/',a[i,1]);
  writeln('1/1');
  close(input);  close(output);
end.
排序问题,注意必须用快排
 

usaco 1.2 The Castle

种子染色法递归即可解决
程序如下:
{
ID:fanminj1
LANG:PASCAL
PROG:castle
}
var
  map:array[1..50,1..50] of
      record
        n,e,w,s:boolean;
        c:longint;
      end;
  a:array[1..2500] of longint;
  p,q,i,j,t:longint;
  s1,s2,s3,x,y:longint;
  pos:char;
procedure work(p,q:longint);
begin
  map[p,q].c:=s1;inc(a[s1]);
  if not map[p,q].n then
    if map[p-1,q].c=0 then work(p-1,q);
  if not map[p,q].e then
    if map[p,q+1].c=0 then work(p,q+1);
  if not map[p,q].w then
    if map[p,q-1].c=0 then work(p,q-1);
  if not map[p,q].s then
    if map[p+1,q].c=0 then work(p+1,q);
end;
begin
  assign(input,'castle.in');  reset(input);
  assign(output,'castle.out');  rewrite(output);
  readln(q,p);
  for i:=1 to p do
    for j:=1 to q do begin
      read(t);
      if t>=8 then begin dec(t,8);
      map[i,j].s:=true end;
      if t>=4 then begin dec(t,4);
      map[i,j].e:=true end;
      if t>=2 then begin dec(t,2);
      map[i,j].n:=true end;
      if t>=1 then begin dec(t,1);
      map[i,j].w:=true end;
    end;
  fillchar(a,sizeof(a),0);
  s1:=0;  s2:=0;  s3:=0;
  for i:=1 to p do
    for j:=1 to q do
      if map[i,j].c=0 then
      begin
        inc(s1);work(i,j);
      end;
  writeln(s1);
  for i:=1 to s1 do if a[i]>s2 then s2:=a[i];
  writeln(s2);
  for j:=1 to q do
    for i:=p downto 1 do begin
      if i>1 then
        if map[i,j].c<>map[i-1,j].c then
          if a[map[i,j].c]+a[map[i-1,j].c]>s3 then
          begin
            s3:=a[map[i,j].c]+a[map[i-1,j].c];
            x:=i;y:=j;pos:='N';
          end;
      if j<q then
        if map[i,j].c<>map[i,j+1].c then
          if a[map[i,j].c]+a[map[i,j+1].c]>s3 then
          begin
            s3:=a[map[i,j].c]+a[map[i,j+1].c];
            x:=i;y:=j;pos:='E';
          end;
    end;
  writeln(s3);
  writeln(x,' ',y,' ',pos);
  close(input);close(output);
end.

 

usaco 1.1 Shaping Regions

难题!线段数问题,据说用离散+递归
这里是某位大牛的程序:
{
ID:???
PROG:rect1
LANG:PASCAL
}
program bluewater;
const maxab=10000;maxc=2500;maxn=1000;maxl=2002;
type arr=array[1..maxl] of integer;
tpoint=^tppoint;
tppoint=record
left,right,mid,cover:integer;
nl,nr:tpoint;
end;
var
a,b,n,i,j,lx,ly,k:integer;
t:array[1..maxc] of longint;
x,y,ax,ay:arr;
ac:array[1..maxn] of integer;
haxi:array[0..maxab] of integer;
head:tpoint;
f1,f2:text;
procedure init;
var i:integer;
begin
assign(f1,'rect1.in');
reset(f1);
readln(f1,a,b,n);
for i:=1 to n do
readln(f1,ax[2*i-1],ay[2*i-1],ax[2*i],ay[2*i],ac[i]);
close(f1);
ax[2*n+1]:=0;ax[2*n+2]:=a;
ay[2*n+1]:=0;ay[2*n+2]:=b;
end;
procedure sort(x:arr;len:integer;var z:arr;var lxy:integer);
var
ab:array[0..maxab] of boolean;
i,l:integer;
begin
l:=0;
fillchar(ab,sizeof(ab),false);
for i:=1 to 2*n+2 do
ab[x[i]]:=true;
for i:=0 to len do
if ab[i] then begin inc(l);z[l]:=i end;
lxy:=l;
end;
function min(a,b:integer):integer;
begin
if a>b then min:=b else min:=a;
end;
function max(a,b:integer):integer;
begin
if a>b then max:=a else max:=b;
end;
procedure build(var p:tpoint;left,right:integer);
begin
if (left>right) then begin p:=nil;exit end;
p^.left:=left;
p^.right:=right;
p^.mid:=(p^.left+p^.right) div 2;
p^.cover:=0;
if left=right then
begin p^.nl:=nil;p^.nr:=nil; exit end;
new(p^.nl);
new(p^.nr);
build(p^.nl,left,p^.mid);
build(p^.nr,p^.mid+1,right);
end;
procedure put(p:tpoint;left,right,c,k:integer);
begin
if p=nil then exit;
if y[p^.right+1]-y[p^.left]=p^.cover then exit;
if (left=p^.left) and (right=p^.right) then
begin
t[c]:=t[c]+(y[p^.right+1]-y[p^.left]-p^.cover)*(x[k+1]-x[k]);
t[1]:=t[1]-(y[p^.right+1]-y[p^.left]-p^.cover)*(x[k+1]-x[k]);
p^.cover:=y[p^.right+1]-y[p^.left];
exit;
end;
if left>right then exit;
put(p^.nl,left,min(p^.mid,right),c,k);
put(p^.nr,max(p^.mid+1,left),right,c,k);
p^.cover:=p^.nl^.cover+p^.nr^.cover;
end;
procedure cover0(p:tpoint);
begin
if p=nil then exit;
p^.cover:=0;
cover0(p^.nl);
cover0(p^.nr);
end;
begin
init;
sort(ax,a,x,lx);
sort(ay,b,y,ly);
for i:=1 to ly do haxi[y[i]]:=i;
assign(f2,'rect1.out');
rewrite(f2);new(head);
fillchar(t,sizeof(t),0);
new(head);
build(head,1,ly-1);
t[1]:=a*b;
for i:=1 to lx-1 do
begin
for j:=n downto 1 do
if (ax[2*j-1]<=x[i]) and (x[i]<ax[2*j]) then
put(head,haxi[ay[2*j-1]],haxi[ay[2*j]]-1,ac[j],i);
cover0(head);
end;
for k:=1 to maxc do
if t[k]>0 then writeln(f2,k,' ',t[k]);
close(f2);
end.

usaco 4.3 Superprime Rib

DFS,还可以适当优化,比如首位数字只能是2,3,5,7  其他位上的数字只能是1,3,7,9.不过觉得对于本题没有很大意义.
程序如下:
{
ID:fanminj1
LANG:PASCAL
TASK:sprime
}
var
  n:byte;
function flag(i:longint):boolean;
var
  j:longint;
begin
  flag:=true;
  if i=1 then begin
    flag:=false;
    exit;
  end;
  for j:=2 to trunc(sqrt(i)) do
    if i mod j=0 then begin
      flag:=false;
      exit;
    end;
end;
procedure sub(a,b:longint);
begin
  if a=n then writeln(b)
         else begin
           if flag(b*10+1) then sub(a+1,b*10+1);
           if flag(b*10+3) then sub(a+1,b*10+3);
           if flag(b*10+7) then sub(a+1,b*10+7);
           if flag(b*10+9) then sub(a+1,b*10+9);
         end;
end;
begin
  assign(input,'sprime.in');  reset(input);
  assign(output,'sprime.out');  rewrite(output);
  readln(n);
  sub(1,2);
  sub(1,3);
  sub(1,5);
  sub(1,7);
  close(input);  close(output);
end.

usaco 4.2 Number Triangles

最简单的DP
程序如下:
{
ID:fanminj1
LANG:PASCAL
TASK:numtri
}
var
  a:array[1..1000,1..1000] of 0..100;
  s:array[0..1000,0..1000] of longint;
  r,i,j:0..1000;
  temp:longint;
begin
  assign(input,'numtri.in');  reset(input);
  assign(output,'numtri.out');  rewrite(output);
  readln(r);
  for i:=1 to r do begin
    for j:=1 to i do read(a[i,j]);
    readln;
  end;
  s[1,1]:=a[1,1];  temp:=0;
  for i:=2 to r do
    for j:=1 to i do
     if s[i-1,j-1]>s[i-1,j] then s[i,j]:=a[i,j]+s[i-1,j-1]
                            else s[i,j]:=a[i,j]+s[i-1,j];
  for i:=1 to r do if s[r,i]>temp then temp:=s[r,i];
  writeln(temp);
  close(input);  close(output);
end.

usaco 4.1 Checker Challenge

此题可以称为usaco中的一道难题,主要是在最后一个数据卡,对称优化后一般可以通过。具体优化方法如下:
当n为偶数时,第一行只需要搜索前n div 2个格子就可以了,根据左右对称,将所得结果×2就是最后的答案。
      当n为奇数时,还是一样搜索第一行的前n div 2个格子,不过这样会漏掉中间格子的情况。根据上下对称,第一行中间格子的情况与最后一行中间格子的情况是一样的,在搜索前n div 2个格子的时候记录一下最后一行中间格子有解的个数,同样×2,将两个结果相加,就是最后的答案。
由于我的程序在优化后还是超了0.1秒,所以把jmcat大牛的程序借用了
程序如下:
{
ID:jmcat
PROG:checker
LANG:PASCAL
}
var a,b,c:array[-30..30] of boolean;
    s:array[1..13] of integer;
    n,m,i,t:longint;
procedure work(x:longint);
  var i:longint;
  begin
    if x<=n then
    begin
      for i:=1 to n do
        if a[i] and b[i+x] and c[i-x] then
        begin
          a[i]:=false;b[i+x]:=false;c[i-x]:=false;
          s[x]:=i;work(x+1);
          a[i]:=true;b[i+x]:=true;c[i-x]:=true;
        end;
    end
    else begin
      inc(m);
      if s[n]=n div 2+1 then
        inc(t);
      if m<=3 then
      begin
        for i:=1 to n-1 do
          write(s[i],' ');
        writeln(s[n]);
      end;
    end;
  end;
begin
  assign(input,'checker.in');
  assign(output,'checker.out');
  reset(input);rewrite(output);
  fillchar(a,sizeof(a),1);
  fillchar(b,sizeof(b),1);
  fillchar(c,sizeof(c),1);
  readln(n);m:=0;t:=0;
  if n<7 then
    work(1)
  else begin
    for i:=1 to n div 2 do
    begin
      a[i]:=false;b[i+1]:=false;c[i-1]:=false;
      s[1]:=i;work(2);s[1]:=0;
      a[i]:=true;b[i+1]:=true;c[i-1]:=true;
    end;
    m:=m*2;t:=t*2;
    if odd(n) then inc(m,t);
  end;
  writeln(m);
  close(input);close(output);
end.
May, 2006

usaco 3.3 What Time Is It

这道题目就是麻烦,数字转英文
程序如下:
{
ID:fanminj1
LANG:PASCAL
TASK:clock
}
var
  s,t:string;
  a,b,c:integer;
procedure down(r:string);
begin
  t:=r;
  t[1]:=chr(ord(t[1])+32);
end;
function change(k:integer):string;
begin
  case k of
    1: change:='One';
    2: change:='Two';
    3: change:='Three';
    4: change:='Four';
    5: change:='Five';
    6: change:='Six';
    7: change:='Seven';
    8: change:='Eight';
    9: change:='Nine';
    10: change:='Ten';
    11: change:='Eleven';
    12: change:='Twelve';
    13: change:='thirteen';
    14: change:='fourteen';
    15: change:='fifteen';
    16: change:='sixteen';
    17: change:='seventeen';
    18: change:='eighteen';
    19: change:='nineteen';
    20: change:='twenty';
    30: change:='thirty';
    40: change:='forty';
    50: change:='fifty';
  end;
end;
begin
  assign(input,'clock.in');  reset(input);
  assign(output,'clock.out');  rewrite(output);
  readln(s);
  if s[2]=':' then begin
    a:=ord(s[1])-48;
    b:=(ord(s[3])-48)*10+ord(s[4])-48;
  end;
  if s[3]=':' then begin
    a:=(ord(s[1])-48)*10+ord(s[2])-48;
    b:=(ord(s[4])-48)*10+ord(s[5])-48;
  end;
  if b=0 then writeln(change(a),' o','''','clock');
  if b=15 then begin
    write('Quarter past ');
    down(change(a));
    writeln(t);
  end;
  if (b<45) and (b<>0) and (b<>15) then begin
    write(change(a),' ');
    c:=b div 10;
    if c=0 then begin
      down(change(b));
      writeln(t);
    end;
    if c=1 then begin
      if b>=13 then writeln(change(b));
      if b<13 then begin
        down(change(b));
        writeln(t);
      end;
    end;
    if (c<>0) and (c<>1) then begin
      write(change(c*10));
      if b mod 10<>0 then begin
        write('-');
        down(change(b mod 10));
        writeln(t);
      end;
      if b mod 10=0 then writeln;
    end;
  end;
  if b=45 then begin
    write('Quarter to ');
    c:=a+1;
    if c<=12 then begin
      down(change(c));
      writeln(t);
    end;
    if c>12 then begin
      down(change(c-12));
      writeln(t);
    end;
  end;
  if b>45 then begin
    c:=60-b;
    if c<=12 then write(change(c));
    if c>12 then begin
      t:=change(c);
      t[1]:=chr(ord(t[1])-32);
      write(t);
    end;
    write(' to ');
    c:=a+1;
    if c<=12 then begin
      down(change(c));
      writeln(t);
    end;
    if c>12 then begin
      down(change(c-12));
      writeln(t);
    end;
  end;
  close(input);  close(output);
end.
 

usaco 3.2 Barn Repair

这道题其实也可以转化为贪心问题,就是text里面说的:假设我们的答案盖住了较大的空牛棚连续列,而不是较小的。那么我们把那部分盖空牛棚的木板锯下来,用来把较小的空牛棚连续列盖住,还会有剩余。那么锯掉它们!还给木材商!同时我们的解也变小了。也就是说,我们获得更优的解。所以,靠盖住较大空牛棚连续列的方法无法获得最优解,我们也应该尽量贪心那些距离小的木板合并。
如果仍有一个空牛棚连续列与我们的答案盖住的那个相同,我们同样使用上述的方法。会发现获得的新解与原解相同,那么不论我们选哪个,结果都将一样。
由此可见,如果我们合并的两块木板间距离最短,那么总能获得最优解。所以,在解题的每一步中,我们都只需要寻找两块距离最小的木板并合并它们。这样,我们获得的解必定最优。
程序如下:
{
ID:fanminj1
LANG:PASCAL
TASK:barn1
}
var
  m,s,c,t,temp,i,j:integer;
  a,d:array[1..200] of integer;
begin
  assign(input,'barn1.in');  reset(input);
  assign(output,'barn1.out');  rewrite(output);
  readln(m,s,c);
  for i:=1 to c do readln(a[i]);
  for i:=1 to c-1 do
    for j:=i+1 to c do
      if a[i]>a[j] then begin
        temp:=a[i];  a[i]:=a[j];  a[j]:=temp;
      end;
  for i:=1 to c-1 do d[i]:=a[i+1]-a[i]-1;
  for i:=1 to c-2 do
    for j:=i+1 to c-1 do
      if d[i]>d[j] then begin
        temp:=d[i];  d[i]:=d[j];  d[j]:=temp;
      end;
  t:=c;
  for i:=1 to c-m do t:=t+d[i];
  writeln(t);
  close(input);  close(output);
end.

usaco 3.1 Mixing Milk

典型的贪心问题
程序如下:
{
ID:fanminj1
LANG:PASCAL
TASK:milk
}
var
  n,sum,l:longint;
  m,temp,tempp,nn,i,j:integer;
  p:array[1..5000] of integer;
  a:array[1..5000] of longint;
begin
  assign(input,'milk.in');  reset(input);
  assign(output,'milk.out');  rewrite(output);
  readln(n,m);
  for i:=1 to m do readln(p[i],a[i]);
  for i:=1 to m-1 do
    for j:=i+1 to m do
      if p[i]>p[j] then begin
        temp:=p[i];
        p[i]:=p[j];
        p[j]:=temp;
        tempp:=a[i];
        a[i]:=a[j];
        a[j]:=tempp;
      end;
  sum:=0;  l:=0;  nn:=1;
  repeat
    sum:=sum+p[nn]*a[nn];
    l:=l+a[nn];
    inc(nn);
  until l>=n;
  sum:=sum-p[nn-1]*(l-n);
  writeln(sum);
  close(input);  close(output);
end.
 

usaco 2.2 Prime Palindromes

这道题目在一开始的时候我走了点弯路,想去搜索判断,后来发现再怎么优化也超时。
其实应该是直接生成回文数,并且只需考虑位数是奇数的时候
程序如下:
{
ID:fanminj1
LANG:PASCAL
TASK:pprime
}
var
  a,b:longint;
function check(x:longint):boolean;
var
  c:longint;
begin
  check:=true;
  for c:=2 to trunc(sqrt(x)) do
    if x mod c=0 then begin check:=false; exit; end;
end;
procedure opa;
var
  i:byte;
begin
  for i:=5 to 11 do if ((i=5) or (i=7) or (i=11)) and ((i>=a) and (i<=b))
  then writeln(i);
end;
procedure opb;
var
  i,j:byte;
  t:integer;
begin
  for i:=1 to 9 do
    for j:=0 to 9 do begin
      t:=101*i+j*10;
      if check(t) and (t<=b) and (t>=a) then writeln(t);
    end;
end;
procedure opc;
var
  i,j,k:byte;
  t:longint;
begin
  for i:=1 to 9 do
    for j:=0 to 9 do
      for k:=0 to 9 do begin
        t:=10001*i+1010*j+100*k;
        if check(t) and (t<=b) and (t>=a) then writeln(t);
      end;
end;
procedure opd;
var
  i,j,k,l:byte;
  t:longint;
begin
  for i:=1 to 9 do
    for j:=0 to 9 do
      for k:=0 to 9 do
        for l:=0 to 9 do begin
          t:=1000001*i+100010*j+10100*k+1000*l;
          if check(t) and (t<=b) and (t>=a) then writeln(t);
        end;
end;
begin
  assign(input,'pprime.in');  reset(input);
  assign(output,'pprime.out');  rewrite(output);
  readln(a,b);
  if b>9999999 then b:=9999999;
  opa;
  opb;
  opc;
  opd;
  close(input);  close(output);
end.
 

usaco 2.1 Broken Necklace

因为数据量不大,所以可以枚举,在处理的时候仔细点就可以了
程序如下:
{
ID:fanminj1
LANG:PASCAL
TASK:beads
}
var
  n,maxpick,counter,i:integer;
  necklace:array[1..350] of char;
procedure check;
var
  lco,rco:char;
  l,r,pos:integer;
  b:boolean;
begin
  l:=0;  r:=0;
  if counter=n then pos:=1 else pos:=counter+1;
  rco:=necklace[pos];
  b:=false;
  repeat
    if (rco='w') and (necklace[pos]<>'w') then rco:=necklace[pos];
    if ((rco='r') and (necklace[pos]='b')) or ((rco='b') and (necklace[pos]='r'))
      then b:=true
      else inc(r);
    if r>=n then begin
      writeln(n); close(input); close(output); halt; end;  {全部同色}
    if pos=n then pos:=1 else inc(pos);
  until b;
  lco:=necklace[counter];
  pos:=counter;
  b:=false;
  repeat
    if (lco='w') and (necklace[pos]<>'w') then lco:=necklace[pos];
    if ((lco='r') and (necklace[pos]='b')) or ((lco='b') and (necklace[pos]='r'))
      then b:=true
      else inc(l);
    if r+l=n then begin
      writeln(n); close(input); close(output); halt; end;
    if pos=1 then pos:=n else dec(pos);
  until b;
  if l+r>maxpick then maxpick:=l+r;
end;
begin
  assign(input,'beads.in');  reset(input);
  assign(output,'beads.out');  rewrite(output);
  readln(n);
  for i:=1 to n do read(necklace[i]);
  maxpick:=0;
  for counter:=1 to n do check;  {counter代表断开点}
  writeln(maxpick);
  close(input);  close(output);
  halt;
end.

usaco 1.2 Greedy Gift Givers

就是字符串的处理+统计,不多说了。
程序如下:
{
ID:fanminj1
LANG:PASCAL
TASK:gift1
}
var
  s,r,v:array[1..10] of string;
  m,t,a,b:array[1..10] of integer;
  i,j,k,l,n:integer;
begin
  assign(input,'gift1.in');  reset(input);
  assign(output,'gift1.out');  rewrite(output);
  readln(n);
  fillchar(a,sizeof(a),0);
  fillchar(b,sizeof(b),0);
  for i:=1 to n do readln(s[i]);
  for i:=1 to n do begin
    readln(r[i]);
    readln(m[i],t[i]);
    for l:=1 to n do if s[l]=r[i] then begin
      if t[i]<>0 then a[l]:=m[i]-(m[i] mod t[i])
                 else a[l]:=0;
      end;
    if t[i]<>0 then
      for j:=1 to t[i] do begin
        readln(v[j]);
        for k:=1 to n do if s[k]=v[j] then
          b[k]:=b[k]+m[i] div t[i];
      end;
  end;
  for i:=1 to n do writeln(s[i],' ',b[i]-a[i]);
  close(input);  close(output);
end.

usaco 1.1 Your Ride Is Here

{
ID:fanminj1
LANG:PASCAL
PROG:ride
}
var
  s,r:string;
  a,b,i:byte;
  c,d:longint;
begin
  assign(input,'ride.in');  reset(input);
  assign(output,'ride.out');  rewrite(output);
  readln(s);
  readln(r);
  a:=length(s);
  b:=length(r);
  c:=1;
  d:=1;
  for i:=1 to a do c:=c*(ord(s[i])-64);
  for i:=1 to b do d:=d*(ord(r[i])-64);
  if (c mod 47)=(d mod 47) then writeln('GO')
                           else writeln('STAY');
  close(input);  close(output);
end.
February, 2006

情癫大圣

总体上觉得拍得太假,改编得有点过分,内容空洞
最终无非想说的就是这样一句话:尘世间最遥远的距离不是我站在你面前 却不知道我爱你 而是 明明知道彼此相爱 却不能在一起
个人认为相爱并不一定要在一起 让彼此都幸福快乐才是最重要的

【囬答】如何添加音樂

 将 Windows Media Player PowerToy 添加到您的共享空间

  1. 确保您已登录到您的共享空间并处于编辑模式 (MSN Spaces 中,共享空间作者可以使用的两种视图之一,使您可以使用自定义的共享空间并向其中发送内容。) 下。
  2. 在您的 web 浏览器地址栏中,将 &powertoy=musicvideo 添加到显示的 URL 的末尾。
  3. 在 web 浏览器中,单击地址行旁边的“转到”按钮,然后,等待系统重新加载您的共享空间。
  4. 在您的共享空间中,单击“自定义”。
  5. 单击“模块”,然后单击“Power Toy: Windows Media Player”旁边的“添加”。
  6. 单击“保存”。

 添加您要在 Windows Media Player 上播放的授权音频或视频剪辑的 URL

  1. 确保您已登录到您的共享空间并处于编辑模式 (MSN Spaces 中,共享空间作者可以使用的两种视图之一,使您可以使用自定义的共享空间并向其中发送内容。) 下。
  2. 在您的共享空间上的 Windows Media Player 模块中,键入或粘贴您要播放的授权剪辑的 URL。
  3. 单击“保存”。
  4. 若要测试剪辑,请切换到预览模式。
February, 2006

MSN Space技巧---添加计数器(转帖)

计数器是比较实用的工具,你可以了解自己空间的受欢迎程度.

如果只是在日志中显示来访总数,那么申请一个简单的计数器即可,提供这种服务的网站很多,你在搜索引擎中键入“Free Web Counter”会查找到很多结果,这里我个人推荐http://www.amazingcounters.com/。这个网站提供350多种计数器,款式繁杂,花色多样,绝对满足你的需要。申请时需要注册,但过程很简单,一般只需要提供少量的个人信息即可。注册成功后你就可以选择心仪的计数器了,然后再输入你个人网站的信息,你将获得一段在线生成的HTML页面的代码。某些网站还会提供给你简单的在线编辑功能,让你进一步对计数器的外观作简单的修改,以更好的适合你的需要。将获取的代码拷贝,然后转到你需要插入计数器的MSN Space日志,进入HTML语法编辑状态,将刚才获取的代码粘贴到空白处,再退出HTML编辑状态,在日志文本处理模式下调整计数器的位置。由于MSN Space空间没有提供置顶功能,因此你必须经常调整计数器的位置,将它始终放置在首页的日志中(最好是第一篇日志)。方便起见,你可以将计数器的源代码拷贝到文本文件中,以后调整时将它简单粘贴过来就可以了。

 
 
 
 
              web page hit counter
                           Arizona Personals
January, 2006

【感动】手机上的两颗心

他和她是大学的同学。四年,在一起有四年的时光。四年简简单单的光阴,四年无忧无虑的光阴。他是个高大的男孩,脸上永远挂着最灿烂的笑容。和所有的男孩一样,他粗心,会丢三落四;爱打篮球、爱睡懒觉、爱抱着吉他唱歌、爱和漂亮的师妹聊天。而她,是个平凡的细心的女孩,她爱做梦、爱幻想、爱看男生打篮球,爱远远的有些羞涩地给他们加油。  

  他和她是最普通的朋友。见面仅仅点个头的朋友。但点头以后,她就会心跳,就会脸红。怎么了?她在心里问自己,我……喜欢他吗?她摇摇头,不承认自己的感情。她小心地封闭着自己的感情,小心地注视着自己的心里的王子。而他,丝毫也没有注意到。他有了一个漂亮的女朋友。是的,高高的他,不会注意平凡的她。  

  故事开始在毕业前。那年的散伙饭,大家都像疯了一样;拼命地喝酒,拼命地唱歌。毕业有那么多的快乐,也有那么多的麻烦。他和女朋友终于分手了,毕业让他们分道扬镳。他不停和朋友们喝酒,为自己枯萎的恋情。她一个人,在一个角落,轻轻的为自己斟满了一杯酒。  
    她从不喝酒的,但这一次,她为自己倒了满满的一杯酒。在心里给自己鼓了鼓劲,她走向了他。“祝你前途无量”。她说的有点急促,她的心一直在跳。他可能根本没有看清眼前的她,端起酒杯就喝。酒精让他的眼睛朦胧了。他看着眼前这个平凡的模糊的影子,全乱了,世界全乱了。“是我的公主吗?”他醉了,醉意中的他一把抱住了她。而她,眼泪倾泄而出,为了这错误的拥抱。  

  是的,是错的就是错的。大家很快就毕业了。这个热烈的拥抱,却留在了她的心里。这是她第一次倒在一个男孩的怀里,这是她暗暗爱慕了四年的王子呀。有这个就足够了,她静静地想。王子,只是经常出现在梦里。  

  尽管在一个城市,但大家的联系机会并不多。他在IT界工作,她去了一家著名的通信公司。一年以后了,大家聚会。并不像小说里写的那样,很多同学仍然是独身。他偶然谈起自己很累。他忿忿地说资本主义剥削人,自己只是迟到一天,就被扣掉了一次FRIDAY’S的消费。  
    朋友们都说你这样的懒虫用闹钟是没有用的,闹钟会叫醒手指而不会叫醒大脑,只能有个好心人给一个MORNING CALL才行。一直默默无声的她突然说话了:让我叫你吧。他也惊异。她笑笑,我不用掏电话费而已。他释然了,好,谢谢。  

  就这样,早上七点,他的手机就准时地响起。开始,她只是简单的说:早上好,起床吧。就这样,从夏天,到春天。他们的MORNING CALL的时间越来越长,从半分钟到十分钟。谈谈工作,谈谈天气。他总是谢她。而她刻意地躲开了。她怕他看透自己的心事。她知道他不会爱自己的,自己也没有必要认真。但她真的不认真吗?每天,六点四十她就会醒。再困她也不会睡着。因为她的心在跳个不行,就像大学时见到他一样。  

  又一年过去了。大学的同学已经很少有联系了。而他和她,凭着MORNING CALL,竟然保持着每天一个电话的奇迹!但这个电话只是一个早上的问候,除了这个时间,他们几乎没有任何联系。可能,新年时,有了一张贺卡,他想请她吃饭,她拒绝了。保持着自己的秘密不说,  
    她觉得自己有一份骄傲。而她更加清楚,他不是自己的。就这样,他们用一个非常松懈的方法联系着。他们对彼此的生活并不了解。她病了。老是头痛。有一次她晕倒了,才知道,她得了脑瘤。万分之一的治愈可能。她在医院里。但她依然没忘自己的任务。每天,用自己的手机,拨通他的手机。听着那边的他模模糊糊的回答,她就安心了。她认真完成自己的任务,她也知道,这样的日子不多了。而他高大英俊的身影,一直是她最牵挂的东西。  

  她的病越来越重了。她开始昏迷,她离死亡越来越近。有一种强力的针剂可以把她从昏迷中唤醒,她请求医生,在每天的清晨,给她用这种药。医生答应了,对一个垂死的人,没有什么不能答应。她依然打他的手机,用最快乐的声音,编制最可信的谎话。他好粗心,他什么都没有发觉。 
 他在IT界越做越好,人气渐旺。俨然成了中关村的知识英雄了。人们说他是个敬业守时的人。只有他的第一个老板知道,他爱迟到;只有他的同学知道,他是个懒鬼。他身边总是围绕着美丽的女孩,因为他分明是一个新贵!他会逢场作戏,但没有真心。其实他自己还不知道,每天清晨的那个手机,已经让他习惯。尽管他早就不需要那个MORNING CALL,但他没说,每天早上,他等着那个电话响起。他会问自己:我爱她吗?会娶她吗?不,他摇摇头,她实在太平凡了,没有一丝的眩目,我不要……但他也知道,他习惯了她,他不能过没有她的日子。可能,比较平凡的女孩比较遵守信约,他这样安慰自己。可是,这样的手机联络并不能持续很久。因为,因为,因为她必须走了。她昏迷的时间越来越长。她开始失约,开始没有MORNING CALL.他有些奇怪,但并没有追问,女孩,该有自己的生活。他有时还偷偷笑笑:和男朋友云雨后就给另一个男人打电话当然不好。男孩,都这么粗心吗?  

  她的状况更差了。她在死亡的边缘。她的即将来临的死亡成了联系同学的信息;大量的同学来医院看她。他,终于也知道了这个消息。除了震惊他没有别的感觉。不是好好的吗?不是经常打MORNING CALL吗?尽管有时失约,但毕竟还是准时的呀。他认定她是急病。匆匆的买了一束黄玫瑰,赶往医院。他在心里认定她是他最好的朋友,黄玫瑰,代表友情。  


  他去开自己的车。手机又响了。是不是她?他真的已经习惯了她。不是,这是一个美丽的娇柔的小姐给他的信息:一颗心。他打量着自己的诺基亚,这是一个可以传递图形的手机。两年来,他收到了无数的心、天使,但,没有收到她的。他突然站住了,一个从不说爱的女孩。他很轻易的就想起了她的手机号码,每天都看一遍的数字:13901120521.他念了一遍。一种晕眩的感觉在他的头顶铺开。她是统计和管理这些数字的,她可以为自己挑一个最适合的。原来,每天,她都会说521。想清楚这些,他几乎站不住了。整个世界都转了过来。每天,每天,每天。在那个固定的时刻。她温柔的声音会在这里传到他的耳边——  

  “起床吧,别耽误了。”  

  “要不,你再睡会,我十分钟后叫你?”  

  “今天天冷,当心点。”  

  后来胆子大了,她也会用开玩笑的语气说:想没想我?  
   

  不,不,不。他不能想了。他突然觉得自己是世界上最大的一个笨蛋。他觉得自己说什么也不能失去她。对,不能失去,这种不能失去的感觉,这种害怕失去的痛苦,原来就是爱。他什么也说不出来了。自己可以编出最简洁的程序,可以黑掉世界上任何一个网站,但却看不透一个平凡的女孩。她真的平凡吗?不,不,我要她!他没有办法自己开车了,他叫了TAXI.他要赶到她的身边去,对,带着爱去!在一家花店门口,他叫车停住。他扔下了黄玫瑰。“快,我要红玫瑰,999支!”一个小店,哪有这么多。殷勤的小姐配了99支。  

  99支火红的热烈的欧洲来的玫瑰终于随着他来到了病房。她,在昏迷。几台机器在她身边,发出奇怪的声音,闪着奇怪的图象。他在门外,他和99朵玫瑰一起等,等待她的苏醒。她一定会活着。有我爱她,她会活着!他轻声的呼唤她,我在等你!她终于苏醒过来了。他冲了进来,还有,99朵玫瑰。他趴在了她的耳边,就像每天早上她叫他一样,让自己的声音轻轻的传如她的耳朵:我爱你。她已经完全变了样子。任何人都知道,平凡是对一个不好看的女孩比较客气的评价。是的,她不是漂亮的女孩。而病中的她,更不好看了。可对他来说,他需要什么呢?他不需要漂亮的女孩,他只要一个全心爱他的头脑!他爱她。  

  脑瘤一直在压迫视神经,她实际上已经看不见什么了。他抓住了她的手,温柔的说:我现在没有钻戒,但我真诚地向你求婚。相信我!我只有99朵玫瑰。你是一个不平凡的女孩,你会喜欢玫瑰吗?我怕你不喜欢他们,但……在他眼里,她是那么与众不同,她会喜欢俗气的玫瑰吗?而他,曾经送给过很多人玫瑰呀。他不知道自己该说什么。这不是怜悯不是同情。他知道自己醒悟的太晚了,他知道其实自己早就爱上了她。她小小的柔软的手被握在了他纤细的冰冷的手中。“傻瓜,哪个女孩不喜欢玫瑰?”她颤抖着,说了一句。他把她的手贴在自己的脸上,喃喃的说:我们结婚时,要999朵玫瑰,不9999朵……她微笑着,又是昏迷。  

  几天了,他一直陪在医院。他拒听了一切来电,他的手机只等着一个号码:13901120521.她有时清醒,有时沉睡。  

  而清醒时她就说:真抱歉,我没有一直守约。  

  他就握住她的小小的手,说我真的爱你,一直爱你,我等你。  

  “这是我一生中最快乐的时光”“有你,我才幸福。”  

  他不信这是最后的时光,他要把她唤回,他要她受约,他要她一辈子叫他起床。  

   这天她清醒的时间特长,似乎她又能看见东西了。但她几乎已经不能呼吸,她仍在清晨给了他一个微笑,一个最美的笑。但接着,就是剧烈的头痛和呕吐。仪器上显示她的颅内压已经相当高了。她快走了。而这种情形下,只有她,只有她自己可以体会这种痛苦。医生在诊断  
书上写下:“实行安乐死比较人道。”  

   当然不会,这是最幸福的时光,有他。  

  好静。周围好静。已经是秋天了,树叶从枝头落下,铺满了小路。这是他们初相遇的季节。她望着他,想他们的故事。校园里的心跳,毕业时热烈的拥抱,看似无意的承诺,每天清晨让人又恨又怜的电话铃声,还有那玫瑰。她用眼神示意了一下。他从她的枕头下拿出了她的手机。他第一次见到这个每天叫他的手机。小巧的蓝色的手机,13901120521,他最喜欢的颜色,也是他最喜欢的型号——诺基亚。他掏出了自己的手机。一颗心,他郑重地传递给她一颗心。她微笑了。四周真的好静,只有手机键盘拨号的声音。她,第一次,为他打上了一颗心。  


  她把自己的手机递到了他的面前,缓缓地闭上了眼睛。他拿过了两个手机,把他们挨在一起。屏幕上,那两颗心也靠在了一起 
July, 2005

柏拉图的爱情

柏拉图有一天问老师苏格拉到底甚么是爱情。

苏格拉底叫他到麦田走一次,不要回头地走在途中, 要摘一棵最大最好的麦穗, 


但只可以摘一次,柏拉图觉得很容易,充满信心地出去。


谁知过了半天他仍没有回去,最後,他垂头丧气出现在老师跟前诉说空手而回的原因 : 


很难得看见一株看似不错的,却不知是不是最好的,不得已,因为只可以摘一株, 


只好放弃再看看有没有更好的,到发现已经走到尽头时, 


才惊觉手上一棵麦穗也没有... 


这时,苏格拉底告诉他 : " 那就是爱情 "。
 
July, 2005

鱼与水的完整对白

  鱼对水说:你看不见我的眼泪,因为我在水中。 水对鱼说;我能感觉到你的眼泪,因为你在我心中。 我不是鱼,你也不是水。你能看见我寂寞的眼泪吗?
    鱼对水说:我永远不会离开你,因为离开你,我无法生存。 水对鱼说:我知道,可是如果你的心不在呢? 我不是鱼,你也不是水。我不离开你是因为我爱你。 可是,你的心里有我吗? 鱼对水说:我很寂寞,因为我只能待在水中。 水对鱼说:我知道,因为我的心里装着你的寂寞。 我不是鱼,你也不是水。我寂寞是因为我思念你。 可是,远方的你能感受到吗?
    鱼对水说:如果没有鱼,那水里还会剩下什么? 水对鱼说:如果没有你,那又怎么会有我? 我不是鱼,你也不是水。没有你的爱,我依然会好好的活。 可是,好好的活并不代表我可以把你忘记。 鱼对水说:一辈子不能出去看看外面的世界,是我最大的遗憾。 水对鱼说:一辈子不能打消你的这个念头,是我最大的失败。 我不是鱼,你也不是水。现在的我只想要一个一辈子的承诺。 可是,你负担得起吗? 
    鱼对水说:在你的一生中,我是第几条鱼? 水对鱼说:你不是在水中的第一条鱼,但却是在我心中的第一条。 我不是鱼,你也不是水。我们都不是彼此生命中的第一个, 可是,你知道吗?你却是我第一个想嫁的人。 
    鱼对水说:你相信一见钟情吗? 水对鱼说:当我意识到你是鱼的那一刻,就知道你会游到我的心里。 我不是鱼,你也不是水。我以为我对你的爱不会长久,因为那是一见钟情。 可是,我错了,感情如酒,越封越浓越长久。 
    鱼对水说:为什么每次都是我问你答? 水对鱼说:因为我喜欢在问答中让你了解我的心。 我不是鱼,你也不是水。为什么你总是让我等待? 难道你不知道,等待=失去信心=放弃。 如果我是鱼,而你是水,那该多好!水永远都知道鱼的想法,因为鱼在水心里。 但是我不是鱼,你也不是水。你永远都不知道我的爱, 因为我也许根本就不在你的心里。 (如果有一天,我不再是鱼,你也不再是水,我们之间会怎样?)

叶子和树枝

叶子的离开是风的追求还是树的不挽留? 
叶子离开树枝,是幸福的
也许是带着悲伤离开
因为不想看着心爱的人慢慢死去
习惯了一起,也许 想一起漫漫死去
树枝的幸福是叶子愿望
如果连最后的路程都是一个人过, 那么多么痛苦
因为叶子知道过了寒冷的冬天,会有新的叶子可以陪着树枝
树枝会不断的接触新的树叶 而曾经的那个树叶 树枝是否又会记得?
记得曾经的幸福,因为知道痛苦的滋味
所以叶子是带这悲伤离去的
离去的时候,悲伤。 
却因为对方未来的幸福而心甘情愿
也许树枝早一习惯如此新鲜的生活... 对那些渺小的叶子 不曾顾虑,也不曾理解叶子的感受
到最后 叶子什么都得不到,只能在地上静静的看着眼前的一起.. 无能为力.. 也许那时它已经开始后悔了一切 
叶子是为了树枝的幸福而幸福,没有什么遗憾的
它真的幸福吗?
爱着的人的幸福就是自己的幸福。
快乐着她的快乐。 


 
Photo 1 of 10