啊啊 求大佬帮忙看下 emo.....
  • 板块学术版
  • 楼主lonely_dog
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/8/19 13:59
  • 上次更新2023/10/27 14:37:10
查看原帖
啊啊 求大佬帮忙看下 emo.....
774537
lonely_dog楼主2022/8/19 13:59

有一个n行m列的二维表格,行的标号从1至n,列的编号从1至m。每个格子都有一个数。小明和小军玩双人选数游戏。小明总共选择了不同的k行,他把这k行的所有的数都累加起来,存到变量sum1。小军总共选择了不同的c列,他把这c列的所有数都累加起来,存到变量sum2。你的任务是计算ans = sum1+sum2的结果,但是如果一个格子的数同时被小明和小军选中,那么只能算一次,不能算两次,因此要从ans减去那些同时被两人选中的格子的数,然后输出ans。

输入格式 第一行,四个整数,n、m、k、c。1<=n,m<=100。1<=k<=n, 1<=c<=m。

接下来是n行,每行有m个整数,每个整数范围[1,1000]。

接下来一行有k个数,表示小明选中了哪些行。

最后一行有c个数,表示小军选中了哪些列。

输出格式 一个整数,表示小明和小军总共选中的数的总和,但是同时被两人选中的格子的数只算一次。

输入/输出例子1 输入:

4 5 2 2

1 3 4 5 2

4 6 7 8 9

3 9 2 4 5

3 2 4 2 6

1 3

2 4

输出:

56

#include<bits/stdc++.h>
using namespace std;
int main(){
    int x[11111][11111];
    int aa[1111],bb[1111];
    int n,m,q,c,s=0;
    cin>>n>>m>>q>>w;
    for(int i=1;i<=n;i++)
    {
       for(int j=1;j<=m;j++)
        {
            cin>>x[i][j];
        }
    }            
    for(int i=1;i<=q;i++)
    {
        cin>>aa[i];

        for(int j=1;j<=m;j++)
        {
            s+=x[aa[i]][i];
        }
    }
    for(int i=1;i<=w;i++)
    {
        cin>>bb[i];

        for(int j=1;j<=n;j++)
        {
            s+=x[i][bb[i]];
        }
    }
    for(int i=1;i<=q;i++)
    {
     for(int j=1;j<=w;j++)
        {
            s-=x[aa[i]][bb[j]];
        }
    }
    cout<<s;
    return 0;
}
2022/8/19 13:59
加载中...