首页 > 其他分享 >22

22

时间:2024-11-08 20:07:53浏览次数:1  
标签:ch return 22 int nc ans fo

#include<bits/stdc++.h>
#define fo(x, y, z) for(int (x) = (y); (x) <= (z); (x)++)
#define fu(x, y, z) for(int (x) = (y); (x) >= (z); (x)--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define lx ll
inline lx qr()
{
    char ch = getchar_unlocked(); lx x = 0, f = 1;
    for(; ch < '0' || ch > '9'; ch = getchar_unlocked()) if(ch == '-') f = -1;
    for(; ch >= '0' && ch <= '9'; ch = getchar_unlocked()) x = (x << 3) + (x << 1) + (ch ^ 48);
    return x * f;
}
#undef lx
#define qr qr()
#define pii pair<int, int>
#define fi first
#define se second
#define M_P(x, y) make_pair(x, y)
#define P_B(x) push_back(x)
const int Ratio = 0;
const int N = 200 + 5;
const int mod = 1e9 + 7;
int n;
int d[N][N], ans[4][N];
namespace Wisadel
{
    void Wdfs(int x, int y, int now, int nc)
    {
        if(x == nc && y < 2 * n - nc)
        {
            if(now == 1 && d[x][y + 1] == 0)
            {
                if(y <= n)
                {
                    ans[1][nc] = n - y;
                    fo(i, 2, 4) ans[i][nc] = ans[i - 1][nc] + 2 * (n - nc + 1) - 1;
                }
                else
                {
                    ans[2][nc] = 2 * n - nc - y + (n - nc + 1) - 1;
                    fo(i, 3, 4) ans[i][nc] = ans[i - 1][nc] + 2 * (n - nc + 1) - 1;
                    ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                }
                return ;
            }
            Wdfs(x, y + 1, d[x][y + 1], nc);
            return ;
        }
        if(x == nc && y == 2 * n - nc)
        {
            if(now == 1 && d[x + 1][y] == 0)
            {
                ans[2][nc] = (n - nc + 1) - 1;
                fo(i, 3, 4) ans[i][nc] = ans[i - 1][nc] + 2 * (n - nc + 1) - 1;
                ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                return ;
            }
            Wdfs(x + 1, y, d[x + 1][y], nc);
            return ;
        }
        if(y == 2 * n - nc && x < 2 * n - nc)
        {
            if(now == 1 && d[x + 1][y] == 0)
            {
                if(x <= n)
                {
                    ans[2][nc] = n - x;
                    fo(i, 3, 4) ans[i][nc] = ans[i - 1][nc] + 2 * (n - nc + 1) - 1;
                    ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                }
                else
                {
                    ans[3][nc] = 2 * n - nc - x + (n - nc + 1) - 1;
                    ans[4][nc] = ans[3][nc] + 2 * (n - nc + 1) - 1;
                    ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                    ans[2][nc] = ans[1][nc] + 2 * (n - nc + 1) - 1;
                }
                return ;
            }
            Wdfs(x + 1, y, d[x + 1][y], nc);
            return ;
        }
        if(y == 2 * n - nc && x == 2 * n - nc)
        {
            if(now == 1 && d[x][y - 1] == 0)
            {
                ans[3][nc] = (n - nc + 1) - 1;
                ans[4][nc] = ans[3][nc] + 2 * (n - nc + 1) - 1;
                ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                ans[2][nc] = ans[1][nc] + 2 * (n - nc + 1) - 1;
                return ;
            }
            Wdfs(x, y - 1, d[x][y - 1], nc);
            return ;
        }
        if(x == 2 * n - nc && y > nc)
        {
            if(now == 1 && d[x][y - 1] == 0)
            {
                if(y > n)
                {
                    ans[3][nc] = y - n - 1;
                    ans[4][nc] = ans[3][nc] + 2 * (n - nc + 1) - 1;
                    ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                    ans[2][nc] = ans[1][nc] + 2 * (n - nc + 1) - 1;
                }
                else
                {
                    ans[4][nc] = y - nc - 1 + (n - nc + 1) - 1;
                    ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                    fo(i, 2, 3) ans[i][nc] = ans[i - 1][nc] + 2 * (n - nc + 1) - 1;
                }
                return ;
            }
            Wdfs(x, y - 1, d[x][y - 1], nc);
            return ;
        }
        if(x == 2 * n - nc && y == nc)
        {
            if(now == 1 && d[x - 1][y] == 0)
            {
                ans[4][nc] = (n - nc + 1) - 1;
                ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                fo(i, 2, 3) ans[i][nc] = ans[i - 1][nc] + 2 * (n - nc + 1) - 1;
                return ;
            }
            Wdfs(x - 1, y, d[x - 1][y], nc);
            return ;
        }
        if(x > nc && y == nc)
        {
            if(now == 1 && d[x - 1][y] == 0)
            {
                if(x > n)
                {
                    ans[4][nc] = x - n - 1;
                    ans[1][nc] = ans[4][nc] + 2 * (n - nc + 1) - 1;
                    fo(i, 2, 3) ans[i][nc] = ans[i - 1][nc] + 2 * (n - nc + 1) - 1;
                }
                else
                {
                    ans[1][nc] = x - nc - 1 + (n - nc + 1) - 1;
                    fo(i, 2, 4) ans[i][nc] = ans[i - 1][nc] + 2 * (n - nc + 1) - 1;
                }
                return ;
            }
            Wdfs(x - 1, y, d[x - 1][y], nc);
            return ;
        }

    }
    short main()
    {
        // freopen(".in", "r", stdin), freopen(".out", "w", stdout);
        n = qr;
        fo(i, 1, 2 * n) fo(j, 1, 2 * n)
        {
            char ch;
            cin >> ch;
            d[i][j] = (ch == 'X');
        }
        fo(i, 1, n)
            Wdfs(i, i, d[i][i], i);
        int anss = 1e9;
        fo(i, 1, 4)
        {
            int res = 0;
            fo(j, 1, n) res += ans[i][j];
            anss = min(anss, res);
        }
        printf("%d\n", anss);
        return Ratio;
    }
}
signed main(){return Wisadel::main();}
// 佳墙坂诶迦币等渔塞

