Ідеї розв'язання задач першого туру у вищій лізі

Задача 1.
  Нехай в числі n цифр. Позначимо c[i] - i-та цифра.
  Переглядаємо всі цифри з 1 до (n div 2)-ої. На кожному кроці треба урівняти i-ту і (n-i+1)-шу цифри.
  Якщо c[i]>c[n-i+1], то оптимальним варіантом буде c[n-i+1]:=c[i].
  Якщо ж c[i]<c[n-i+1], то таке присвоєння приведе до числа,меншого за вхідне.
  В такому випадку доцільніше спочатку збільшити c[n-i] на 1, а потім c[n-i+1]:=c[i].

Задача 2.
  
Позначимо F(n,k) - кількість перестановок з n чисел, в яких рівно k інверсій.
  Якщо k<0, то F(n,k)=0; F(0,0)=1. Для всіх інших n, k кількість перестановок обчислюється за рекурентною формулою F(n,k) = F(n-1,k)+F(n-1,k-1)+..+F(n-1,k-n+1). (Якщо на n-ій позиції стоїть цифра i, то вона утворює n-i інверсій, тому на перших n-1 чисел залишаться k-n+i інверсій, 1<=i<=n).
  Маючи цю формулу можна послідовно заповнити матрицю, яка відповідає функції F(n,k).

Задача 3.
  
Ця задача зводиться до задачі знаходження максимального потоку в мережі, якщо систему міст і доріг розглянути як граф, поставити пропускні здатності всіх доріг рівними 1, початкове місто - витік, кінцеве місто - стік.
  Алгоритми знаходження максимального потоку можна знайти в книжках, присвячених олімпіадному програмуванню (зокрема алгоритм Форда-Фалкерсона).