eolymp
Problems

Paint2D

published at 6/7/17, 10:44:58 am

Можно ли провести операции тольк частью рисунка?

published at 3/6/20, 2:52:48 pm

Добрый день. Вопрос по условию. Можно ли вставлять скопированное в любое место прямоугольника А*В или обязательно касаться тех квадратиков-прямоугольников, которые были вставленны до?

published at 3/26/20, 5:35:52 pm

можно в любое место

published at 1/28/21, 9:29:51 am

чи можуть фігури накладатися?

published at 1/15/22, 9:47:24 pm

Можно чтобы на поле были еще фигуры кроме единичного квадрата и прямоугольника(если да,то может ли "лишняя" фигура соприкасатся с прямоугольником?

published at 3/31/22, 6:38:26 pm

include <iostream>

using namespace std;

define N 1001

define INF 2000000000

long dp[N][N];

int main() { int a, b; cin >> a >> b; if (a < b) swap(a, b); for (int i = 0; i <= a; ++i) for (int j = 0; j <= a; ++j) dp[i][j] = INF;

dp[1][1] = 4;
for (int i = 1; i <= a; ++i)
{
    for (int buf = 1; buf <= i; ++buf)
    {
        long tmp = dp[i - buf][buf] + 2;
        if (tmp < dp[i][buf]) dp[i][buf] = tmp;
        for (int j = 1; j < buf; ++j)
        {
            if (dp[i][j] + 2 < dp[i][buf]) dp[i][buf] = dp[i][j] + 2;
            else if (dp[i][buf] + 2 < dp[i][j]) dp[i][j] = dp[i][buf] + 2;
        }
    }
}
long MIN = dp[a][a];
if (b == 1)
{
    MIN = INF;
    for (int i = 1; i <= a; ++i) if (dp[a][i] < MIN) MIN = dp[a][i];
    cout << MIN;
    return 0;
}
a = b;
for (int i = 0; i <= a; ++i)
    for (int j = 0; j <= a; ++j) dp[i][j] = INF;

dp[1][1] = MIN;
for (int i = 1; i <= a; ++i)
{
    for (int buf = 1; buf <= i; ++buf)
    {
        long tmp = dp[i - buf][buf] + 2;
        if (tmp < dp[i][buf]) dp[i][buf] = tmp;
        for (int j = 1; j < buf; ++j)
        {
            if (dp[i][j] + 2 < dp[i][buf]) dp[i][buf] = dp[i][j] + 2;
            else if (dp[i][buf] + 2 < dp[i][j]) dp[i][j] = dp[i][buf] + 2;
        }
    }
}
MIN = INF;
for (int i = 1; i <= a; ++i) if (dp[a][i] < MIN) MIN = dp[a][i];
cout << MIN;
return 0;

}