From 8a71596ea66adfaae91d17c628d5c6dda0fbdda4 Mon Sep 17 00:00:00 2001 From: hanyixuanten <105723997+hanyixuanten@users.noreply.github.com> Date: Mon, 6 Jul 2026 14:04:43 +0800 Subject: [PATCH] new file: P1003.cpp P1005.cpp P1006.cpp P1007.cpp --- P1003.cpp | 26 +++++++++++++++++++++ P1005.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ P1006.cpp | 31 +++++++++++++++++++++++++ P1007.cpp | 17 ++++++++++++++ 4 files changed, 142 insertions(+) create mode 100644 P1003.cpp create mode 100644 P1005.cpp create mode 100644 P1006.cpp create mode 100644 P1007.cpp diff --git a/P1003.cpp b/P1003.cpp new file mode 100644 index 0000000..1cdf517 --- /dev/null +++ b/P1003.cpp @@ -0,0 +1,26 @@ +#include +using namespace std; +int n; +int x1[10005], y1[10005], x2[10005], y2[10005]; +int main() +{ + scanf("%d", &n); + for (int c = 1; c <= n; c++) + { + int x, y, lx, ly; + scanf("%d %d %d %d", &x, &y, &lx, &ly); + x1[c] = x, x2[c] = x + lx, y1[c] = y, y2[c] = y + ly; + } + int x, y; + scanf("%d %d", &x, &y); + for (int i = n; i >= 1; i--) + { + if (x >= x1[i] && x <= x2[i] && y >= y1[i] && y <= y2[i]) + { + printf("%d\n", i); + return 0; + } + } + puts("-1"); + return 0; +} \ No newline at end of file diff --git a/P1005.cpp b/P1005.cpp new file mode 100644 index 0000000..46efe39 --- /dev/null +++ b/P1005.cpp @@ -0,0 +1,68 @@ +#include +#include +#include +using namespace std; +const int MAXN = 85; +int n, m; +int a[MAXN][MAXN]; +__int128 pow2[MAXN]; +__int128 dp[MAXN][MAXN]; +void print___int128(__int128 x) +{ + if (x == 0) + { + putchar('0'); + return; + } + char buf[40]; + int pos = 0; + while (x > 0) + { + buf[pos++] = '0' + (x % 10); + x /= 10; + } + for (int i = pos - 1; i >= 0; i--) + { + putchar(buf[i]); + } +} +__int128 solve_row(int row) +{ + memset(dp, 0, sizeof(dp)); + for (int len = 1; len <= m; len++) + { + for (int l = 0; l + len - 1 < m; l++) + { + int r = l + len - 1; + int turn = m - len + 1; + if (len == 1) + { + dp[l][r] = (__int128)a[row][l] * pow2[turn]; + } + else + { + __int128 take_left = (__int128)a[row][l] * pow2[turn] + dp[l + 1][r]; + __int128 take_right = (__int128)a[row][r] * pow2[turn] + dp[l][r - 1]; + dp[l][r] = max(take_left, take_right); + } + } + } + return dp[0][m - 1]; +} + +int main() +{ + scanf("%d %d", &n, &m); + for (int i = 0; i < n; i++) + for (int j = 0; j < m; j++) + scanf("%d", &a[i][j]); + pow2[0] = 1; + for (int i = 1; i <= m; i++) + pow2[i] = pow2[i - 1] << 1; + __int128 ans = 0; + for (int i = 0; i < n; i++) + ans += solve_row(i); + print___int128(ans); + putchar('\n'); + return 0; +} \ No newline at end of file diff --git a/P1006.cpp b/P1006.cpp new file mode 100644 index 0000000..c952755 --- /dev/null +++ b/P1006.cpp @@ -0,0 +1,31 @@ +#include +#include +using namespace std; +int m, n; +int a[55][55]; +int f[55][55][55][55]; +int main() +{ + scanf("%d %d", &m, &n); + for (int i = 1; i <= m; ++i) + for (int j = 1; j <= n; ++j) + scanf("%d", &a[i][j]); + + for (int i = 1; i <= m; ++i) + { + for (int j = 1; j <= n; ++j) + { + for (int k = 1; k <= m; ++k) + { + for (int l = 1; l <= n; ++l) + { + f[i][j][k][l] = max(max(f[i - 1][j][k - 1][l], f[i][j - 1][k - 1][l]), max(f[i - 1][j][k][l - 1], f[i][j - 1][k][l - 1])) + a[i][j] + a[k][l]; + if (i == k && j == l) + f[i][j][k][l] -= a[i][j]; + } + } + } + } + printf("%d\n", f[m][n][m][n]); + return 0; +} \ No newline at end of file diff --git a/P1007.cpp b/P1007.cpp new file mode 100644 index 0000000..e0ab681 --- /dev/null +++ b/P1007.cpp @@ -0,0 +1,17 @@ +#include +#include +using namespace std; +int l, n; +int a; +int maxt = 0, mint = 0; +int main() +{ + scanf("%d %d", &l, &n); + for (int i = 0; i < n; ++i) + { + scanf("%d", &a); + maxt = max(maxt, max(a, l - a + 1)), mint = max(mint, min(a, l - a + 1)); + } + printf("%d %d\n", mint, maxt); + return 0; +} \ No newline at end of file