Блог пользователя SkyHawk

Автор SkyHawk, 14 лет назад, По-русски

Сегодня (14 января) в 21:00 по Москве.

UPD: Coding phase начинается в 21:10.

  • Проголосовать: нравится
  • +56
  • Проголосовать: не нравится

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
English?
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +28 Проголосовать: не нравится
Coding phase starts in 21-10, not 21-02 as usual!
»
14 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Кто знает, что значит Single Round Match 529 - Round 1?

UPD: говорят, я туплю. Типа эта надпись там всю жизнь была. Тогда нет вопросов)

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -8 Проголосовать: не нравится
Я одни не могу зайти в комнату?
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Первый раз попадаю в комнату, где только синие участники =)
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Не успел засабмитить вторую, не хватило одной секунды. Ппц :)
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +85 Проголосовать: не нравится
Самый убогий SRM на моей памяти. Где там pkhaustov со своим счетчиком?
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +72 Проголосовать: не нравится
Три моих причины, почему СРМ убогий.
1) Когда в первой задаче римские числа уже плохо. А когда они настолько маленькие, что при прямых руках их быстрее скопировать списком откуда-то и запаковать в массив - это просто отстой.
2) Вторая задача, конечно, крайне математическая и всё такое. Но это говно, а не математика! Где решение за корень более-менее очевидно, но писать его затраха^W помрёшь - настолько оно гадкое и мелкодетальное.
3) За условие во второй можно отрывать руки. Это уже садизм, а не "изюминка" задачи.
  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +3 Проголосовать: не нравится
    А как ты анализировал, то что этот код делает? Я, например, только эмуляцией понял, что на самом деле нужно посчитать.
    • »
      »
      »
      14 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Я рефакторил код и привел в итоге до нормального состояния, но потом времени не хватило решить саму задачу =)
    • »
      »
      »
      14 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +5 Проголосовать: не нравится
      Понятно, что решение с моделированием не пройдёт :-)
      Вкратце:
      важны только три ячейки: нулевая, первая и вторая. Третья всегда к концу внешних двух циклов обнуляется, четвёртая никак не участвует.
      Короче, возможно три варианта. Назовём первые три ячейки - a, b, c.
      1) a > b:
      (a, b, c) -> (a-b, b+1, c+b), происходит 3b+1 шаг.
      2) a=b:
      происходит 3b+1 шаг и программа заканчивается
      3)a < b:
      (a, b, c) -> (a+c, b+1, 0), происходит 3a + 1 шаг.
      Если аккуратно проанализировать, то становится ясно, что на каждой итерации b инкрементируется, периодически a и c возвращаются к исходному состоянию. Причём за один период прибавляется 4N + k к ответу, где k - количество итераций в периоде. А дальше нужно по*******ся и аккуратно это всё реализовать за корень.
  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +33 Проголосовать: не нравится
    4) Третья совершенно безыдейная, с совершенно дурацкими частными случаями.
  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +30 Проголосовать: не нравится
    Полностью согласен. 2я и 3я - почти одинаковые, геморройная свёртка шизофренических сумм с кучей случаев. Математикой это назвать язык не поворачивается.
    • »
      »
      »
      14 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +17 Проголосовать: не нравится
      И в результате решают скорость написания парсинга римских чисел и количество челленджей. Обожаю такие раунды.
      И ведь блин обидно, что гораздо быстрее было его скопипастить, если он где был, или забить в строку! Хотя, это не отменяет того факта, что надо его уметь писать быстро и сразу правильно.
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
Свернул почти все в 600-ке. Не знаю только как быстро находить сумму вида N/2 + N/3 + N/4 ... Как это можно быстро сделать?
»
14 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Nevermind

»
14 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +19 Проголосовать: не нравится

Порадовал участник Zero_Sharp у него в первой задаче была функция "int xuly(string s)", ну а че бы и нет?

UPD: Участник из Вьетнама

