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(玄学)相关推荐

  1. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  2. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  3. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  4. 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这个时候两 ...

  5. 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, ...

  6. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  7. Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环

    传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...

  8. 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& ...

  9. Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp

    传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi​表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...

最新文章

  1. 2021 年 5 月中国编程语言排行榜,C++ 超过 Java 没戏了...
  2. Python3中使用map()结果出错的解决方法
  3. lua学习笔记之字符串
  4. 串结构练习——字符串连接
  5. 面向对象——三层架构(表现层、业务层、持久层)
  6. Java 查看指定文件最后的修改时间
  7. smokeping安装方法及不出图解决办法
  8. 【报告分享】2019互联网大会大佬演讲实录 (附11个演讲文档下载链接)
  9. 请求并操作指定url处的xml文件
  10. mescroll vue使用
  11. 即时通讯系统集成开发
  12. java-php-python-ssm智能健身房管理计算机毕业设计
  13. pcntl php windows_PHP各版本安装pcntl扩展
  14. Terry-Ye/im 系统使用zookeeper
  15. [转]全网最!详!细!tarjan算法讲解
  16. 【原创】小霸王电脑吃鸡/玩大型游戏GlobalShaderCache-PCD3D_SM4.bin is missing解决方法...
  17. 云南贵州地区市场知名的调查研究咨询公司
  18. 使用gradle集成360加固
  19. buck电路matlab,buck电路simulink仿真
  20. 树莓派zero不亮_关闭树莓派的电源、状态、网口指示灯

热门文章

  1. openvino下载模型
  2. 软件 ce ee 含义和区别
  3. 单代号网络图计算例题_工程人如何绘制进度计划?(双代号网络图、横道图等)...
  4. s00devs_Devs @ Home –实时网络研讨会– 5月14日,13:00 CEST:高效应用程序的7个JVM参数
  5. MFC: DeviceIoControl 通过API访问设备驱动程序
  6. springboot(十)SpringBoot消息中间件RabbitMQ
  7. Luogu P5069 [Ynoi2015] 纵使日薄西山
  8. python做日历牌,怎么使用python tkinter制作日历?
  9. Halcon读图出错怎么办?ReadImage常见错误与处理方法(C++)
  10. 【Linux 内核 内存管理】物理分配页 ⑨ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | retry 标号代码分析 )