T1: 矩阵涂色
本题难度简单,考察二维数组的基本使用。
矩阵最终状态中,如果某一行全是红色,说明最后一次操作是 R
操作,如果某一列全是蓝色,说明最后一次操作一定是 B
操作
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; void solve() { int n; cin >> n; vector<string> s(n); rep(i, n) cin >> s[i]; char ans = 'B'; rep(i, n) { bool ok = true; rep(j, n) { if (s[i][j] != 'R') ok = false; } if (ok) ans = 'R'; } cout << ans << '\n'; } int main() { int t; cin >> t; while (t--) solve(); return 0; }
T2: 最大X型和
本题难度简单,考察二维数组行、列、对角线上的元素基本操作和预处理思想。
分做法:
枚举每一个位置,然后计算四个方向所有元素的和,取最大值即可。
分做法:
对于每个位置 需要计算 所在的主对角线和副对角线的所有元素之和。可以预处理每条主对角线元素之和、每条副对角线元素之和。在同一条主对角线上的元素的位置坐标 满足 是定值,同理在同一条副对角线上的元素的位置坐标 满足 是定值。
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 1; i <= (n); ++i) using namespace std; int a[2005][2005], s1[4005], s2[4005]; inline void chmax(int& x, int y) { if (x < y) x = y; } int main() { int n, m; cin >> n >> m; rep(i, n)rep(j, m) cin >> a[i][j]; rep(i, n)rep(j, m) { s1[i+j] += a[i][j]; s2[j-i+2000] += a[i][j]; } int ans = 0; rep(i, n)rep(j, m) { chmax(ans, s1[i+j]+s2[j-i+2000]-a[i][j]); } cout << ans << '\n'; return 0; }
标签:
CodeStar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现