Детёныши ВП

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



ACMP

Сообщений 1 страница 24 из 24

1

Если есть вопросы по решению задач с сайта acmp.ru пишите их сюда

0

2

кому надо №338(Ласкутки)  сделано с помощью алгаритма Очередь

правда у неё ран таим на 5 тесте

var a:array [0..101,0..1001] of longint;
Q:array [1..2,1..10000] of longint;
i,j,n,m,UN,UK,i1,j1,SK,x1,y1:longint;

Procedure Sosed(x,y:longint);
begin
if a[x,y]=0 then begin
                  Q[1,UK]:=x; Q[2,UK]:=y;
                  UK:=UK+1; a[x,y]:=-1;
                 end;
end;

Begin

readln(n,m);
for i:=1 to n do
for j:=1 to m do read(a[i,j]);
for i:=0 to m+1 do begin
                   a[i,0]:=-1;
                   a[i,m+1]:=-1;
                   end;
for j:=1 to m do begin
                  A[0,j]:=-1;
                  a[n+1,j]:=-1;
                 end;
SK:=0;
for i:=1 to n do
for j:=1 to m do
  if a[i,j]=0 then begin UN:=1; UK:=1; SK:=SK+1; Q[1,UK]:=i; Q[2,UK]:=j; UK:=UK+1; a[i,j]:=SK;
   while UN<>UK do begin
                   i1:=Q[1,UN];
                   j1:=Q[2,UN];
                   UN:=UN+1;
                   Sosed(i1-1,j1);
                   Sosed(i1+1,j1);
                   Sosed(i1,j1-1);
                   Sosed(i1,j1+1);
                   end;
                   end;
writeln(SK);

end.

0

3

новая версия задачи
var a:array [-100..1001,-100..1001] of longint;
Q:array [1..2,1..10000] of longint;
i,j,n,m,UN,UK,i1,j1,SK,x1,y1,l:longint;

Procedure Sosed(x,y:longint);
begin

if a[x,y]=0 then begin
                  Q[1,UK]:=x; Q[2,UK]:=y;
                  UK:=UK+1; a[x,y]:=sk;
                 end;
end;

Begin

 
readln(n,m);
if (n=0) or (m=0 ) then begin writeln(0); exit; end;
for i:=1 to n do
for j:=1 to m do read(a[i,j]);
for i:=0 to m+1 do begin
                   a[i,0]:=1;
                   a[i,m+1]:=1;
                   end;
for j:=1 to m do begin
                  A[0,j]:=1;
                  a[n+1,j]:=1;
                 end;
SK:=1;
for i:=1 to n do
for j:=1 to m do
  if a[i,j]=0 then begin UN:=1; UK:=1; SK:=SK+1; Q[1,UK]:=i; Q[2,UK]:=j; UK:=UK+1; a[i,j]:=sk;
   while UN<>UK do begin
                   i1:=Q[1,UN];
                   j1:=Q[2,UN];
                   UN:=UN+1;
                   Sosed(i1-1,j1);
                   Sosed(i1+1,j1);
                   Sosed(i1,j1-1);
                   Sosed(i1,j1+1);
                   end;
                   end;
writeln(SK-1);
for i:=0 to n+1 do begin
for j:=0 to m+1 do  write(a[i,j]:3);
writeln;
end;

end.

0

4

правда тоже рантаим помогите кто решил

0

5

Я решил, вот решение.

Код:
var a:array [0..101,0..1001] of longint;
Q:array [1..2,1..10000] of longint;
i,j,n,m,UN,UK,i1,j1,SK,k,x1,y1:longint;
Procedure Sosed(x,y:longint);
begin
if a[x,y]=0 then begin
                  Q[1,UK]:=x; Q[2,UK]:=y;
                  UK:=UK+1; a[x,y]:=SK;
                 end;
end;
Begin
assign(input, 'input.txt');
reset(input);
assign(output, 'output.txt');
rewrite(output);
readln(n,m);
//readln(k);
for i := 1 to n do
  for j := 1 to m do
    begin
    read(a[i,j]);
    a[i,j] := -a[i, j];
    end;
for i:=0 to m + 1 do begin
                   a[0,i]:=-1;
                   a[n+1,i]:=-1;
                   end;
for i:=1 to n do begin
                  A[i, 0]:=-1;
                  a[i, m+1]:=-1;
                 end;