»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Убогий раунд аннулирован?
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится
Ололо.
D1-1000's reference solution was wrong, therefore the final results are delayed. We apologize for inconvenience.
Раунд моей мечты.
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
А еще в харде у жюри косячное решение (к сожалению, совпадающее с моим) - не учтено, что количество больших аэропортов может быть меньше s, и это может быть важно
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +19 Проголосовать: не нравится
Раунд - гавно.
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
ололо. авторское решение div1(1000) "was wrong" ? или я неправильно понял только что пришедшее сообщение?  
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

"D1-1000's reference solution was wrong, therefore the final results are delayed. We apologize for inconvenience"  

Интересно рейтинговый раунд будет или нет?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +12 Проголосовать: не нравится
Только нормально написал срм, как его сделают анрейтидом :(
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
Админы ответили, что вероятно будет рейтинговым
»
14 лет назад, скрыть # |
Rev. 7  
Проголосовать: нравится +23 Проголосовать: не нравится
Они даже задачу неправильно назвали в объявлении.
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Блин, у меня опечатка глупейшая в 250. Вместо VIII написал VII. Теперь тоже молюсь за unrated :)
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Да!!! Он будет рейтинговым!
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Пересчитали челленджи. Будет rated.
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
Все-таки rated :(
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +34 Проголосовать: не нравится
НЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕТ !!
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится
Для игроков моего уровня (низких желтых) топкодер учит лишь быстро сдавать 250. Если вместо этого сдать 500 под конец, очков будет меньше, чем при быстрой 250, как у меня было на прошлом раунде. Это очень фигово и несправедливо...
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Что за хрень? У меня вместо ожидаемых 50 очков, теперь -173....
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
после всего выше написано, побуду Хаустовым, и пожалуй Topcoder 3: 2 Codeforces...
»
14 лет назад, скрыть # |
Rev. 5  
Проголосовать: нравится +2 Проголосовать: не нравится

Passed.
Я умудрился сделать в 250 две ошибки, аннулирующие друг друга.
int toInt(const string &s)
{
   int ans = 0;
   for(int i = 0; i < sz(s); i++)
     if(val[s[i]] < val[s[i+1]])
        ans -= val[s[i]];
     else
        ans += val[s[i]];
   return ans;
}
На самом деле я намеревался делать цикл до sz(s)-1 и вручную прибавлять val[s.back()]. Забыл и то и другое и отправил. Через несколько секунд после отправки заметил это. Хотел было исправить и переотправить, но понял, что:
а) s[sz(s)] = '\0', следовательно всегда будет выполнять else и добавление произойдет правильно.
б) в релизе скорее всего всем будет плевать на обращение к s[sz(s)].

Кстати, я не знаю, как стандартом оговорено обращение к s[sz(s)] для string? Это разрешено и всегда будет возвращен '\0' или это какой-нибудь undefined behavior?


upd: В 2010 студии в дебаге такое, например, падает:

string s = "a";
s[1];

  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится -11 Проголосовать: не нравится
    afaik, UB
  • »
    »
    14 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится +5 Проголосовать: не нравится

    В старом стандарте undefined behaviour, в новом:

    const_reference operator[](size_type pos) const noexcept;
    reference operator[](size_type pos) noexcept;
    1 Requires: pos <= size().
    2 Returns: *(begin() + pos) if pos < size(), otherwise a reference to an object of type T with value
    charT(); the referenced value shall not be modified.

    UPD: В старом то же самое, только другими словами :)

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +51 Проголосовать: не нравится
а я проспал, расстроился ужасно :(

прочитал комментарии

нет, не расстроился ;)
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Правильно ли я понимаю, что
а) rated
b) рейт еще не пересчитан?
»
14 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

The system test is too long . .

Done :)

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
Вопрос к тем, кто хорошо знает правила. Если я зарегистрировался на раунд, но все задачи оставил в состоянии unopened, то считается, что я писал, но написал на 0, и рейтинг падает?
  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    если все задачи - unopened, то ваш рейтинг никак не изменится
    если хоть одна opened - вы участвуете в раунде