bug报告、建议专用帖
  • 板块站务版
  • 楼主lzn
  • 当前回复1324
  • 已保存回复1325
  • 发布时间2013/5/14 18:39
  • 上次更新2025/2/3 15:57:58
查看原帖
bug报告、建议专用帖
2
lzn楼主2013/5/14 18:39

由于水平有限,网站建设难免有疏漏之处,非常欢迎在这里提出意见和建议,我们将对好的建议或者bug报告给予经验和财富奖励。[br]感谢您对洛谷OnlineJudge的支持!

2013/5/14 18:39
3843
BDF12016/4/4 22:11

P1073 最优贸易

明明每个点都通过,怎么才60分???

[codec]

#include<cstring>
#include<cstdio>
using namespace std;
struct tree{tree* n;int d;};
typedef tree* node;
node a[100001],a_[100001],b[100001],b_[100001];
int n,m,i,j,x,y,k;bool c[100001],c_[100001];
bool bb;int Max[100001],Min[100001],d[100001];node l,r,s;
void add(int x,int y){
    if(c[x]){b[x]->d=y;b[x]->n=new(tree);b[x]=b[x]->n;b[x]->n=NULL;b[x]->d=-1;}
    else{a[x]=new(tree);a[x]->d=y;a[x]->n=new(tree);b[x]=a[x]->n;b[x]->n=NULL;b[x]->d=-1;}
    c[x]=true;
}
void add_(int x,int y){
    if(c_[x]){b_[x]->d=y;b_[x]->n=new(tree);b_[x]=b_[x]->n;b_[x]->n=NULL;b_[x]->d=-1;}
    else{a_[x]=new(tree);a_[x]->d=y;a_[x]->n=new(tree);b_[x]=a_[x]->n;b_[x]->n=NULL;b_[x]->d=-1;}
    c_[x]=true;
}
int main()
{
    scanf("%d%d",&n,&m);for(i=1;i<=n;i++)a[i]=NULL;
    for(i=1;i<=n;i++)scanf("%d",&d[i]);
    for(i=1;i<=m;i++){
        scanf("%d%d%d",&x,&y,&k);
        if(k<2)add(x,y);else{add(x,y);add(y,x);}
        if(k<2)add_(y,x);else{add_(y,x);add_(x,y);}
    }
    l=new(tree);r=l;l->n=NULL;l->d=1;bb=true;memset(Min,1,sizeof(Min));Min[1]=d[1];
    while(bb){
        s=a[l->d];
        if(s!=NULL)
        while(s->d!=-1){
            if((Min[s->d]>d[s->d])||(Min[s->d]>Min[l->d])){
                r->n=new(tree);r=r->n;r->d=s->d;r->n=NULL;
                if(d[s->d]>Min[l->d])Min[s->d]=Min[l->d];else Min[s->d]=d[s->d];
            }
            s=s->n;
        }
        if(l==r)bb=false;else{s=l->n;delete(l);l=s;}
    }
    delete(l);
    l=new(tree);r=l;l->n=NULL;l->d=n;bb=true;memset(Max,0,sizeof(Max));Max[n]=d[n];
    while(bb){
        s=a_[l->d];
        if(s!=NULL)
        while(s->d!=-1){
            if((Max[s->d]<d[s->d])||(Max[s->d]<Max[l->d])){
                r->n=new(tree);r=r->n;r->d=s->d;r->n=NULL;
                if(d[s->d]<Max[l->d])Max[s->d]=Max[l->d];else Max[s->d]=d[s->d];
            }
            s=s->n;
        }
        if(l==r)bb=false;else{s=l->n;delete(l);l=s;}
    };delete(l);k=0;
    for(i=1;i<=n;i++)if(Max[i]-Min[i]>k)k=Max[i]-Min[i];
    printf("%d\n",k);
    return 0;
}

[/codec]

2016/4/4 22:11
3843
BDF12016/4/4 22:30

