Educational Codeforces Round 128 (Rated for Div. 2) E. Moving Chips(玄学)
Educational Codeforces Round 128 (Rated for Div. 2) E. Moving Chips(玄学)
链接
题意:给一个2∗n2*n2∗n的∗.*.∗.矩阵,你要随便选起点,∗*∗走过一个∗*∗就会覆盖它,问最少多少步只剩一个∗*∗。
思路:因为只有两列,我们直接分类讨论对于每一列的状态怎么从上一个转移,为了方便,设∗*∗为1,...为0,有一个变量idx1和idx2,这一行代表走到这一列的步数,此时是所有的∗*∗全被覆盖
①当当前状态为000000的时候,idx1和idx2直接走过来就行,直接++。
②当当前状态为101010的时候,第一行有需要走的,所以我们第一行的idx1,要么直接++,要么从第二行的idx2+2idx2+2idx2+2来,因为它需要向右走一步,向上走一步。
③当前状态为010101的情况和②相同。
④状态为111111,为了吃掉所有的∗*∗,idx1和idx2都要走两步,所以就是为min(idx1,idx2)+2min(idx1,idx2)+2min(idx1,idx2)+2
最后输出ans−1ans-1ans−1
#include<bits/stdc++.h>
using namespace std;int main()
{int T;cin >> T;while (T--) {int n;string s1, s2;cin >> n;cin >> s1 >> s2;int idx1 = -1, idx2 = -1, ans = 0;int f = 1;for (int i = 0; i < n; i++) {if (f && s1[i] == '.' && s2[i] == '.') continue;f = 0;if (s1[i] != '*' && s2[i] != '*') {idx1++, idx2++;}if (s1[i] == '*' && s2[i] == '*') {idx1 = idx2 = min(idx1, idx2) + 2;ans = min({idx1, idx2});}if (s1[i] == '*' && s2[i] != '*') {int a = idx1, b = idx2;idx1 = ans = min(a + 1, b + 2);idx2 = min(idx1, idx2) + 2;}if (s1[i] != '*' && s2[i] == '*') {int a = idx1, b = idx2;idx2 = ans = min(a + 2, b + 1);idx1 = min(idx1, idx2) + 2;}}cout << ans << endl;}return 0;
}
Educational Codeforces Round 128 (Rated for Div. 2) E. Moving Chips(玄学)相关推荐
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 37 (Rated for Div. 2) 1
Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...
- Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)
Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...
- Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)
Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
- Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环
传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...
- Educational Codeforces Round 111 (Rated for Div. 2) D. Excellent Arrays 组合数学
传送门 文章目录 题意: 思路: 题意: 给你一个数组aia_iai,定义一个数组是好的当且仅当对于所有iii都有ai!=ia_i!=iai!=i.定义f(a)f(a)f(a)表示数组aaa中i& ...
- Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp
传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...
最新文章
- 2021 年 5 月中国编程语言排行榜,C++ 超过 Java 没戏了...
- Python3中使用map()结果出错的解决方法
- lua学习笔记之字符串
- 串结构练习——字符串连接
- 面向对象——三层架构(表现层、业务层、持久层)
- Java 查看指定文件最后的修改时间
- smokeping安装方法及不出图解决办法
- 【报告分享】2019互联网大会大佬演讲实录 (附11个演讲文档下载链接)
- 请求并操作指定url处的xml文件
- mescroll vue使用
- 即时通讯系统集成开发
- java-php-python-ssm智能健身房管理计算机毕业设计
- pcntl php windows_PHP各版本安装pcntl扩展
- Terry-Ye/im 系统使用zookeeper
- [转]全网最!详!细!tarjan算法讲解
- 【原创】小霸王电脑吃鸡/玩大型游戏GlobalShaderCache-PCD3D_SM4.bin is missing解决方法...
- 云南贵州地区市场知名的调查研究咨询公司
- 使用gradle集成360加固
- buck电路matlab,buck电路simulink仿真
- 树莓派zero不亮_关闭树莓派的电源、状态、网口指示灯
热门文章
- openvino下载模型
- 软件 ce ee 含义和区别
- 单代号网络图计算例题_工程人如何绘制进度计划?(双代号网络图、横道图等)...
- s00devs_Devs @ Home –实时网络研讨会– 5月14日,13:00 CEST:高效应用程序的7个JVM参数
- MFC: DeviceIoControl 通过API访问设备驱动程序
- springboot(十)SpringBoot消息中间件RabbitMQ
- Luogu P5069 [Ynoi2015] 纵使日薄西山
- python做日历牌,怎么使用python tkinter制作日历?
- Halcon读图出错怎么办?ReadImage常见错误与处理方法(C++)
- 【Linux 内核 内存管理】物理分配页 ⑨ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | retry 标号代码分析 )