Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). Если в i-ой компоненте связности вершин, то общее число рёбер будет суммой по всем компонентам связности:
Требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна N и ni - натуральные числа.
Если K = 1, то всё очевидно - ответ N(N - 1)/2. Пусть K > 1.
Предположим, n1 <= n2 <= ... <= nK - набор чисел, для которых достигается максимум, и n1 > 1. Уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в K-ую компоненту связности. Вычислим, как изменится сумма квадратов: Поскольку по предположению n1 > 1 (тогда и nK > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. Значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. Выкинем эту компоненту связности, останутся K - 1 компонента связности и N - 1 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.
Итак, должно выполняться
Подставив в исходную формулу, получаем
Это и есть ответ.
lorsam36
12.10.2020
Const n = 10;
var a: array[0..10] of integer; i, s: integer;
begin
//Заполнение массива сл. числами
for i := 1 to n do begin a[i] := random(201) - 100; write(a[i]:4); end; writeln;
//1) Все элементы не превышающие число 100
writeln('Не больше 100 '); for i := 1 to n do if a[i] <= 100 then write( a[i]:4); writeln;
// 2) Все четные элементы
writeln('Кратные двум '); for i := 1 to n do if a[i] mod 2 = 0 then write( a[i]:4); writeln;
// 3) Все элементы, являющиеся трехзначными числами
writeln('Трехзначные '); for i := 1 to n do if (a[i] < -99) or (a[i] > 99) then write(a[i]:4); writeln;
// 4) Третий, шестой и т.д элементы.
i := 3; writeln(' номера 3, 6, 9 и т.д.'); while i < n do begin write(a[i]:4); i := i + 3; end; end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Отмечу как лудшого ! який обєкт в середовищі тектового процесора має такі параметри форматування : а)абзац б)сторінка в)символ г)список
Требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна N и ni - натуральные числа.
Если K = 1, то всё очевидно - ответ N(N - 1)/2. Пусть K > 1.
Предположим, n1 <= n2 <= ... <= nK - набор чисел, для которых достигается максимум, и n1 > 1. Уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в K-ую компоненту связности. Вычислим, как изменится сумма квадратов:
Поскольку по предположению n1 > 1 (тогда и nK > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. Значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. Выкинем эту компоненту связности, останутся K - 1 компонента связности и N - 1 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.
Итак, должно выполняться
Подставив в исходную формулу, получаем
Это и есть ответ.