@[url=/space/show?uid=1]kkksc03[/url]

P1073 最优贸易

我把以前能做对这道题目的pascal程序,结果又出现了和楼上一样的情况,这次是80分

[codep]

type node=^tree;
tree=record d:longint;n:node;end;
var a,a_,b,b_:array[1..100000]of node;
c,c_:array[1..100000]of boolean;n,m,i,j,x,y,k:longint;
L,R,s:node;max,min,d:array[1..100000]of longint;bb:boolean;
procedure add(x,y:longint);
begin
  if c[x] then begin b[x]^.d:=y;new(b[x]^.n);b[x]:=b[x]^.n;b[x]^.n:=nil;b[x]^.d:=-1;end
  else begin new(a[x]);a[x]^.d:=y;new(a[x]^.n);b[x]:=a[x]^.n;b[x]^.n:=nil;b[x]^.d:=-1;end;
  c[x]:=true;
end;
procedure add_(x,y:longint);
begin
  if c_[x] then begin b_[x]^.d:=y;new(b_[x]^.n);b_[x]:=b_[x]^.n;b_[x]^.n:=nil;b_[x]^.d:=-1;end
  else begin new(a_[x]);a_[x]^.d:=y;new(a_[x]^.n);b_[x]:=a_[x]^.n;b_[x]^.n:=nil;b_[x]^.d:=-1;end;
  c_[x]:=true;
end;
begin
  read(n,m);for i:=1 to n do a[i]:=nil;
  for i:=1 to n do read(d[i]);
  for i:=1 to m do begin
    read(x,y,k);
    if k<2 then add(x,y)else begin add(x,y);add(y,x);end;
    if k<2 then add_(y,x)else begin add_(y,x);add_(x,y);end;
  end;
  new(l);r:=l;l^.n:=nil;l^.d:=1;bb:=true;fillchar(min,sizeof(min),1);min[1]:=d[1];
  while bb do begin
    s:=a[l^.d];
    if s<>nil then
    while s^.d<>-1 do begin
      if (min[s^.d]>d[s^.d])or(min[s^.d]>min[l^.d])
      then begin
        new(r^.n);r:=r^.n;r^.d:=s^.d;r^.n:=nil;
        if d[s^.d]>min[l^.d]then min[s^.d]:=min[l^.d]else min[s^.d]:=d[s^.d];
      end;
      s:=s^.n;
    end;
    if l=r then bb:=false else begin s:=l^.n;dispose(l);l:=s;end;
  end;dispose(l);
  new(l);r:=l;l^.n:=nil;l^.d:=n;bb:=true;fillchar(max,sizeof(max),0);max[n]:=d[n];
  while bb do begin
    s:=a_[l^.d];
    if s<>nil then
    while s^.d<>-1 do begin
      if (max[s^.d]<d[s^.d])or(max[s^.d]<max[l^.d])
      then begin
        new(r^.n);r:=r^.n;r^.d:=s^.d;r^.n:=nil;
        if d[s^.d]<max[l^.d]then max[s^.d]:=max[l^.d]else max[s^.d]:=d[s^.d];
      end;
      s:=s^.n;
    end;
    if l=r then bb:=false else begin s:=l^.n;dispose(l);l:=s;end;
  end;dispose(l);k:=0;
  for i:=1 to n do if max[i]-min[i]>k then k:=max[i]-min[i];
  writeln(k);
end.
[/codep]
2016/4/4 22:30
3843
BDF12016/4/4 22:34

前面是洛谷2.0发的,可能在3.0看不到图片,于是在洛谷3.0再发一遍

@kkksc03

P1073 最优贸易

我把以前能做对这道题目的pascal程序,结果又出现了和楼上一样的情况,这次是80分

