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

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

Сегодня в 16:07 мск состоится Topcoder SRM 536.

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

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

На топкодере можно разрегистрироваться на раунд?

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

ТопКодер запустил бинпоиск по времени распределения на комнаты? :)

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

сначала полкомнаты решило 500, но за челендж фазу все друг друга похакали. Как же ее решать?

  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +13 Проголосовать: не нравится

    Не умею доказывать (я застрессил), но решение такое — если самая большая кость + число костей кроме нее больше, чем сумма остальных костей + 1 — то ответ сумма остальных костей + 1, иначе — половина, округленная вниз, от суммы всех костей + их число

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

Это был самый веселый раунд на моей памяти — никогда еще не приходилось делать 8 удачных челленджей в одном матче!

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

Как доказать такое решение div1-250 ?

Arrays.sort(r);
int n = r.length;
double cur = r[0];
for (int i = 1; i < n; i++) {
	cur = (cur + r[i]) / 2;
}
return cur;
  • »
    »
    14 лет назад, скрыть # ^ |
    Rev. 5  
    Проголосовать: нравится 0 Проголосовать: не нравится

    Это максимизирует ответ, т.к. для a ≤ c .

    • »
      »
      »
      14 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +10 Проголосовать: не нравится

      Приведенное неравенство ну вообще не зависит от знака чисел и значения b. В изначальной задаче если к каждому числу прибавить по 1000, то ответ тоже увеличится на 1000

    • »
      »
      »
      14 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится

      встречал тоже решение, где отдельно разбирались положительные и отрицательные числа. Не понимаю, как до этого можно додуматься

      • »
        »
        »
        »
        14 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится

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

    • »
      »
      »
      14 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится

      А я доказывал через неравенство ((a+b)/2+c)/2>=(a+b+c)/3 при a<=b<=c. Получаем (a+b)/12<=2*с/12=с/6, что и требовалось доказать. А дальше по индукции распространяем на общий случай.

      • »
        »
        »
        »
        14 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +6 Проголосовать: не нравится

        Я вообще изначально рассуждал банально: чем число больше, тем меньше раз нам выгодно его поделить. Этот цикл это и делает — минимальное поделится n-1 раз, максимальное — 1. Потом попытался описать это формулами и меня закидали помидорами)

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

Наконец выложил screencast

Ютуб будет чуть попозже