Форум Всеукраїнської інтернет-олімпіади NetOI


На форумі обговорюються лише питання, пов'язані з олімпіадою

Ви не зайшли.

#76 2009-11-29 15:35:57

Присяжнюк А.В.
Новий користувач
Звідки: Бердичів СЗОШ 17
Зареєстрований: 2005-11-19
Повідомлень: 140
Вебсайт

Re: Обсуждение решений

Loginf написав:

Выложьте плиз кто-то решение на 2 задачу 20/20.

А зачем?
Можно здесь попытаться решить и здать он-лайн, или у нас ее аналог: "2 окружности". От этого пользы больше будет.
Там всего 7 случаев, которые достаточно нарисовать на листочке и написать алгоритм.


Права на ошибку не имеет тот, кто ничего не делает...

Поза форумом

 

#77 2009-11-29 15:41:05

Зевс
Новий користувач
Зареєстрований: 2009-11-03
Повідомлень: 62

Re: Обсуждение решений

Я вот не могу понять, у меня за tangent - 16, а вроди решение - точ-в-точ, как у других, только я растояние считаю в квадрате. И за что 4 бала сняли????????????????????

#include <iostream>
using namespace std;


int main()
{
  long long d, r_1, r_2;
  int x1, y1, r1, x2, y2, r2;

  scanf("%d%d%d%d%d%d", &x1, &y1, &r1, &x2, &y2, &r2);

  d=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);

  r_1=(r1+r2)*(r1+r2);
  r_2=(r1-r2)*(r1-r2);
  if ( (x1==x2) && (y1==y2) && (r1==r2) ) printf("%d\n", 7); else
  if (d>r_1) printf("%d\n", 4); else
  if (d==r_1) printf("%d\n", 3); else
  if ( (r_2<d) && (d<r_1) ) printf("%d\n", 2); else
  if (d==r_2) printf("%d\n", 1); else
  printf("%d\n", 0);
 
}

Поза форумом

 

#78 2009-11-29 15:41:32

Loginf
Новий користувач
Зареєстрований: 2009-11-25
Повідомлень: 37

Re: Обсуждение решений

Присяжнюк А.В. написав:

Loginf написав:

Выложьте плиз кто-то решение на 2 задачу 20/20.

А зачем?
Можно здесь попытаться решить и здать он-лайн, или у нас ее аналог: "2 окружности". От этого пользы больше будет.
Там всего 7 случаев, которые достаточно нарисовать на листочке и написать алгоритм.

Чтоб сравнить с своим...у меня на 8ом и 9ом тестах (Bad data) на 10ом (Wrong answer)((

Поза форумом

 

#79 2009-11-29 15:50:40

Зевс
Новий користувач
Зареєстрований: 2009-11-03
Повідомлень: 62

Re: Обсуждение решений

У меня за случай r1=0, r2=0, точки не совпадают сняли 4 балла sad - я считаю это неправильным - считать окружность радиуса 0(тем более, что в условии не того, что может быть 0), и только из за этого - 4 теста

Поза форумом

 

#80 2009-11-29 15:51:42

Loginf
Новий користувач
Зареєстрований: 2009-11-25
Повідомлень: 37

Re: Обсуждение решений

Зевс написав:

У меня за случай r1=0, r2=0, точки не совпадают сняли 4 балла sad - я считаю это неправильным - считать окружность радиуса 0(тем более, что в условии не того, что может быть 0), и только из за этого - 4 теста

Вообщето там 10 тестов, и за каждый по 2 бала)
http://www2.olymp.vinnica.ua/cgi-bin/v_ … nguage=ukr

п.с. что значит Bad data ?smile

Відредаговано Loginf (2009-11-29 15:53:19)

Поза форумом

 

#81 2009-11-29 15:54:27

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: Обсуждение решений

Зевс написав:

У меня за случай r1=0, r2=0, точки не совпадают сняли 4 балла sad - я считаю это неправильным - считать окружность радиуса 0(тем более, что в условии не того, что может быть 0), и только из за этого - 4 теста

Та нету там окружностей с 0м радиусом. Я не учитывал и у меня 20

Поза форумом

 

#82 2009-11-29 15:55:23

Зевс
Новий користувач
Зареєстрований: 2009-11-03
Повідомлень: 62

Re: Обсуждение решений

Я и не знал.
Но суть та же - окружности радиуса 0 - ни в одном нормальном(!) школьном(!) учебнике такого нет, да и в википедии тоже так.

Поза форумом

 

#83 2009-11-29 15:56:21

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: Обсуждение решений

и  здесь в тестах такого тоже нет)

