C. Hamiltonian Wall edu139 div2

news2024/11/28 6:47:40

Problem - C - Codeforces

题意是给你一个2*n的网格,让你一笔把所有的B涂满,并且只能涂一次,问你是否可行

分析:

其实分析的时候我想到了转移。每一次的结果是由上一次转移而来,所以如果前后矛盾的话,即不成立,可以分析出来有三种情况:

第一种:某一列全是B,那不管前一列怎么转移过来,上面的必然要走到下面,下面的必然要走一下上面,所以再往前推一格。两种情况,如果从上面走到下面,那上面是由i-1转移过来,同理下面

第二种:某一列有一个B,那就是由同一行的前一列所转移过来

第三种是第二种的另外一个情况,某一列的另外一个B

其实赛时的时候,这个我都看出来了,(也不难想)

但是不知道怎么去实现

可以用动态规划呀(动态规划记录路径)

从刚开始的开头赋值为1,进行转移。每一层的状态由它理论转移位置去进行转移,最后看看最后一列的B的位置上是否把开头的1转移过来。

其实这题可以很好的理解动态规划的状态转移的思想

f[i][1/2]为第i列的第一行和第i列的第二行的转移状态。

最后看看f[maxn][1] 或者f[maxn][2]是否有1

下面看代码:

#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#define IOS ios::sync_with_stdio(false), cin.tie(0);
#include<iostream>
#include<map>
#include<set> 
#include<cstdio>
#include<cstring>
#include<vector>
#include<stack>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PAII;
const int N=2e6+10,M=5050,INF=1e18,mod=998244353;
char ch[5][N];
int f[N][5],a[5][N];
signed main(){
    //IOS;
    int T;
    //T=1;
    cin>>T;
    while(T--)
    {
		int n;
		cin>>n;
		for(int i=1;i<=2;i++)
			for(int j=1;j<=n;j++)
			{
				cin>>ch[i][j];
				if(ch[i][j]=='B') a[i][j]=1;
				else a[i][j]=0;
			}
		int minn=n+1,maxn=-1,ff=0;
		for(int i=1;i<=n;i++)
		{
			f[i][1]=0;
			f[i][2]=0; 
			if(a[1][i]||a[2][i])
			{
				ff=1;
				minn=min(minn,i);
				maxn=max(maxn,i);
			}
		} 
		if(ff==0)
		{
			cout<<"YES\n";
			continue;
		}
		f[minn][1]=(a[1][minn]==1);
		f[minn][2]=(a[2][minn]==1);
		for(int i=minn+1;i<=maxn;i++)
		{
			if(a[1][i]==1&&a[2][i]==1)
			{
				f[i][1]=f[i-1][2];
				f[i][2]=f[i-1][1];
			}
			if(a[1][i]==1&&a[2][i]==0) f[i][1]=f[i-1][1];
			if(a[1][i]==0&&a[2][i]==1) f[i][2]=f[i-1][2];
		}
		if(f[maxn][1]||f[maxn][2]) cout<<"YES\n";
		else cout<<"NO\n";
	}
    return 0;
} 
/*
令f[i][1/2]为第i列的上面和下面分别可不可以走到 


*/ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能:智能语音技术应用场景介绍

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

虹科QA | SWCF2022 12月6日演讲笔记:C波段卫星与5G之间的干扰排查及解决方案

虹科2022年度SWCF卫星通信与仿真测试研讨会正在进行中。昨日精彩演讲&#xff1a;C波段卫星与5G之间的干扰排查及解决方案&#xff0c;感谢大家的观看与支持&#xff01; 昨晚的直播间收到一些粉丝的技术问题&#xff0c;虹小科汇总了热点问题并请讲师详细解答&#xff0c;在此…

目前UI设计薪资待遇怎么样?工作好找吗?

UI设计的火爆&#xff0c;导致有很多年轻人都愿意投身于这个行业。有很多年轻的朋友都在问&#xff0c;UI设计的薪资待遇怎么样&#xff1f;工作难找吗&#xff1f;本文统一解答一下。 1、UI设计的薪资水平 UI设计的薪资待遇一直很好&#xff0c;学习UI设计之前没有任何相关基础…

PMP每日一练 | 考试不迷路-12.13(包含敏捷+多选)

被延期考试的宝子 一定要坚持刷题 每日5道PMP习题助大家上岸PMP&#xff01; ​题目1-2&#xff1a; ​1.一位主要相关方要求将每日站立会议的持续时间人15分钟增加到1小时。Scrum主管应该做什么? ( ) A.接受建议并建议团队更改会议时间表 B.安排与产品负责人和团队开…

窗口销毁消息 WM_DESTROY 的正确处理方式

上次&#xff0c;我提到了可能导致正常的消息循环被破坏的怪异之处。 有一位读者 Adrian 指出&#xff0c;WM_GETMINMAXINFO 消息在顶级窗口 WM_NCCREATE 之前到达。这确实很不幸&#xff0c;但&#xff08;无论是否错误&#xff09;十多年来一直如此&#xff0c;现在修改它会…

【实时数仓】实现用户行为日志相关功能(源码)

文章目录一 准备用户行为日志-DWD层1 代码实现&#xff08;1&#xff09;识别新老访客&#xff08;2&#xff09;利用侧输出流实现数据拆分&#xff08;3&#xff09;将不同流的数据推送到下游kafka的不同Topic&#xff08;分流&#xff09;a 封装方法b 程序中调用kafka工具类获…

