吃菠萝的狼 2024-03-21 19:12 采纳率: 66.7%
浏览 3
已结题

c++T337181 刷墙

题目

img


我的代码TLE了


#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, m, k;
    cin >> n >> m >> k;
    
    vector<vector<int>> wall(n, vector<int>(m, 0));
    
    for (int i = 0; i < k; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        
        if (x == 0) {
            for (int j = 0; j < m; j++) {
                wall[y - 1][j] = z;
            }
        } else {
            for (int j = 0; j < n; j++) {
                wall[j][y - 1] = z;
            }
        }
    }
    
    int blueCount = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (wall[i][j] == 1) {
                blueCount++;
            }
        }
    }
    
    cout << blueCount << endl;
    
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-21 19:12
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:如何优化这个代码来避免超时? 回答: 这个代码的问题在于,它使用了两次嵌套的循环来遍历整个矩阵,这会导致时间复杂度为O(n^2),而在本题中,n和m最大可以达到1000,所以这种算法是不可行的。 解决这个问题的方法是,我们可以使用一个大小为1001的数组来记录每一行/列最高的墙的高度。这样,在每个位置上,我们只需要检查它所在的行/列上的最高墙的高度,并判断是否和当前墙的高度相等即可。这样时间复杂度就降为了O(k+max(n,m)),可以通过本题。 下面给出优化后的代码: #include #include using namespace std; int main() { int n, m, k; cin >> n >> m >> k; vector row(n+1, 0); // 记录每一行的最高墙高度 vector col(m+1, 0); // 记录每一列的最高墙高度 for (int i = 0; i < k; i++) { int x, y, z; cin >> x >> y >> z; if (x == 0) { for (int j = 1; j <= m; j++) { row[y] = max(row[y], z); } } else { for (int j = 1; j <= n; j++) { col[y] = max(col[y], z); } } } int blueCount = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (row[i] == col[j] && row[i] != 0) { // 检查所在行/列的最高墙高度是否相等 blueCount++; } } } cout << blueCount << endl; return 0; }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月21日

悬赏问题

  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境