2018.05.19 B. 贝壳找房户外拓展(简单)

  •  1000ms
  •  262144K

贝壳找房的销售顾问每天要带客户看很多房源,这对他们来说是一件体力活,所以他们要经常进行户外拓展来增强体力。

这一次他们进行的拓展是在一个 n \times mn×m 的矩形地图方格地图上玩游戏,最初,地图是空的。

游戏一共进行 qq 轮,第 ii 轮,会是以下操作之一

  1. 假设在这之前有 k-1k1 次 11 操作,在 (l,y)(l,y) 到 (r,y)(r,y) 线段之间每个格子里面摆放一个属于第 kk 组的石子,保证操作之前 yy 这一行没有其他的棋子。

  2. 某人从 (x,l)(x,l) 沿着直线走到 (x,r)(x,r),最开始他的愉悦值是 00,每当他遇到组 jj 的棋子,他的愉悦值会从 xx 变为 p_jx+q_jpjx+qj,输出走完之后这个人的愉悦值。

  3. 删除某一组棋子。

所有输出对 323232323323232323(质数)取模。

输入格式

第一行三个整数 n,m,qn,m,q,分别表示地图的长,宽和游戏的轮数。

接下来 qq 行,每行一个操作。

每行首先一个字母表示操作的类型。

如果是'I',表示一次 11 操作,接下来就五个整数 l_i,r_i,y_i,p_i,q_ili,ri,yi,pi,qi,前三个描述摆放的位置,后两个描述对愉悦值的影响。

扫描二维码关注公众号,回复: 1041553 查看本文章

如果是'Q',表示一次 22 操作,接下来有三个整数,x_i,l_i,r_ixi,li,ri 表示人行走的路径。

如果是'D',表示一次 33 操作,接下来有一个整数 ii,表示将第 ii 次摆放的石子移出棋盘。

保证 n,m,q \le 1000n,m,q10001 \le l_i \le r_i \le n1lirin1 \le y_i \le m1yim0 \le p_i,q_i \le 3232323230pi,qi323232323。并且 33 操作中组 ii 的石子一定都在地图内。走路中 1 \le x_i \le n1xin1 \le l_i \le r_i \le m1lirim

输出格式

对于每次 22 操作,输出一行一个整数,表示走完后此人的愉悦值。

样例输入

3 3 6
I 1 2 2 1 1
Q 1 1 3
I 1 3 1 1 2
Q 1 1 3
D 1
Q 3 1 3

样例输出

1
3
2

以后再战

#include<stdio.h>
#include<string.h>
int build[1001][1001];
int k,j;
struct step{
    int l1[1001];
    int r1[1001];
    int y1[1001];
    int p1[1001];
    int q1[1001];
};
 
 
void I(int l1,int r1,int y1,int p1,int q1){
    for(k=l1;k<=r1;k++){
        build[y1][k]=1;
    }
}
void Q(int x2,int l2,int r2){
    result=0;
    for(j=l2;j<=r2;j++){
        if(build[j][x2]=1)
            result=p1*result+q1;
    }
}
void D(int i){
    for(k=l1[i];k<=r1[i];k++){
        build[y1[i]][k]=0;
    }
}
 
 
int main(void){
    int n,m,t;
    char c;
    int l1,r1,y1,p1,q1;
    int x2,l2,r2;
    int h=0;
    memset(build,sizeof(build),0);
    scanf("%d",&t);
    while(t--){
        scanf("%c",&c);
        if(c=='I'){
            h++;
            scanf("%d%d%d%d%d",&l1[h],&r1[h],&y1[h],&p1[h],&q1[h]);
            I(l1[h],r1[h],y1[h],p1[h],q1[h]);
        else if(c=='Q'){
                scanf("%d%d%d",&x1,&l1,&r1);
                Q(x2,l2,i2);
                printf("%d\n",result);
            }
            else if(c=='D'){
                scanf("%d",&i);
                I(i);
            }
 
 
    }
 
 
}
 

猜你喜欢

转载自blog.csdn.net/han_hhh/article/details/80376517
今日推荐