- C++
时间问题罢了
- @ 2025-3-15 20:59:11
欧克呀,竟然有这么多的人困在洛谷里面,正好我偷78被放出来了,今天就来拯救大家
#include <iostream>
using namespace std;
int main() {
cout << R"( ********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############)" << endl;
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
const int N = 30; // 定义足够大的数组大小
long long dp[N][N]; // dp数组
bool control[N][N]; // 标记马的控制点
int main() {
int n, m, x, y;
cin >> n >> m >> x >> y;
// 坐标偏移,避免边界问题
n += 2, m += 2, x += 2, y += 2;
// 标记马的控制点
control[x][y] = true;
int dx[] = {1, 1, 2, 2, -1, -1, -2, -2};
int dy[] = {2, -2, 1, -1, 2, -2, 1, -1};
for (int i = 0; i < 8; i++) {
int nx = x + dx[i], ny = y + dy[i];
if (nx >= 0 && ny >= 0 && nx <= n && ny <= m) {
control[nx][ny] = true;
}
}
// 初始化起点
dp[2][2] = 1;
// 动态规划递推
for (int i = 2; i <= n; i++) {
for (int j = 2; j <= m; j++) {
if (control[i][j]) continue; // 跳过马的控制点
dp[i][j] += dp[i-1][j] + dp[i][j-1];
}
}
cout << dp[n][m] << endl;
return 0;
}
2 条评论
-
hechenxuan23005 LV 3 MOD @ 2025-3-15 21:00:31P1007 独木桥
#include <iostream> #include <algorithm> using namespace std; int main() { int L, N; cin >> L >> N; int min_time = 0, max_time = 0; for (int i = 0; i < N; i++) { int x; cin >> x; // 计算最短时间:士兵到最近端的时间 int current_min = min(x, L + 1 - x); min_time = max(min_time, current_min); // 计算最长时间:士兵到最远端的时间 int current_max = max(x, L + 1 - x); max_time = max(max_time, current_max); } cout << min_time << " " << max_time << endl; return 0; } -
@ 2025-3-15 20:59:56[NOIP 2011 提高组] 铺地毯
#include <iostream> using namespace std; const int N = 10010; // 定义足够大的数组大小 struct Carpet { int a, b, g, k; // 地毯的左下角坐标和长度 } carpets[N]; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> carpets[i].a >> carpets[i].b >> carpets[i].g >> carpets[i].k; } int x, y; cin >> x >> y; int result = -1; // 初始化结果为-1 for (int i = 1; i <= n; i++) { // 判断点(x, y)是否在当前地毯的范围内 if (x >= carpets[i].a && x <= carpets[i].a + carpets[i].g && y >= carpets[i].b && y <= carpets[i].b + carpets[i].k) { result = i; // 更新结果为当前地毯编号 } } cout << result << endl; return 0; }
- 1