题解:P14574 批话哥

· · 题解

题目大意:

给定 n 个人和 m 个题目和你的左开右开的期望区间 lr ,对于 k 个处理,会给出其中的人和题目和分数,若分数在期望区间下面那么就是为 100 分,若在上面则是 0 分,在区间内则是原分数。

解题思路:

考虑到 nm 都不大,最大值为 500 ,所以模拟即可,本体考验的是对分数区间的判断,可以设立一个二维数组 a_{i,j} 表示第 i 个人的第 j 个人的分数,一一对应进行修改即可。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,m,k,f,l;
int a[1004][1005];//存储数组
int main(){
    cin>>n>>m>>k>>f>>l;
    for(int i=1;i<=k;i++){
        int x,y,v;
        cin>>x>>y>>v;
        if(v<=f)a[x][y]=100;
        else if(v<l)a[x][y]=v;//判断区间,记得是左开右开
        else a[x][y]=0;
    }
    for(int i=1;i<=n;i++){
        int ans=0;
        for(int j=1;j<=m;j++)ans+=a[i][j];
        cout<<ans<<" ";
    }
    return 0;
}