首页 > 其他分享 >第14届蓝桥杯--保险箱

第14届蓝桥杯--保险箱

时间:2023-10-27 20:58:04浏览次数:36  
标签:14 min -- s2 s1 蓝桥 int Math charAt

第14届蓝桥杯--保险箱

DP

从后往前循环统计

  1. 状态表示f[i][j]: 第i位密码数j状态, (j = 0产生退位, 1不进不退, 2产生进位)

集合: 所有的方案

属性: min

  1. 状态计算:

import java.util.Arrays;
import java.util.Scanner;

/**
 * ClassName:Main04
 * Package:baidu
 * Description:
 *
 * @author:LH寒酥
 * @create:2023/10/27-18:28
 * @version:v1.0
 */
public class Main {
    static final int N = 100002, INF = 0x3f3f3f3f;
    static int[][] f = new int[N][3];

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        String s1 = sc.nextLine();
        String s2 = sc.nextLine();
        for (int i = 0; i < N; i ++ )
            for (int j = 0; j < 3; j ++ )
                f[i][j] = INF;

        if (s1.charAt(n - 1) - s2.charAt(n - 1) >= 0) {
            f[n - 1][1] = s1.charAt(n - 1) - s2.charAt(n - 1);
            f[n - 1][2] = s2.charAt(n - 1) + 10 - s1.charAt(n - 1);
        } else {
            f[n - 1][1] = s2.charAt(n - 1) - s1.charAt(n - 1);
            f[n - 1][0] = s1.charAt(n - 1) + 10 - s2.charAt(n - 1);
        }

        for (int i = n - 2; i >= 0; i -- ) {
            if (s1.charAt(i) > s2.charAt(i)) {
                int t = s1.charAt(i) - s2.charAt(i);
                f[i][1] = Math.min(Math.min((f[i + 1][0] + t - 1), f[i + 1][1] + t), f[i + 1][2] + t + 1);
                t = s2.charAt(i) + 10 - s1.charAt(i);
                f[i][2] = Math.min(Math.min((f[i + 1][0] + t + 1), f[i + 1][1] + t), f[i + 1][2] + t - 1);
            } else if (s1.charAt(i) == s2.charAt(i)) {
                f[i][1] = Math.min(Math.min((f[i + 1][0] + 1), f[i + 1][1]), f[i + 1][2] + 1);
            } else {
                int t = s2.charAt(i) - s1.charAt(i);
                f[i][1] = Math.min(Math.min((f[i + 1][0] + t + 1), f[i + 1][1] + t), f[i + 1][2] + t - 1);
                t = s1.charAt(i) + 10 - s2.charAt(i);
                f[i][0] = Math.min(Math.min((f[i + 1][0] + t - 1), f[i + 1][1] + t), f[i + 1][2] + t + 1);
            }
        }

        System.out.println(Math.min(Math.min(f[0][0], f[0][1]), f[0][2]));
    }
}

标签:14,min,--,s2,s1,蓝桥,int,Math,charAt
From: https://www.cnblogs.com/rimliuhan/p/17793114.html

相关文章

  • Pset_SpaceCommon
    Pset_SpaceCommon公共空间:IfcSpace所有引用的定义的公共特性。请注意,几个空间属性是在IfcSpace实例中直接处理的,空间编号(或短名称)由IfcSpace.name处理,空间名称(或长名称)由IfcSpace:LongName处理,描述(或注释)由IfcSpace.description处理。实际空间量,如空间周长、空间面积和空间体积,由......
  • 7、系统交互工具与编辑器
    实验-vim基础操作ggGddyypuio中键qq!wqwq!:r/etc/rc.d/rc.sysinit:r!find/-namepasswd:setnumber:行号 快速定位:setnonumber:s/old/new/g:2,6s/old/new/g:%s/old/new/g:X加入密码实验-修改vim配置echo":setnumber">>/etc/vimrcvim/etc/fstab #默认打......
  • 正则表达式
     关于正式表达式参考资料:http://events.jianshu.io/p/dc3dfb98dfbb   查找匹配类的规则标识符解释示例^匹配行首 $匹配行末 \<匹配词首 \>匹配词末 ^$匹配空行 \B匹配非边界aajavabb; 用法可以是:\Bjava,java\B,\Bjava\B......
  • 内存寻址
    寻址方式指指令用来指定要访问的对象(常量、寄存器或内存中的数据)的方式。1.直接寻址在指令中,操作数直接以单元地址的形式给出,操作数项给出的是参加运算的操作数地址,而不是操作数。eg.MOVA,30H30H即为操作数的地址,并非操作数。2.间接寻址指令中的地址码字段,给出的是操作数......
  • 10月27日星期五
    今天没课睡到中午才醒,晚上我去基教学习了vue向看看它的作用,发现好像是优化界面的所以就先放下了,打算先学些基础,主要是后端向前端传值还不太会,想学完之后做出一个最基本的项目,今日进度,前端界面已经构建完成并且能够向后端传值实现增加的功能,遇到难点还不会后端向前端传值,......
  • 20231027
    20231027NOIP#25总结时间安排7:40~8:10看题\(A\)一眼切,\(B,C,D,E\)都不会。8:10~8:30写\(A\),但这个题坑真多。8:30~8:50写\(C\),这个好像是原题。8:50~9:50写\(B\),带些许数学的模拟,有点难写。9:50~10:35写\(E\)的前两档,但第二档做法假了。10:35~11:30反应了......
  • P2230 Tinux系统 题解
    传送门提供一种基于贪心的解法。首先是将\(p\)从小到大排序考虑到该系统是一棵树,所以对于系统中的每个点,我们记:\(tr_{son}\)表示该点(目录)的儿子的位置\(tr_{fa}\)表示该点(目录)的父亲的位置\(tr_{siz}\)表示该点(目录)包含的点的个数\(tr_{cnt}\)表示该点(目录)有......
  • 前端简介
    什么是前端前端是所有跟用户直接打交道的都可以称之为是前端比如:PC页面、手机页面、平板页面、汽车显示屏、大屏幕展示出来的都是前端内容#能够用肉眼看到的都是前端什么是后端?就是一堆代码,用户不能够直接看到,不直接与用户打交道的都是后端常见的后端:Python、Java、Go、......
  • linux 如何开机的时候自动挂载硬盘
    编辑/etc/fstab文件该文件的主要作用是在系统启动时自动挂载文件系统。当系统启动时,Linux会读取/etc/fstab文件中的信息,并根据其中的配置将指定的文件系统挂载到指定的挂载点上sudovim/etc/fstab#示例/dev/sdb1/mnt/dataext4defaults00#我的/dev/sda/media/ka......
  • python基于动态数量个列表求笛卡尔积
    需求有N个list,分别是listA,listB,listC。。。等等,N的数量不确定,现在对这些list的所有可能组合的值求笛卡尔积,比如(listA,listB),(listA,listC),(listB,listC),(listA,listB,listC)。。。求这里每个组合的笛卡尔积。分析对实现以上需求,可分解为2个部分:1.求所有list的组合2.对所......