• 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;
    }
    
  • 相关阅读:
    python -m pip install captcha --user
    用隐马尔可夫模型做基因预测
    爬取知乎如何通俗易懂地解释「协方差」与「相关系数」的概念?
    梯度弥散与梯度爆炸
    CIFAR-10数据集图像分类【PCA+基于最小错误率的贝叶斯决策】
    CIFAR-10 dataset 的下载与使用
    JMeter Don't use GUI mode for load testing!
    JMeter5.0版本安装及配置
    POSTMAN之断言
    PLSQL基础使用
  • 原文地址:https://www.cnblogs.com/tomori/p/13771269.html
Copyright © 2020-2023  润新知