Перейти к содержанию

muvick

Пользователи
  • Постов

    54
  • Зарегистрирован

  • Посещение

Весь контент muvick

  1. Прочитал алгоритм Куна куда проще и намного понятнее как он работает. Жаль мне все равно придется делать тот алгоритм( Если кто хочет выложить свою задачу, пожалуйста PS а причем тут якуты
  2. for (int i=0;i (сделаем 2х мерный массив если одну коробку можно засунуть в другую то 1 иначе 0) так как в каждую коробку можно положить только 1 коробку и каждую коробку только в одну, то если мы делаем вложение, v[j], то вся строка вычеркивается и столбец тоже. чтобы коробок осталось как можно меньше надо чтобы как можно больше было "вложений" коробок, тоесть задача теперь в том чтобы в этом массиве надо выбрать как можно больше единиц. нам по дискретке только что дали такую домашку =). Хорошо что хоть алгоритм дали, собсно используя этот алгоритм наверное можно решить эту задачу.
  3. вот примеры где жадность не подходит 4 100 50 40 90 60 10 80 40 5 70 35 35 4 104 90 40 103 80 50 102 60 45 101 70 30 в обоих случаях ответ = 2
  4. я согласен с тем что такой алгоритм верный, только у меня он чето на 8 тесте падает
  5. для 3х3 это и вправду решение, но для больших не потянет, так как при 5 бактериях 4 умирают, и может быть что не эта клетка было заселена последней.
  6. using namespace std; int n,m; int OK; int x[400],y[400]; unsigned int a[20][20],b[20][20]; void backtr(int depth) { unsigned int c[20][20]; for (int i=0; i for (int j=0; j c[i][j] = b[i][j]; if (depth<0) { OK = 1; return; } for (int i=0; i { for (int j=0; j { if (OK) return; switch (b[i][j]) { case 0:break; case 1: if ((a[i][j]&3) != 1) return; a[i][j] = 0; b[i][j] = 0; x[depth] = i; y[depth] = j; backtr(depth-1); return; default: if ((a[i][j]&3) == 1) { x[depth] = i; y[depth] = j; a[i][j]--; if (i > 0) if (b[i-1][j]) {a[i-1][j]--;b[i-1][j]--;} if (i if (j > 0) if (b[i][j-1]) {a[i][j-1]--;b[i][j-1]--;} if (j b[i][j] = 0; backtr(depth-1); b[i][j] = c[i][j]; a[i][j]++; if (i > 0) if (b[i-1][j]) {a[i-1][j]++;b[i-1][j] = c[i-1][j];} if (i if (j > 0) if (b[i][j-1]) {a[i][j-1]++;b[i][j-1] = c[i][j-1];} if (j } break; } } } } int main() { cin>>n>>m; for (int i=0;i { for (int j=0;j { cin>>a[i][j]; b[i][j] = 5; b[i][j] -= (i==0) + (i==n-1) + (j==0) + (j==m-1); } } backtr(n*m-1); if (!OK) cout<<"No\n"; else { cout<<"Yes"< for (int i=0;i { cout< } } return 0; }#include
  7. тот который с конца решает или сначала? код смотреть в спойлере выше
  8. такого не может быть, там написано что дана матрица из цифр от 1 до 4, а если не полностью заселена, то на незаселенных клетках должны быть нули.
  9. делал и так, на 8 тесте таймлимит, с оптимизацией делается WA, наверное кривая оптимизация
  10. using namespace std; int n,m; int OK; int x[400],y[400]; unsigned int a[20][20],b[20][20]; void place(int depth) { if (depth == m*n) OK = 1; for (int i=0;i { for (int j=0;j { if (OK) return; if (b[i][j] == 0 ) continue; if (a[i][j] > b[i][j]) return; if (a[i][j] == b[i][j]) { b[i][j] = 0; if (i > 0) if (b[i-1][j]) b[i-1][j]--; if (i if (j > 0) if (b[i][j-1]) b[i][j-1]--; if (j x[depth] = i; y[depth] = j; place(depth+1); return; } } } for (int i=0;i { for (int j=0;j { if (OK) return; if (b[i][j] == 5 && a[i][j]==1) { a[i][j] = 5; place(depth); a[i][j] = 1; } } } } int main() { cin>>n>>m; for (int i=0;i { for (int j=0;j { cin>>a[i][j]; b[i][j] += 5; b[i][j] -= (i==0) + (i==n-1) + (j==0) + (j==m-1); } } place(0); if (!OK) cout<<"No"; else { cout<<"Yes"< for (int i=0;i { cout< } } return 0; }#include массив b - максимально возможное количество бактерий в этой клетке. 1 сама + 4 соседа если = 0 , то уже пройденная клетка ясно что если количество бактерий совпадает с максимальным количеством, то заселение в этой клетке должно произойти раньше, чем в соседних если бактерий больше чем максимум, то аборт. изза вымирания отдельный цикл - предположения что там было 5 бактерий.
  11. если перебор то (m*n)! то есть 400! =) на 9 тесте WA... , какие есть идеи по поводу того какие там ловушки есть.
  12. не не, я имел в виду, что если уворот включишь, то он спамить будет по тебе. но забыл, что там еще тал есть - кровотечение(ренд) врубает возможность спамить оверпавером, так что тут включай, не включай...
  13. Tobi как все по полочкам пвп билды разложил) но имхо все же для прота last stand мас хэф
  14. для кача и периодического попадания под ганг имхо
  15. внешка http://forums.goha.ru/forumdisplay.php?f=156
  16. а там где ты ее меняешь extern bool FlagBuyFld; писал?
  17. stdio.h fgets(), gets(). как ими пользоваться - гугли
  18. a,b,c - стороны Ha, Hb, Hc - высоты на соответсвующие стороны p - полупериметр p = (a+b+c)/2 Найти F = Ha+Hb+Hc ? Ввод (в параллелограмме) a,b,c По формуле Герона площадь (в прямоугольнике) S = (p*(p-a)*(p-*(p-c))^(1/2) Площадь также S = 0.5*a*Ha = 0.5*b*Hb = 0.5*c*Hc (в прямоугольнике) => F = 2*S*(1/a+1/b+1/c) Вывод (в параллелограмме) "сумма высот =" F вроде так
×
×
  • Создать...