lsmCC 发表于 2023-10-1 00:36:37

牛客栗酱的文明2

题目链接:https://ac.nowcoder.com/acm/contest/19305/1027
想听听解题思路:

isdkz 发表于 2023-10-1 00:36:45

这道题是一道贪心题目。

首先,我们可以将所有的时间段按照结束时间从小到大进行排序。

然后,我们从第一个时间段开始,每次选择结束时间最早且与前一个时间段没有重叠的时间段,并将其加入答案中。

具体实现时,我们可以用一个变量 $last$ 记录上一个加入答案的时间段的结束时间,每次在可选时间段中选择结束时间最早且与 $last$ 不重叠的时间段加入答案中,并将 $last$ 更新为该时间段的结束时间。

最后,我们统计答案中时间段的数量即可。

代码实现如下:

Mike_python小 发表于 2023-10-1 00:37:22

解题思路:牛客栗酱的文明2

这道题目的要求是计算一个矩阵的行和列的最大值,并输出它们之和。

首先,我们需要读取输入的矩阵,并初始化行和列的最大值为0。

然后,我们通过两层循环遍历矩阵的每个元素,同时更新行和列的最大值。

在内层循环中,我们可以使用两个变量来维护当前行和列的和,每次将对应位置的值加到相应的和上。

在外层循环结束后,我们就可以得到行和列的最大值,将它们相加即可得到结果。

下面是示例代码:


#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;// 输入矩阵的大小
    vector<vector<int>> matrix(n, vector<int>(m));// 定义一个二维矩阵

    // 读取矩阵元素
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
            cin >> matrix;
      }
    }

    int maxRowSum = 0;// 行的最大和
    int maxColSum = 0;// 列的最大和

    // 计算行和列的最大值
    for (int i = 0; i < n; i++) {
      int rowSum = 0;// 当前行的和
      for (int j = 0; j < m; j++) {
            rowSum += matrix;// 更新当前行的和
      }
      maxRowSum = max(maxRowSum, rowSum);// 更新行的最大和
    }

    for (int j = 0; j < m; j++) {
      int colSum = 0;// 当前列的和
      for (int i = 0; i < n; i++) {
            colSum += matrix;// 更新当前列的和
      }
      maxColSum = max(maxColSum, colSum);// 更新列的最大和
    }

    int result = maxRowSum + maxColSum;// 计算结果
    cout << result << endl;

    return 0;
}


这样,我们就可以得到题目要求的结果。希望以上解题思路对你有所帮助!如果有任何疑问,请随时提出。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 牛客栗酱的文明2