new file: P1003.cpp P1005.cpp P1006.cpp P1007.cpp
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
#include <cstdio>
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <algorithm>
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#include <cstdio>
|
||||
#include <algorithm>
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#include <cstdio>
|
||||
#include <algorithm>
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user