zoukankan      html  css  js  c++  java
  • HDU 4527

    搞了好久,发现自己是想法没错的,错在输入,必须是while(){}

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    struct Water{
        int px,py;
        int dirx,diry;
        Water(){}
        Water(int x,int y,int dx,int dy){px=x,py=y;dirx=dx,diry=dy;}
    }que[500000];
    struct Posover{
        int x,y;
        Posover(int tx,int ty){x=tx,y=ty;}
        Posover(){}
    };
    vector<Posover>vec;
    int head,tail;
    
    int map[6][6];
    
    void work(int x,int y){
        map[x-1][y-1]++;
        if(map[x-1][y-1]>=5){
            map[x-1][y-1]=0;
            que[tail++]=Water(x-1,y-1,0,-1);
            que[tail++]=Water(x-1,y-1,0,1);
            que[tail++]=Water(x-1,y-1,1,0);
            que[tail++]=Water(x-1,y-1,-1,0);
        }
        int sz;
        vec.clear();
        int cnt=0;
        while(head<tail){
            sz=tail-head;
            cnt++;
            while(sz--){
                int tx=que[head].px+que[head].dirx;
                int ty=que[head].py+que[head].diry;
                if(tx>=0&&tx<=5&&ty>=0&&ty<=5){
                    if(map[tx][ty]>0){
                        map[tx][ty]++;
                        if(map[tx][ty]==5){
                            vec.push_back(Posover(tx,ty));
                        }
                    }
                    else{
                        que[tail++]=Water(tx,ty,que[head].dirx,que[head].diry);
                    }
                }
                head++;
            }
            int vsz=vec.size();
            for(int i=0;i<vsz;i++){
                map[vec[i].x][vec[i].y]=0;
                que[tail++]=Water(vec[i].x,vec[i].y,0,1);
                que[tail++]=Water(vec[i].x,vec[i].y,0,-1);
                que[tail++]=Water(vec[i].x,vec[i].y,1,0);
                que[tail++]=Water(vec[i].x,vec[i].y,-1,0);
            }
            vec.clear();
        }
    //    cout<<cnt<<endl;
    }
    
    int main(){
        while(scanf("%d",&map[0][0])!=EOF){
            int j;
        for(int i=0;i<6;i++){
            for(i==0?j=1:j=0;j<6;j++)
            scanf("%d",&map[i][j]);
        }
        int nop,x,y;
        scanf("%d",&nop);
        while(nop--){
            tail=head=0;
            scanf("%d%d",&x,&y);
            if(x>=1&&x<=6&&y>=1&&y<=6)
            work(x,y);
        }
        for(int i=0;i<6;i++){
            printf("%d",map[i][0]);
            for(int j=1;j<6;j++){
                printf(" %d",map[i][j]);
            }
            printf("
    ");
        }
        printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    用它,只需“拖拉拽”即可轻松创建APP和短信推送规则
    如何通过机智云接口生成设备对应的二维码
    新唐方案分享:基于NUC472开发板的物联网开发,接入机智云
    公告|苹果iOS13升级在即,机智云APP适配指南
    物联网中的数据透传
    多维数组
    pymysql库的学习
    selenium库的学习
    xpath语法和lxml库的学习
    MATLAB 机场价格数据预处理和分析
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4357878.html
Copyright © 2011-2022 走看看