zoukankan      html  css  js  c++  java
  • P4924 [1007]魔法少女小Scarlet

    这题硬模拟就行了,不要搞什么花里胡哨的递归啥的

    #include<iostream>
    #include<vector>
    
    using namespace std;
    
    const int N = 510;
    
    int n, m;
    int g[N][N];
    int b[N];
    
    void dfs(int x, int y, int v, int p){
        if(v == 0) return;
        
        if(p == 0){
            for(int i = y - v, k = 1; i <= y + v - 1; k ++, i ++) b[k] = g[x - v][i];
            for(int i = x - v, k = 1; i <= x + v - 1; k ++, i ++){
                int t = g[i][y + v];
                g[i][y + v] = b[k];
                b[k] = t;
            }
            for(int i = y + v, k = 1; i >= y - v + 1; k ++, i --){
                int t = g[x + v][i];
                g[x + v][i] = b[k];
                b[k] = t;
            }
            for(int i = x + v, k = 1; i >= x - v + 1; k ++, i --){
                int t = g[i][y - v];
                g[i][y - v] = b[k];
                b[k] = t;
            }
            for(int i = y - v, k = 1; i <= y + v - 1; k ++, i ++) g[x - v][i] = b[k];
        }else{
            for(int i = y + v - 1, k = 1; i >= y - v; i --, k ++) b[k] = g[x - v][i];
            for(int i = x - v + 1, k = 1; i <= x + v; i ++, k ++){
                int t = g[i][y - v];
                g[i][y - v] = b[k];
                b[k] = t;
            }
            for(int i = y - v + 1, k = 1; i <= y + v; i ++, k ++){
                int t = g[x + v][i];
                g[x + v][i] = b[k];
                b[k] = t;
            }
            for(int i = x + v - 1, k = 1; i >= x - v; i --, k ++){
                int t = g[i][y + v];
                g[i][y + v] = b[k];
                b[k] = t;
            }
            for(int i = y + v - 1, k = 1; i >= y - v; i --, k ++) g[x - v][i] = b[k];
        }
        
        dfs(x, y, v - 1, p);
        
    }
    
    int main(){
        cin >> n >> m;
        
        for(int i = 1; i <= n; i ++)
            for(int j = 1; j <= n; j ++)
                g[i][j] = (i - 1) * n + j;
                
        while(m --){
            int x, y, r, z;
            cin >> x >> y >> r >> z;
            
            dfs(x, y, r, z);
        }
        
        for(int i = 1; i <= n; i ++){
            for(int j = 1; j <= n; j ++)
                cout << g[i][j] << ' ';
            cout << endl;
        }
        
        return 0;
    }
    
  • 相关阅读:
    JavaScript原型、闭包、继承和原型链等等总结
    JS创建对象的几种方式整理
    js中 给json对象添加属性和json数组添加元素
    JSON 数组
    httpclient封装
    java 数字和日期处理
    jmeter所有版本下载路径
    idea的使用
    Java环境的搭建
    Axure8.0可用的授权码
  • 原文地址:https://www.cnblogs.com/tomori/p/13771269.html
Copyright © 2011-2022 走看看