数据链路层

文章目录数据链路层的功能ARP协议DNS-------域名解析&#xff08;浅浅的了解一下&#xff09;在浏览器中输入URL后&#xff0c;发生的事情&#xff08;经典面试题&#xff09;ICMP协议NAT技术代理服务器网络核心知识大总结数据链路层的功能 对比理解网络层。 网络层 &#xff…

飞控学习随记

常见指令 编译Arduplane程序 cd ardupilot/ ./waf plane 进入 Tools/autotest 文件夹中&#xff0c;启动3D flightgear ./fg_quad_view.sh 进入ArduPLane文件夹中&#xff0c;启动仿真 sim_vehicle.py --map --console -L KSFO&#xff08;-L 选择起飞位置&#xff09; 解锁…

字节女测试工程师万字总结的软件测试入门技巧

成为一个优秀的测试工程师需要具备哪些知识和经验&#xff1f; 针对这个问题&#xff0c;可以直接拆分以下三个小问题来详细说明&#xff1a; 1、优秀软件测试工程师的标准是什么&#xff1f; 2、一个合格的测试工程师需要具备哪些专业知识&#xff1f; 3、一个合格的测试工程…

前端vue项目部署到生产环境(包括nginx安装及配置)

一.vue3项目打包 vue3项目 使用vue-cli创建的&#xff0c;使用npm run build打包到dist 二.在服务器上安装nginx 1.去nginx的官网下载windows版本的nginx&#xff0c;下载地址&#xff1a;nginx: download 最好安装稳定版&#xff0c;下载完成后解压nginx压缩包&#xff1a…

Android Studio实现数独小游戏,休闲益智

文章目录一、项目概述二、开发环境三、详细设计3.1 界面设计3.2 逻辑设计四、运行演示一、项目概述 数独是一种逻辑解谜游戏&#xff0c;它规则稍复杂&#xff0c;解题过程富有挑战性。本次安卓数独小游戏&#xff0c;主页面有继续游戏、新游戏、关于和退出四个功能&#xff0…

【实训项目】教师工作量管理系统(超级详细)

目录 一、需求与分析 1. 项目概述 1.1 教师信息处理 1.2 教师工作量数据处理&#xff1a; 1.3 教师综合信息输出 2. 需求分析 3. 模块设计 3.1 功能模块 3.2 所有功能模块的流程图 二、设计与实现 1. 程序设计 1.1 教师工作量管理系统 1.2 登录系统 1.3 主函数…

初级算法之字符串

344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 思路一: 从中间开始向两边遍历,然后两边交换位置,最终获得字符串的反转 // class Solution {public void reverseString(char[] s) {int len s.length,siz…

二、JavaScript——Hello World

1. 创建文件 提前在本地新建好文件夹用于存储项目代码&#xff0c;再通过VSode打开指定存储代码的指定文件夹&#xff0c;并新建HelloWorld.html文件 HelloWorld.html文件新建成功之后&#xff0c;输入“&#xff01;”点击自动生成标签 自动生成的标签如下&#xff1a; <!…

02Golang执行流程简介

Golang执行流程简介Golang执行流程的分析两种流程的方式区别什么是编译什么是运行Go程序开发注意事项Golang执行流程的分析 如果是对源码编译后&#xff0c;再执行&#xff0c;go的执行流程如下 如果对源码直接执行go run源码&#xff0c;go的执行流程如下 两种流程的方式区…

副业想做自媒体可以选择什么领域,适合宝妈的三个自媒体领域推荐

大家好&#xff0c;我是蝶衣王的小编&#xff0c;今天说说自媒体可以选择的领域 在过去的两年里&#xff0c;最受欢迎的职业之一必须属于自媒体。无论是全职还是副业&#xff0c;每个人都可以这样做。许多人经常在互联网上看到&#xff0c;通过自媒体&#xff0c;月收入数千或…

【汽车电子】can报文和can database(candbc)

1.can就是controller area network&#xff0c;是面向汽车的通信协议&#xff0c;通俗来讲就是在汽车电子控制领域中的不同部分进行通信的&#xff08;传输数据&#xff09;。 2.can报文有标准帧和扩展帧两种&#xff0c;也就是can和canfd&#xff0c;canfd是can的升级版&…

vscode git拉下来后LF CRLF问题

点击这里可以更改红色报错&#xff0c; windows下默认是CRLF, 类unix下LF 若CRLF数量非常多&#xff0c;解决方法&#xff1a; vscode 1. 在设置里Eol 选\n 2. 在根路径.editorconfig 里end_of_line lf 以上都不生效 可以有两种解决方案&#xff1a; 一. 下载插件EditorCo…

linux系统中如何挂载数据盘

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 前言 作为一个开发人员&#xff0c;和服务器打交道是必不可少的&#xff0c;当然要和运维相比的话还是差点儿。 但是&#xff0c;在公司&#xff0c;作为一个程序员&#xff0c;难免会遇…

微电网优化调度|基于多目标粒子群算法的微电网优化调度【风、光、储能、柴油机、电网交互燃汽轮机】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;本科计算机专业&#xff0c;研究生电气学硕…