zoukankan      html  css  js  c++  java
  • 一个没调好的程序

      1 program rrr(input,output);
      2 type
      3   treetype=record
      4      l,r,d:longint;
      5      xy,x,y,x2,s,t:int64;
      6   end;
      7 var
      8   a:array[0..400040]of treetype;
      9   x,y,s1,s2:array[0..100010]of int64;
     10   j,s,t,sx,sy,sxy,sx2:int64;
     11   n,m,i,opt,l,r:longint;
     12 procedure build(k,l,r:longint);
     13 var
     14   mid,i:longint;
     15 begin
     16    a[k].l:=l;a[k].r:=r;a[k].d:=0;a[k].s:=0;a[k].t:=0;
     17    if l=r then begin a[k].x:=x[l];a[k].y:=y[l];a[k].xy:=x[l]*y[l];a[k].x2:=x[l]*x[l];exit; end;
     18    mid:=(l+r)>>1;i:=k+k;
     19    build(i,l,mid);build(i+1,mid+1,r);
     20    a[k].x:=a[i].x+a[i+1].x;a[k].y:=a[i].y+a[i+1].y;a[k].xy:=a[i].xy+a[i+1].xy;a[k].x2:=a[i].x2+a[i+1].x2;
     21 end;
     22 procedure pushdown(k:longint);
     23 var
     24   i:longint;
     25 begin
     26    if a[k].l=a[k].r then exit;
     27    if (a[k].d=0) and (a[k].s=0) and (a[k].t=0) then exit;
     28    if a[k].d=1 then
     29       begin
     30          i:=k+k;a[i].x:=s1[a[i].r]-s1[a[i].l-1];a[i].y:=a[i].x;a[i].x2:=s2[a[i].r]-s2[a[i].l-1];a[i].xy:=a[i].x2;a[i].d:=1;a[i].s:=0;a[i].t:=0;
     31          inc(i);a[i].x:=s1[a[i].r]-s1[a[i].l-1];a[i].y:=a[i].x;a[i].x2:=s2[a[i].r]-s2[a[i].l-1];a[i].xy:=a[i].x2;a[i].d:=1;a[i].s:=0;a[i].t:=0;
     32          a[k].d:=0;
     33       end;
     34    if (a[k].s=0) and (a[k].t=0) then exit;
     35    i:=k+k;j:=a[i].r-a[i].l+1;
     36    a[i].x2:=a[i].x2+2*a[k].s*a[i].x+s*s*j;a[i].xy:=a[i].xy+a[k].s*a[i].y+a[k].t*a[i].x+s*t*j;
     37    a[i].x:=a[i].x+j*a[k].s;a[i].y:=a[i].y+j*a[k].t;inc(a[i].s,a[k].s);inc(a[i].t,a[k].t);
     38    inc(i);j:=a[i].r-a[i].l+1;
     39    a[i].x2:=a[i].x2+2*a[k].s*a[i].x+s*s*j;a[i].xy:=a[i].xy+a[k].s*a[i].y+a[k].t*a[i].x+s*t*j;
     40    a[i].x:=a[i].x+j*a[k].s;a[i].y:=a[i].y+j*a[k].t;inc(a[i].s,a[k].s);inc(a[i].t,a[k].t);
     41    a[k].s:=0;a[k].t:=0;
     42 end;
     43 procedure change1(k:longint);
     44 var
     45   mid,i:longint;
     46 begin
     47    pushdown(k);
     48    if (l<=a[k].l) and (a[k].r<=r) then
     49       begin
     50          j:=a[k].r-a[k].l+1;
     51          a[k].x2:=a[k].x2+2*s*a[k].x+s*s*j;a[k].xy:=a[k].xy+s*a[k].y+t*a[k].x+s*t*j;
     52          a[k].x:=a[k].x+j*s;a[k].y:=a[k].y+j*t;a[k].s:=s;a[k].t:=t;
     53          exit;
     54       end;
     55    mid:=(a[k].l+a[k].r)>>1;i:=k+k;
     56    if l<=mid then change1(i);
     57    if mid<r then change1(i+1);
     58    a[k].x:=a[i].x+a[i+1].x;a[k].y:=a[i].y+a[i+1].y;a[k].xy:=a[i].xy+a[i+1].xy;a[k].x2:=a[i].x2+a[i+1].x2;
     59 end;
     60 procedure change2(k:longint);
     61 var
     62   mid,i:longint;
     63 begin
     64    pushdown(k);
     65    if (l<=a[k].l) and (a[k].r<=r) then
     66       begin
     67          a[k].x:=s1[a[k].r]-s1[a[k].l-1];a[k].y:=a[k].x;a[k].x2:=s2[a[k].r]-s2[a[k].l-1];a[k].xy:=a[k].x2;a[k].d:=1;
     68          j:=a[k].r-a[k].l+1;
     69          a[k].x2:=a[k].x2+2*s*a[k].x+s*s*j;a[k].xy:=a[k].xy+s*a[k].y+t*a[k].x+s*t*j;
     70          a[k].x:=a[k].x+j*s;a[k].y:=a[k].y+j*t;a[k].s:=s;a[k].t:=t;
     71          exit;
     72       end;
     73    mid:=(a[k].l+a[k].r)>>1;i:=k+k;
     74    if l<=mid then change2(i);
     75    if mid<r then change2(i+1);
     76    a[k].x:=a[i].x+a[i+1].x;a[k].y:=a[i].y+a[i+1].y;a[k].xy:=a[i].xy+a[i+1].xy;a[k].x2:=a[i].x2+a[i+1].x2;
     77 end;
     78 procedure query(k:longint);
     79 var
     80   mid:longint;
     81 begin
     82    pushdown(k);
     83    if (l<=a[k].l) and (a[k].r<=r) then
     84       begin inc(sx,a[k].x);inc(sy,a[k].y);inc(sx2,a[k].x2);inc(sxy,a[k].xy);exit; end;
     85    mid:=(a[k].l+a[k].r)>>1;
     86    if l<=mid then query(k+k);
     87    if mid<r then query(k+k+1);
     88 end;
     89 begin
     90    assign(input,'relative.in');assign(output,'relative.out');reset(input);rewrite(output);
     91    readln(n,m);
     92    for i:=1 to n do read(x[i]);for i:=1 to n do read(y[i]);
     93    build(1,1,n);
     94    s1[0]:=0;s2[0]:=0;j:=0;while j<n do begin inc(j);s1[j]:=s1[j-1]+j;s2[j]:=s2[j-1]+j*j; end;
     95    for i:=1 to m do
     96       begin
     97          read(opt,l,r);
     98          if opt=1 then
     99             begin
    100                sx:=0;sx2:=0;sy:=0;sxy:=0;query(1);
    101                j:=r-l+1;writeln(sx,' ',sy,' ',sx2,' ',sxy);//writeln((j*sxy-sx*sy)/(j*sx2-sx*sx):0:10);
    102             end
    103          else begin readln(s,t);if opt=2 then change1(1) else change2(1); end;
    104       end;
    105    close(input);close(output);
    106 end.
  • 相关阅读:
    UVA12125 March of the Penguins (最大流+拆点)
    UVA 1317 Concert Hall Scheduling(最小费用最大流)
    UVA10249 The Grand Dinner(最大流)
    UVA1349 Optimal Bus Route Design(KM最佳完美匹配)
    UVA1212 Duopoly(最大流最小割)
    UVA1395 Slim Span(kruskal)
    UVA1045 The Great Wall Game(二分图最佳匹配)
    UVA12168 Cat vs. Dog( 二分图最大独立集)
    hdu3488Tour(KM最佳完美匹配)
    UVA1345 Jamie's Contact Groups(最大流+二分)
  • 原文地址:https://www.cnblogs.com/Currier/p/6706896.html
Copyright © 2011-2022 走看看