SK:=0;
for i:=1 to n do
for j:=1 to m do
  if a[i,j]=0 then begin UN:=1; UK:=1; SK:=SK+1; Q[1,UK]:=i; Q[2,UK]:=j; UK:=UK+1; a[i,j]:=SK;
   while UN<>UK do begin
                   i1:=Q[1,UN];
                   j1:=Q[2,UN];
                   UN:=UN+1;
                   Sosed(i1-1,j1);
                   Sosed(i1+1,j1);
                   Sosed(i1,j1-1);
                   Sosed(i1,j1+1);
                   end;
                   end;
{for i:=1 to n do begin
for j:=1 to m do  write(a[i,j]:3); 
writeln;
end;}
writeln(sk);
end.

+1

6

ты крут а где в моём ошибка

0

7

Всё спс у меня тоже пошла теперь кста подскожи нащёт ошибок  :idea:

+1

8

Я писал про ошибку в вашем алгоритме очередь ;)

0

9

Боулинг
var p:array[1..10]of longint;a:array[1..100]of longint;n,i,t,x:longint;
begin
  assign(input, 'input.txt');reset(input);
  assign(output, 'output.txt');rewrite(output);
  readln(n);
  for i:=1 to n do read(a[i]);
  i:=1;
  for t:=1 to 10 do
  begin
    if a[i]=10 then begin p[t]:=10+a[i+1]+a[i+2];i:=i+1; end
    else if a[i]+a[i+1]=10 then begin p[t]:=10+a[i+2];i:=i+2; end
         else begin p[t]:=a[i]+a[i+1];i:=i+2; end;
  end;
  x:=0;
  for i:=1 to 10 do x:=x+p[i];
  writeln(x);
end.

0

10

Проблема с задачей на acmp.ru Друзья. Вроде код такой как писали в классе.

Код:
var g:array[1..1000,1..1000]of longint;
n,i,s,k,j:longint;
p:array[1..1000]of boolean;
procedure DFS(v:integer);
var j:integer;
begin
p[v]:=false;
for j:=1 to n do
if (G[v,i]=1)and(p[j]=true) then DFS(j);
end;
begin
assign(input, 'input.txt'); reset(input);
  assign(output, 'output.txt'); rewrite(output);
read(n,s);
for i:=1 to n do
for j:=1 to n do
read(g[i,j]);
k:=-1;
for i:=1 to n do p[i]:=true;
for i:=1 to n do
if p[i]=true then begin
k:=k+1;
DFS(i);end;
write(k);
end.

Что не так на третьем тесте не проходит!!

0

11

Алёха написал(а):

for j:=1 to n do
                       if (G[v,i]=1)and(p[j]=true) then DFS(j);

У тебя счетчит j а в ифе на написано G[v,i] исправь

Алёха написал(а):

for i:=1 to n do if p[i]=true then begin k:=k+1; DFS(i);end;

Зачем это ведь надо просто DFS(s); но тогда в процедуре добавь k:=k+1;

0

12

