• bzoj 3208 暴力


    对于每个操作,直接暴力做就行了,询问的话搜一遍,然后

    就这么水过去了。

    /**************************************************************
        Problem: 3208
        User: BLADEVIL
        Language: Pascal
        Result: Accepted
        Time:17276 ms
        Memory:9032 kb
    ****************************************************************/
     
    //By BLADEVIL
    var
        n, m                        :longint;
        map, w                      :array[0..1000,0..1000] of longint;
        flag                        :array[0..1000,0..1000] of boolean;
        ans                         :longint;
        go                          :array[0..2,0..4] of longint;   
         
    function max(a,b:longint):longint;
    begin
        if a>b then max:=a else max:=b;
    end;
     
    procedure find(x,y:longint);
    var
        i                           :longint;
        nx, ny                      :longint;
    begin
        for i:=1 to 4 do
        begin
            nx:=x+go[1,i];
            ny:=y+go[2,i];
            if flag[nx,ny] then continue; 
            if map[nx,ny]>=map[x,y] then continue;
            if w[nx,ny]=1 then find(nx,ny);
            w[x,y]:=max(w[x,y],w[nx,ny]+1);
        end;
    end;
     
    procedure init;
    var
        i, j                        :longint;
    begin
        read(n);
        for i:=1 to n do
            for j:=1 to n do read(map[i,j]);
        fillchar(flag,sizeof(flag),false);
        for i:=0 to n+1 do
        begin
            flag[0,i]:=true;
            flag[i,0]:=true;
            flag[n+1,i]:=true;
            flag[i,n+1]:=true;
        end;
        go[1,1]:=-1; go[2,2]:=1;
        go[1,3]:=1; go[2,4]:=-1;
    end;
     
    procedure main;
    var
        i, j, t                     :longint;
        ss                          :char;
        x, y, z                     :longint;
        a1, b1, a2, b2              :longint;
         
    begin
        readln(m);
        for t:=1 to m do
        begin
            read(ss);
            if ss='C' then
            begin
                readln(x,y,z);
                map[x,y]:=z;
            end else
            if ss='S' then
            begin
                readln(a1,b1,a2,b2);
                for i:=a1 to a2 do
                    for j:=b1 to b2 do
                        flag[i,j]:=true;
            end else
            if ss='B' then
            begin
                readln(a1,b1,a2,b2);
                for i:=a1 to a2 do
                    for j:=b1 to b2 do
                        flag[i,j]:=false;
            end else
            begin
                readln;
                for i:=1 to n do
                    for j:=1 to n do w[i,j]:=1;
                for i:=1 to n do
                    for j:=1 to n do
                    if (not flag[i,j]) and (w[i,j]=1) then
                        find(i,j);
                ans:=-maxlongint;
                for i:=1 to n do
                    for j:=1 to n do ans:=max(ans,w[i,j]);
                writeln(ans);
            end;
        end;
    end;
     
    begin
        init;
        main;
    end.
  • 相关阅读:
    Unsupported major.minor version 52.0
    图片资源的加密和cocos2d-x中的解密
    python 生成器生成杨辉三角
    python非递归全排列
    一个对象合并的函数引发的错误
    什么是原生的javascript
    quick3.5 removeFromParent()导致的windows下模拟器崩溃问题
    this关键字和static关键字
    内存分析
    面向对象:类和对象
  • 原文地址:https://www.cnblogs.com/BLADEVIL/p/3510018.html
Copyright © 2020-2023  润新知