Алгебра логикиЗадание 15
Координатная плоскость · теория и практикаМетод опасной зоны
МЕТОД ОПАСНОЙ ЗОНЫ
Задание 15 на координатной плоскости: один приём вместо десятка формул — найди зону, где всё держится на A, и её крайнюю точку
1Идея: где выражение может сломаться
Выражение в задании 15 должно быть истинно во всех точках (x, y). Чтобы не перебирать всё, поймём, где оно вообще может стать ложным.
Разделим условия на две группы:
- Прикрытие — все условия без A. Там, где хотя бы одно из них истинно, всё выражение уже истинно, и значение
A не важно.
- Спасатель — условие с A. Оно «включается» только там, где прикрытие отказало.
Опасная зона — это точки, где всё прикрытие разом ложно. Только здесь выражение держится на спасателе. Значит задача сводится к одному: подобрать A так, чтобы спасатель был истинным во всей опасной зоне.
Прикрытие против спасателя. Условия без A прикрывают почти всю плоскость — на них выражение и так истинно. Спасатель (условие с A) нужен лишь в узкой опасной зоне, где прикрытие не сработало. Поэтому «настраиваем» мы именно A — чтобы заткнуть эту зону.
2Пять шагов
ШАГ 1
Спасатель
Найди условие с A.
Приоритет операций от сильного к слабому: ¬ > ∧ > ∨ > → > =
ШАГ 2
Прикрытие
Остальные условия (без A). Если хоть одно истинно — выражение истинно (значит А - любое).
ШАГ 3
Опасная зона
Где всё прикрытие ложно. Переверни каждое:
x>y → x≤y.
ШАГ 4
Крайняя точка
Найди min или max величины из спасателя по зоне (см. шаг ниже).
ШАГ 5
Ответ
Подставь крайнюю точку, возьми крайнее целое.
Проверь подстановкой!
3Что именно ищем?
Спасатель сравнивает A с некоторой величиной V. В разных задачах V своя: x·y, или x, или y. Чтобы спасатель был истинным во всей зоне, надо смотреть на его форму.
Что мы ищем? — крайнее значение величины V по точкам опасной зоны: минимум, если A стоит снизу, и максимум, если A стоит сверху.
V > A (или A < V)
A должно быть меньше величины V
Спасатель верен, пока A меньше самого маленького V в зоне.
→ ищем МИНИМУМ V
Ответ: наибольшее A = (min V) − 1
V < A (или V ≤ A)
A должно быть больше величины V
Спасатель верен, пока A больше самого большого V в зоне.
→ ищем МАКСИМУМ V
Ответ: наименьшее A = (max V) + 1
Несколько условий с A. Если спасатель состоит из нескольких условий через ∧ — например (x < A) ∧ (y < 3A) — посчитай требование от каждого (одно даёт A > max x, другое 3A > max y) и возьми самое жёсткое.
Как находить крайнюю точку (шаг 4)
Крайнее значение V почти всегда достигается на границе опасной зоны — в её углу или на граничном отрезке. Алгоритм такой:
- выпиши величину
V;
- нужен максимум → возьми точку зоны, где
V наибольшее;
нужен минимум → точку, где V наименьшее;
- подставь координаты этой точки в
V — получишь границу для A.
Если в условии есть ≠, зона — не область, а прямая, и крайнюю точку ищем вдоль этой прямой (по её целым точкам).
4Как обнулять условия-прикрытие
Опасная зона — пересечение «перевёрнутых» условий прикрытия. Вот как каждое из них становится ложным:
| Условие прикрытия |
Когда ложно |
Геометрия зоны |
x > y |
x ≤ y |
полуплоскость над диагональю |
11 > x |
x ≥ 11 |
полуплоскость справа |
2x + y > 128 |
2x + y ≤ 128 |
треугольник у начала координат |
2x + y ≠ 110 |
2x + y = 110 |
прямая — зона худеет до линии |
5Покрути A
Задачи интерактива взяты из ЕГЭ 2025 года разных волн. Переключай задачу и двигай ползунок A. Зелёные точки — где спасатель уже выполнен, красные — где нарушен (в них выражение ложно). Золотое кольцо — крайняя точка зоны. Двигай A, пока все точки не позеленеют (а для линейной задачи — пока прямоугольник не накроет всю зону): это и есть граничное A.
спасатель верен нарушение крайняя точка
Опасная зонаSIM · INTERACTIVE
Задача:
6Три задачи с ЕГЭ 2025
10.06 — произведение · ответ 120
Условие: (x·y > A) ∨ (x > y) ∨ (11 > x), наибольшее A, при целых неотрицательных x, y.
Спасатель — x·y > A (форма «V > A» → ищем минимум, V = x·y).
Прикрытие: x>y ложно при x≤y, 11>x ложно при x≥11.
Зона: x ≥ 11 и x ≤ y. Минимум произведения — в углу (11; 11), равен 121.
Нужно 121 > A → наибольшее A = 120.
11.06 — дырка (≠) · ответ 36
Условие: (2x + y ≠ 110) ∨ (x < y) ∨ (A < x), наибольшее A, при целых неотрицательных x, y.
Спасатель — A < x (форма «A < V» → ищем минимум, V = x).
Прикрытие: 2x+y≠110 ложно на прямой 2x+y=110, x<y ложно при x≥y.
Зона: целые точки прямой 2x+y=110 с x ≥ y. Наименьший x там — из x ≥ 110−2x следует x ≥ 37 (точка (37; 36)).
Нужно A < 37 → наибольшее A = 36.
19.06 — линейное · ответ 64
Условие: (x < A) ∧ (y < 3A) ∨ (2x + y > 128), наименьшее A, при целых положительных x, y.
Спасатель — сразу два условия x < A и y < 3A (форма «V < A» → ищем максимумы).
Прикрытие: 2x+y>128 ложно при 2x+y≤128.
Зона: треугольник 2x+y ≤ 128. Из x<A: max x = 63 → A ≥ 64. Из y<3A: max y = 126 → 3A > 126 → A ≥ 43.
Берём жёстче → наименьшее A = 64.
7Программа-страховка: умный перебор
Если аналитика буксует — проверь перебором. Но наивный двойной цикл по всей плоскости при больших порогах не успеет:
наивно · медленно# O(n²): двойной цикл по всей плоскости
for A in range(30000):
if all(F(x, y, A) for x in range(20002)
for y in range(20002)): # ~4·10⁸ на каждое A → не успеет
...
Идея ускорения. Крайнее значение V достигается на границе зоны — внутри «хуже» не бывает. Значит достаточно пройти только границу, а это один цикл, O(n):
- линейная зона
3x + y ≤ N: граница — отрезок 3x + y = N; для каждого x берём крайний y = N − 3x (один y на один x);
- дырка (≠): зона и так прямая
L = N — перебираем её целые точки;
- произведение: минимум в углу — можно вообще без цикла, подставив угол.
умно · быстро# O(n): только граница зоны
N = 20001 # пример: (x<A) ∧ (y<2A) ∨ (3x+y>N)
for A in range(1, 30000):
if all(x < A and N-3*x < 2*A # крайний y = N − 3x
for x in range(1, N//3+1) if N-3*x >= 1):
print(A); break # 10000, мгновенно
Правило. Аналитика говорит, где крайние точки (угол зоны, граничный отрезок, узлы прямой), — программа быстро проверяет только их. Умный перебор = аналитика, записанная кодом.
8Частые ошибки
| Ошибка |
Как правильно |
| Приоритет операций |
P ∧ Q ∨ R = (P∧Q) ∨ R: конъюнкция связывает сильнее |
| Перепутать min и max |
смотри, с какой стороны от V стоит A (развилка из §3) |
| Граница целых |
строгое <: A = min V − 1 или max V + 1; проверь подстановкой |
| Область x, y |
«неотрицательные» = от 0; «положительные»/«натуральные» = от 1 |
| Знак ≠ |
зона — не область, а прямая; перебирай только её целые узлы |
| Наивный перебор при больших числах |
O(n²) не успеет — перебирай только границу зоны (§7) |