type node=^tree;
tree=record d:longint;n:node;end;
var a,a_,b,b_:array[1..100000]of node;
c,c_:array[1..100000]of boolean;n,m,i,j,x,y,k:longint;
L,R,s:node;max,min,d:array[1..100000]of longint;bb:boolean;
procedure add(x,y:longint);
begin
  if c[x] then begin b[x]^.d:=y;new(b[x]^.n);b[x]:=b[x]^.n;b[x]^.n:=nil;b[x]^.d:=-1;end
  else begin new(a[x]);a[x]^.d:=y;new(a[x]^.n);b[x]:=a[x]^.n;b[x]^.n:=nil;b[x]^.d:=-1;end;
  c[x]:=true;
end;
procedure add_(x,y:longint);
begin
  if c_[x] then begin b_[x]^.d:=y;new(b_[x]^.n);b_[x]:=b_[x]^.n;b_[x]^.n:=nil;b_[x]^.d:=-1;end
  else begin new(a_[x]);a_[x]^.d:=y;new(a_[x]^.n);b_[x]:=a_[x]^.n;b_[x]^.n:=nil;b_[x]^.d:=-1;end;
  c_[x]:=true;
end;
begin
  read(n,m);for i:=1 to n do a[i]:=nil;
  for i:=1 to n do read(d[i]);
  for i:=1 to m do begin
    read(x,y,k);
    if k<2 then add(x,y)else begin add(x,y);add(y,x);end;
    if k<2 then add_(y,x)else begin add_(y,x);add_(x,y);end;
  end;
  new(l);r:=l;l^.n:=nil;l^.d:=1;bb:=true;fillchar(min,sizeof(min),1);min[1]:=d[1];
  while bb do begin
    s:=a[l^.d];
    if s<>nil then
    while s^.d<>-1 do begin
      if (min[s^.d]>d[s^.d])or(min[s^.d]>min[l^.d])
      then begin
        new(r^.n);r:=r^.n;r^.d:=s^.d;r^.n:=nil;
        if d[s^.d]>min[l^.d]then min[s^.d]:=min[l^.d]else min[s^.d]:=d[s^.d];
      end;
      s:=s^.n;
    end;
    if l=r then bb:=false else begin s:=l^.n;dispose(l);l:=s;end;
  end;dispose(l);
  new(l);r:=l;l^.n:=nil;l^.d:=n;bb:=true;fillchar(max,sizeof(max),0);max[n]:=d[n];
  while bb do begin
    s:=a_[l^.d];
    if s<>nil then
    while s^.d<>-1 do begin
      if (max[s^.d]<d[s^.d])or(max[s^.d]<max[l^.d])
      then begin
        new(r^.n);r:=r^.n;r^.d:=s^.d;r^.n:=nil;
        if d[s^.d]<max[l^.d]then max[s^.d]:=max[l^.d]else max[s^.d]:=d[s^.d];
      end;
      s:=s^.n;
    end;
    if l=r then bb:=false else begin s:=l^.n;dispose(l);l:=s;end;
  end;dispose(l);k:=0;
  for i:=1 to n do if max[i]-min[i]>k then k:=max[i]-min[i];
  writeln(k);
end.
2016/4/4 22:34
16515
lushaoqin20072016/4/4 22:55

瑞士轮P1309题,分点评测全过,总分显示70

2016/4/4 22:55
14375
kongksora2016/4/5 13:15

为什么比赛最多只能进行一天呢?

2016/4/5 13:15
14375
kongksora2016/4/5 13:16

洛谷2好像不是这样的

2016/4/5 13:16
14375
kongksora2016/4/5 17:06

@lzn 同上

2016/4/5 17:06
12825
YczSS2016/4/6 11:34

you are *@#$$^#@

2016/4/6 11:34
14436
zhanglexing2016/4/7 07:51

网页上,下有以下这段:

A PHP Error was encountered

Severity: Warning

Message: session_start(): open(C:\xampp\tmp\sess_u5dl2pvkls9sd5ts9f5tn7rdh4, O_RDWR) failed: Permission denied (13)

Filename: libraries/Auth.php

Line Number: 7

2016/4/7 07:51