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;
    }
    
  • 相关阅读:
    [C#]获取指定文件文件名、后缀、所在目录等
    Mysql 存储引擎中InnoDB与Myisam的主要区别
    MySQL的btree索引和hash索引的区别
    Mysql事务的隔离级别
    AE序列号
    mysql索引类型说明
    去除url中自带的jsessionid
    redirect传值非url(springmvc3)
    ueditor的使用
    mysql用户管理(开户、权限)
  • 原文地址:https://www.cnblogs.com/tomori/p/13771269.html
Copyright © 2011-2022 走看看