Поза форумом

 

#84 2009-11-29 15:56:48

Loginf
Новий користувач
Зареєстрований: 2009-11-25
Повідомлень: 37

Re: Обсуждение решений

Что Bad data означает?)

Поза форумом

 

#85 2009-11-29 15:57:51

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: Обсуждение решений

Loginf написав:

Что Bad data означает?)

Ну когда тебя просят вывести число, а ты выводишь текст. Что-то типа такого...

Поза форумом

 

#86 2009-11-29 15:58:16

Зевс
Новий користувач
Зареєстрований: 2009-11-03
Повідомлень: 62

Re: Обсуждение решений

Я код выложил выше, что у меня тогда не верно??????????????????????????

Поза форумом

 

#87 2009-11-29 16:04:41

Зевс
Новий користувач
Зареєстрований: 2009-11-03
Повідомлень: 62

Re: Обсуждение решений

Ошибку я нашел - переполнение.
Про 0 - извиняюсь.

Поза форумом

 

#88 2009-11-29 16:40:30

yvanko
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 9

Re: Обсуждение решений

Ну да, логично, у тебя же координаты в интах. Сначала посмотрел что радиусы и расстояние лонг лонг вроде показалось что должно работать.
Переполнение постоянна проблема на олимпиадах, из-за него часто валятся(

Поза форумом

 

#89 2009-11-29 17:04:20

pilya
Новий користувач
Зареєстрований: 2009-11-14
Повідомлень: 98

Re: Обсуждение решений

Ну когда же второй тур? Похоже проверка Newillusion занимает бальше времени чем все остальные.

Или все же идет перепроверка Radars smile

Відредаговано pilya (2009-11-29 17:09:45)

Поза форумом

 

#90 2009-11-29 17:11:31

Eol
Новий користувач
Зареєстрований: 2009-11-08
Повідомлень: 5

Re: Обсуждение решений

Очень понравился тот факт, что решение по задаче lazer:

Код:

var n : longint;
    a, b : int64;
    cx, cy, cr : int64;
    i : longint;
    count : longint;
begin
  read(n, cx, cy);
  a:=cy;
  b:=-cx;
  count:=0;
  for i:=1 to n do begin
    read(cx, cy, cr);
    if (a*cy > b*cx) and (sqr(a*cx + b*cy) < sqr(cr) * (sqr(a) + sqr(b))) then
      inc(count);
  end;
  writeln(count);
end.

набирает полный балл, в то время как решение

Код:

var n : longint;                                                              
    a, b : int64;                                                           
    cx, cy, cr : int64;                                                     
    i : longint;                                                              
    count : longint;                                                          
begin                                                                         
  read(n, cx, cy);                                                            
  a:=cy;
  b:=-cx;
  count:=0;
  for i:=1 to n do begin
    read(cx, cy, cr);
    if (sqr(a*cx + b*cy) < sqr(cr) * (sqr(a) + sqr(b))) and (a*cy > b*cx) then
      inc(count);
  end;
  writeln(count);
end.

набирает все без пары тестов (Time Limit)
(HINT: в IF'е поменяны местами условия)
я конечно понимаю, ленивые вычисления, оптимизации, но не настолько же smile
PS а когда сдавал, у меня вообще были longint вместо int64 и переполнение sad

Відредаговано Eol (2009-11-29 17:14:18)

Поза форумом

 

#91 2009-11-29 17:22:12

pilya
Новий користувач
Зареєстрований: 2009-11-14
Повідомлень: 98

Re: Обсуждение решений

Задумайтесь над тем, что не обязательно проверяь условие с вычислением корня. Можно ведь сравнить и выражения под корнем.
И вообще, во всех задачах первого тура такая функция как вычисление квадратного корня не нужна.

Сори. Кроме задачи lotto.

Відредаговано pilya (2009-11-29 17:23:43)

Поза форумом

 

#92 2009-11-29 17:24:21

Eol
Новий користувач
Зареєстрований: 2009-11-08
Повідомлень: 5

Re: Обсуждение решений

эмм, присмотритесь - у меня  sqr, а не sqrt smile так что я проверял именно выражения под корнем smile

Поза форумом

 

#93 2009-11-29 17:32:01

pilya
Новий користувач
Зареєстрований: 2009-11-14
Повідомлень: 98

Re: Обсуждение решений

Eol написав:

эмм, присмотритесь - у меня  sqr, а не sqrt smile так что я проверял именно выражения под корнем smile

сори. сори. сори. на паскале очень давно программировал (хотя и на с++ тоже) smile
Получается во втором случае переполнение в первом условии, насколько я понимаю.

Поза форумом

 

#94 2009-11-29 17:37:12

Eol
Новий користувач
Зареєстрований: 2009-11-08
Повідомлень: 5

Re: Обсуждение решений

pilya написав:

сори. сори. сори. на паскале очень давно программировал (хотя и на с++ тоже) smile
Получается во втором случае переполнение в первом условии, насколько я понимаю.

без проблем.  да, там было переполнение, когда там стоял longint (я с ним отправлял sad ), а с int64 - нет, все нормально, просто по времени долго считает smile

Поза форумом

 

#95 2009-11-29 18:20:57

astor
Новий користувач
Зареєстрований: 2008-12-09
Повідомлень: 48

Re: Обсуждение решений

хтось може пояснити чому 1 задача:
---
#include <stdio.h>
int main()
{
    int n,k,i;
    scanf("%d%d",&n,&k);
    for (i=1;i<=k;i++)
    {
        n=n*n;
        while (n>99) n/=10;
    }
    printf("%d",n);
    return 0;
}
--
проходить на 12? не можу зрозуміти, де помилка. задача ж проста.
а проапелювати якось можна?smile

Поза форумом

 

#96 2009-11-29 18:20:59

Darth Danil
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 7

Re: Обсуждение решений

Если я выложу тут свои решения, не могли бы вы посмотреть, где я затупил?


Нажмите любую клавишу, чтобы продолжить, или любую другую, чтобы выйти

Поза форумом

 

#97 2009-11-29 18:23:31

Darth Danil
Новий користувач
Зареєстрований: 2009-11-29
Повідомлень: 7

Re: Обсуждение решений

Астор, у тебя, скорее всего, т/о. Там бывают очень большие к, надо находить цикл (см. решение на первой странице темы).


Нажмите любую клавишу, чтобы продолжить, или любую другую, чтобы выйти

Поза форумом

 

#98 2009-11-29 18:24:37

Andrey
Олімпієць
Звідки: Киев, Украина
Зареєстрований: 2005-10-15
Повідомлень: 100

Re: Обсуждение решений

astor написав:

хтось може пояснити чому 1 задача:
---
#include <stdio.h>
int main()
{
    int n,k,i;
    scanf("%d%d",&n,&k);
    for (i=1;i<=k;i++)
    {
        n=n*n;
        while (n>99) n/=10;
    }
    printf("%d",n);
    return 0;
}
--
проходить на 12? не можу зрозуміти, де помилка. задача ж проста.
а проапелювати якось можна?smile

1<=K<=1000000000
Вы 1000000000 раз делаете умножение. Несколько тестов видимо не прошли по времени

Поза форумом

 

#99 2009-11-29 18:31:26

pilya
Новий користувач
Зареєстрований: 2009-11-14
Повідомлень: 98

Re: Обсуждение решений

Andrey написав:

1<=K<=1000000000
Вы 1000000000 раз делаете умножение. Несколько тестов видимо не прошли по времени

Ну и не всегда надо делить на 10 даже чаще на 100 32^2=1024.
Вот и вся простота.

Поза форумом

 

#100 2009-11-29 18:34:25

Присяжнюк А.В.
Новий користувач
Звідки: Бердичів СЗОШ 17
Зареєстрований: 2005-11-19
Повідомлень: 140
Вебсайт

Re: Обсуждение решений

astor написав:

... а проапелювати якось можна?smile

Уважно почитайте тут: http://www.olymp.vinnica.ua/index_ua.ph … mp;cid=745
Там і про процедуру апеляції також написано.
Форум - це просто місце для спілкування і, можливо, деяких відповідей. Хоча останнє не гарантується... smile


Права на ошибку не имеет тот, кто ничего не делает...

Поза форумом

 

Нижній колонтитул

Powered by Likt
© Copyright 2002–2009 Likt