Так как ты сказал я вроде исправил, но все6 равно ошибка на 3-ем тесте((

Код:
var g:array[1..1000,1..1000]of longint;
n,i,s,k,j:longint;
p:array[1..1000]of boolean;
procedure DFS(v:integer);
var j:integer;
begin
p[v]:=false;
for j:=1 to n do
if (G[v,j]=1)and(p[j]=true) then DFS(j);k:=k+1;
end;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(n,s);
for i:=1 to n do
for j:=1 to n do
read(g[i,j]);
k:=-1;
for i:=1 to n do p[i]:=true;
for i:=1 to n do
if p[i]=true then begin
DFS(s);end;
write(k);
end.

P.S Не помогайте ему!!!!

0

13

Алёха написал(а):

for i:=1 to n do p[i]:=true;
for i:=1 to n do
if p[i]=true then begin
DFS(s);end;

Это убери напиши DFS(s); и в процедуре добавь k:=k+1;

begin

p[v]:=false;
k:=k+1;
for j:=1 to ...
   end;

вот так напиши в процедуре

0

14

Код:
var p:array [1..1000] of boolean;
    g:array [1..100,1..100] of longint;
    k,i,n,s,j:longint;

procedure dfs(v:longint);
var i:longint;
 begin
 
 p[v]:=false;
 k:=k+1;
 
 for i:=1 to n do
  if (g[v,i]=1)and(p[i]=true) then dfs(i);
 
 end;
 
begin

   assign(input, 'input.txt'); reset(input);
 assign(output, 'output.txt'); rewrite(output); 
 
readln(n,s);

for i:=1 to n do
 for j:=1 to n do
 read(g[i,j]);
 
for i:=1 to n do
p[i]:=true;

k:=-1;
dfs(s);
writeln(k);

end.

Вот как у меня

0

15

Спасибо!
Я разобрался с этой задачей)

0

16

Раз-два, раз-два

var a,b:array[1..300]of integer;
    i,j,n,l:integer;
    f:boolean;
procedure del(var k:integer);
var x:array[1..300]of integer;
    i,os:integer;
begin
        os:=0;
        for i:=k downto 1 do
        begin
                x[i]:=(os*10+b[i])div 2;
                os:=(os*10+b[i])mod 2;
        end;
        while x[k]=0 do k:=k-1;
        for i:=1 to k do b[i]:=x[i];
end;
begin
        assign(input, 'input.txt');reset(input);
        assign(output, 'output.txt');rewrite(output);
        readln(n);
        a[1]:=2;
        for i:=2 to n do
        begin
                a[i]:=1;
                f:=true;
                for j:=1 to n do b[j]:=a[j];
                l:=i;
                for j:=1 to i do
                begin
                        f:=(b[1]mod 2=0);
                        if f then del(l) else break;
                end;
                if not(f) then a[i]:=2;
        end;
        for i:=n downto 1 do write(a[i]);
end.

0

17

барбара спасибо!

0

18

Тебе не задрало тупо копиравать

0

19

чтоб ты знал я идею взял а написал свои кодом.

0

20

Игра с монеткой

var p:array[0..20]of byte;
    n,m,k,s,i:longint;
begin
        assign(input, 'input.txt');reset(input);
        assign(output, 'output.txt');rewrite(output);
        readln(n,m);
        for i:=0 to n do p[i]:=0;
        k:=0;
        while p[0]=0 do
        begin
                s:=0;
                for i:=1 to n do
                s:=s+p[i];
                if s>=m then k:=k+1;
                i:=n;
                while p[i]=1 do
                begin
                        p[i]:=0;
                        i:=i-1;
                end;
                p[i]:=1;
        end;
        writeln(k);
end.

+1

21

Кто сделал задачу Профессор на acmp.ru можете объяснить!

0

22

№465
var f:array[1..1000]of ansistring;i,n:integer;
function sum(a,b:ansistring):ansistring;
var x,y,z:array[1..10000]of integer;nx,ny,nz,i,err:integer;ans,c:ansistring;
begin
        nx:=length(a);ny:=length(b);
        for i:=1 to nx do val(a[i],x[nx-i+1],err);
        for i:=1 to ny do val(b[i],y[ny-i+1],err);
        if nx>ny then nz:=nx else nz:=ny;
        for i:=1 to nz+1 do z[i]:=0;
        for i:=1 to nz do
        begin
                z[i]:=z[i]+x[i]+y[i];
                if z[i]>9 then begin z[i+1]:=1;z[i]:=z[i] mod 10; end;
        end;
        if z[nz+1]>0 then nz:=nz+1;
        ans:='';
        for i:=nz downto 1 do begin str(z[i],c);ans:=ans+c; end;
        sum:=ans;
end;
begin
        assign(input, 'input.txt'); reset(input);
        assign(output, 'output.txt'); rewrite(output);
        readln(n);
        f[1]:='2';f[2]:='3';
        for i:=3 to n do f[i]:=sum(f[i-2],f[i-1]);
        writeln(f[n]);
end.

0

23

413 Военная база
на 4 тесте выдает Time limit exceeded помогите код подправить?

Все уже сделала!

var t: array [1..500,1..500] of integer;
  n,m,i,j,kol:integer;
  s:char;

begin

  assign (input,'input.txt');
  assign (output,'output.txt');
readln(n,m);
kol:=1;
for i := 1 to n do
   begin
     for j := 1 to m do begin read(s);
     if s='#' then
      t[i,j]:=-1;
     end;
     readln;
   end;

 

  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
    if t[i,j]=-1 then
    if t[i-1,j]>0 then

       t[i,j]:= t[i-1,j]

      else

        if t[i,j-1]>0 then

          t[i,j]:= t[i,j-1]

        else
        begin
         t[i,j]:=kol;
         inc(kol);
        end;

    end;
end;

write(kol-1);

end.

Отредактировано Марина (2012-02-15 10:11:19)

0

24

Кто сделал задачу Строительство на acmp.ru можете объяснить!

0