iamevg, потому что теорема более общая. Ну представьте, что A и !A - разные символы. В теорему можно под эти символы же что угодно подставлять, хоть одно и то же, хоть целые выражения. Ну и вы подставляет в одно место A, в другое - !A.
azazlo, Попросить можно, но выполнять просьбу я не буду. Вы по ссылке ходили вообще? Там же код с объяснениями написан уже. Бери-вставляй в свое решение. Или вы не можете 2 цикла написать вложенных?
Ну тогда советую, вместо просьб интернет решить задание за вас, бросить курс. Вы явно не тянете. Дальше же будет еще сложнее.
sashx, 1) идете от s до цикла.
2) крутитесь там проивзольное количество раз.
3) идете до t.
Получаете сколь угодно длинный путь.
Даже если запретить ходить по уже обойденным вершинам, то все-равно остается только полный перебор.
В очень частном случае, когда вершин мало можно построить искуственный граф, где вершинами будут подмножества вершин исходного графа X какая вершина последняя. Этот граф уже будет ациклический и можно по нему однозначно восстановить путь в исходном графе. Но это работает максимум для ~20 вершин максимум.
BitNeBolt, Чем больше защитный слой - тем меньше модулей влезает. Логично?
Значит функция количества впихуемых модулей f(d) - монотонна. Тут работает бинпоиск. Перебирайте им ширину защитного слоя d, а там уже внутри функции перебирайте 2 варината ориентации модулей, считайте сколько их в ширину и в высоту поместится, перемножайте. Вам надо найти максимальное d, при котором модулей влезает >= n.
BitNeBolt, Вы чего-то не до конца расказали. В текущей постановке задача имеет только наивное решение (очевидно, слишком медленное). Дайте, что ли, ссылку на задачу.
Давайте больше данных. Что у вас за задача, откуда функция взялась? Как она задана? Какие-то еще свойства? Может можно свести к чему-то быстрому.
А если просто вот такая кусочно константная функция, то представьте себе функцию, которая везде принимает значение 0, кроме одного отрезка длины 0.000001 где-то. Так вот, единственный способ найти этот максимум - это перебрать все точки с шагом 0.000001.
BitNeBolt более того, не надо ни из каких списков соседей ничего удалять. А предложенном решении надо пройтись по соседям ровно один раз, когда вершина стала листом. Ну, пройдетесь вы по удаленным соседям один раз, это на скорость работы не влияет.
iamevg, А откуда тогда взялось четвертое слагаемое? Ну не важно. Читайте только последний абзац тогда - вынесите B! из первых двух и сокращайте через X+!X Y = X+Y
Axretit, Ну да, вы как дерево ни храните, оно останется деревом. Вершина Б так и будет ребенком А. Принципиально ничего не поменяется. Можно дальше уже думать, какой способ храния вам удобнее и быстрее для вашей задачи. Если дерево не меняется, то самый быстрый и удобный способ - хранить детей в виде массива в каждой вершине. Еще лучше все эти массивы объеденить в один и в вершине хранить только начало и конец ее куска. Если вы дерево постепенно собираете, можете добавлять или удалять вершины, вырезать поддеревья, то уже имеет смысл хранить детей в виде связных списков в каждой вершине. Объединить все в одну структуру может быть выгоднее из-за возможности ручного управления памятью.
Можно ещё проще - не надо ничего разбивать на треугольники. Если площадь треугольника по этой формуле считать со знаком, то можно тупо соединить все вершины полигона с точкой (0, 0). В итоге все лишнее и дважды подсчитаное уйдет и останется только площадь полигона.
MuffinLover3, А как вы себе представляете, какой номер будет иметь число с бесконечным количеством единиц в двоичной записи? Подмножества конечные => конечное количество единиц => конечный номер у элемента. С бесконечными никакую нумерацию счетную не задать.