muvick
Пользователи-
Постов
54 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Галерея
События
Весь контент muvick
-
Имельман нет
-
1. она 2. хорошо поет 3. Читает мысли
-
Куро Кагами (Kodomo no Jikan)
-
Прочитал алгоритм Куна куда проще и намного понятнее как он работает. Жаль мне все равно придется делать тот алгоритм( Если кто хочет выложить свою задачу, пожалуйста PS а причем тут якуты
-
for (int i=0;i (сделаем 2х мерный массив если одну коробку можно засунуть в другую то 1 иначе 0) так как в каждую коробку можно положить только 1 коробку и каждую коробку только в одну, то если мы делаем вложение, v[j], то вся строка вычеркивается и столбец тоже. чтобы коробок осталось как можно меньше надо чтобы как можно больше было "вложений" коробок, тоесть задача теперь в том чтобы в этом массиве надо выбрать как можно больше единиц. нам по дискретке только что дали такую домашку =). Хорошо что хоть алгоритм дали, собсно используя этот алгоритм наверное можно решить эту задачу.
-
вот примеры где жадность не подходит 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
-
я про свой код говорил.
-
я согласен с тем что такой алгоритм верный, только у меня он чето на 8 тесте падает
-
для 3х3 это и вправду решение, но для больших не потянет, так как при 5 бактериях 4 умирают, и может быть что не эта клетка было заселена последней.
-
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
-
тот который с конца решает или сначала? код смотреть в спойлере выше
-
такого не может быть, там написано что дана матрица из цифр от 1 до 4, а если не полностью заселена, то на незаселенных клетках должны быть нули.
-
делал и так, на 8 тесте таймлимит, с оптимизацией делается WA, наверное кривая оптимизация
-
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 бактерий.
-
если перебор то (m*n)! то есть 400! =) на 9 тесте WA... , какие есть идеи по поводу того какие там ловушки есть.
-
не не, я имел в виду, что если уворот включишь, то он спамить будет по тебе. но забыл, что там еще тал есть - кровотечение(ренд) врубает возможность спамить оверпавером, так что тут включай, не включай...
-
Tobi как все по полочкам пвп билды разложил) но имхо все же для прота last stand мас хэф
-
для кача и периодического попадания под ганг имхо
-
внешка http://forums.goha.ru/forumdisplay.php?f=156
-
а там где ты ее меняешь extern bool FlagBuyFld; писал?
-
stdio.h fgets(), gets(). как ими пользоваться - гугли
-
хз куда подробней
-
а strcpy() использовать?
-
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 вроде так
-
хороший мувик