标签:ch,return,22,int,nc,ans,fo
From: https://www.cnblogs.com/Ratio-Yinyue1007/p/18535866

相关文章

  • 代码随想录算法训练营day39 day40| 198.打家劫舍 213.打家劫舍II 337.打家劫舍III
    学习资料:https://programmercarl.com/0198.打家劫舍.html#算法公开课动态规划的打家劫舍系列和股票买卖系列(股票还有贪心算法可解)学习记录:198.打家劫舍(一维dp数组,前n间房子都可偷的情况下的最高金额,每间房子偷数都是由前一间和前两间决定)点击查看代码classSolution(object)......
  • 20222311 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容1.1恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件,......
  • Ubuntu 22.04.1 LTS 安装 MinIO
    1. 创建数据目录#数据存储目录mkdir-p/mnt/c/aipc/minio#日志存储目录cd/mnt/c/aipc/miniomkdir-plogsconfdatachmod-R777/mnt/c/aipc/minio2.安装wgethttps://dl.min.io/server/minio/release/linux-amd64/minio#将下载所得minio文件拷贝到指定文件夹......
  • CF22
    博客没保存,速通A用set维护,把1去掉B\(O(n^4)\)暴力枚举矩形,用二维前缀和判他是否全是0Cv是割点易得构造一颗以v为根的菊花图,剩下的边怎么消耗?把下面的点相连,剩一个只与根相连的点(用于控制割点)D贪心直接线段覆盖E首先,题目的翻译https://www.luogu.com.cn/di......
  • 代码随想录算法训练营第十五天| 110.平衡二叉树,257. 二叉树的所有路径, 404.左叶子之
    110.平衡二叉树文章链接:https://programmercarl.com/0110.平衡二叉树.html#题外话题目链接:https://leetcode.cn/problems/balanced-binary-tree/description/classSolution{public://每次都要比较左右子树的高度差是否在1以内,所以递归是要统计子树的高度的intg......
  • docker desktop报错0x80070422
    dockerdesktop报错0x80070422deployingWSL2distributionsensuringmaindistroisdeployed:deploying"docker-desktop":importingWSLdistro"无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。\r\n错误代码:Ws1/0x80070422\r\n"output="docker-desktop":e......
  • 国标GB28181公网平台LiteGBS国标GB28181-2022平台,详细介绍LiteGBS视频融合平台的优点
    随着科技的不断进步,视频监控系统在公共安全、智能交通、工业生产及商业管理等领域的应用愈发广泛。构建高效、稳定且标准化的视频监控系统显得尤为关键。视频监控国标平台,即基于GB/T28181协议的视频联网平台,能够对接众多符合国标GB/T28181的设备,如视频平台、NVR录像机、网络监......
  • The 2022 ICPC Asia Hangzhou Regional Programming Contest C
    C.NoBugNoGame\(很简单的一个dp\)\(在枚举到当前为i的时候假设当前容量为j对其进行转移\)点击查看代码#include<bits/stdc++.h>#defineintlonglong#defineall(x)x.begin(),x.end()#definerall(x)x.rbegin(),x.rend()#definepbpush_back#definepiipair<......
  • VS 2022 不支持 .NET Framework 4.5 项目解决办法(Visual Studio 2022)
    VS2022不支持.NETFramework4.5项目解决办法(VisualStudio2022) 概述最近C#开发工具VisualStudio升级到了2022,打开速度快了很多,开发体验也舒服很多。只是使用过程中遇到了一个比较尴尬的问题:默认VisualStudio2022不再支持安装.NETFramework4.5组件,如下图所......
  • CS5366,typec转HDMI,4K60Hz多功能拓展坞方案,低成本替代GSV2201,AG9411方案
    集睿致远ASL新推出的CS5366芯片是一款Type-C转HDMI2Lean4K60的视频转换芯片通过USBType-C连接器将DPRX视频信号转换为HDMI/DVITX视频信号。DP信号转接只用2lane,另外2lane可以输出USB3.0/3.1信号,同时兼容PD3.0,并支持双向PD,相较于CS5266刷新率从30HZ上提升到60HZ,采样频率最......