Description

A multi-digit column addition is a formula on adding two integers written like this:

aaarticlea/webp;base64,UklGRg4FAABXRUJQVlA4TAIFAAAvm4EcAB6q2rYtkpxP7snUOdQR1BGULt22bbmSpUq2GtWqVJih1NAy74aT5d0SJQa+gaZw/WHmxE/cF5TLGGZmsMz4hBMHRdv/ts0P9jL/O+gE/xMYC4eamhkKCQoZGQV17yGU1b333m2GQMZPirVtbaY9cjbDHlgBK4hGx8bGIVFIVFRU1PReUK/BTP97L5ivvGLK039HbiQpUnoYbjOLqXmAkjf37Wb+3cy/Tek2dHbYNYDiKXtqROChO8XfwgRbtjr4xnoGgfQr5v/gCCpWsRDA5jPcjwJf7lO5Slc7y/PPSrYujcBMnPCpqIbAlS3iCiZYRTGfZB8C+w7KJ2nAR9RvDWsITBlJ66SzwjVcQUkRg/lk+85WBEW5Cjx8JP3mRUmOmxdNJF41ArctEldQUTpSsW16alCyiEGE+QPY1v+T74/Wzm9xjADEq9bW1goVnxqu9y1suPrjIDnlaRRgODQASKOze5wjw/1kK6oVZVLl6rjWPLz6HVakbIkpDpHFbgVw3ngR6bZtEeX3oAjle1kQhM9YnLKlRpR0BdtYdreyCmwalwUPfepDUoYotw1ZJsa3CxGOobXf2XH5Z9zA94Ez5omxNx4ibTkzM8u0UrxnEcQ2NZ2zzF7omDiKOxZfynCrbrtTrvdxs/+UL2VfcRhDl12MAk+FwSY2HdfcHWomycyKsIKn0lX/hm9MUxftk5otP8kXrb4wsE08FiBTgad8DzP7HJQtCPh64o4rxtEWu5WSNVsc7Zl5Y1BPBRXmo2yhGy5qfV9xebvt6UVJyO96gf2UFWn6/qL5F2q2pOWKojGo9p1PdQkDvgLln6bPt1Vj1TFB+d0r0cAykVbn3X2f6JPabfBs44VIr+/qB8zlqVd9sVHmP2s1ipWU3aF4T12cewGOK56o29J9N1wqg1HqN4u9KlfvzkXZAu/Oa6qSa8ezHZd/flIyWLlFhr+zPUR9ll+GUH1k/QsveIpAuhdeeCHMxuqE9HXc05Bo4cAvmand14ePVPVld1N2dUwq1ldSU6jPzuvXIpaff17cksChZY+H9+Xnn4tYJ75JPxO8/SyWlIWUhfGzEEPq0nlbml+OgYzVJXlqNmVfdmda4cndqUrtXinKFQP5b/iynLl18W8Rlwcakv/ddvmStozAVi3y1Kseon5/lwJNHNMxcYXTeOrdf+AuDxOsSJMAbftE+9ILXNUii/uTDfvmDFmb5oVnPxP4skVlCwMiCVkYLNFjTVRS2aIKT8VFb0ONqmTdFkdzZt64vNa+1yLKpjtVEmDtU321hvfizvv+PPFNbrLMyStHi+Z2rgriYuQmxyhfqkTcQ4+u4iYef5Y0YuZS6uKXiYvnba3IT4KI8Y0JJZQnxA306Cou7ifrsLbS9om3tbUeaDRxSN+JE+jRVTx29MDE+OVAYx6ZqRWrKBJTYBsvPivKhhPo7iqy4r1Ud4TiO3yr3+yojzy5+x6cQHdXEeAPUbNtlZSU3ZnKfL7CCXR3FQHSfdvEBez3SjSwC0U/2P+4g/++ee42mOCTWPwArE2zZdlxsT/vtodxAx1dxY4Mf8fvy0iAit+H5lNSTuedlAdcYaWrq6jfhKzlOp5GXbzPua+wOCU7r1acQI+uImT7bi5zX7MEnV5y/7EIiys8t627qwiPff8OkN95a5VRFCFyrf7Ke0V1FTelpxX73wF4sGjJ2v0/3ISPm/13s/8A" alt="" />

A multi-digit column addition is written on the blackboard, but the sum is not necessarily correct. We can erase any number of the columns so that the addition becomes correct. For example, in the following addition, we can obtain a correct addition by erasing the second and the forth columns.

aaarticlea/webp;base64,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" alt="" />

Your task is to find the minimum number of columns needed to be erased such that the remaining formula becomes a correct addition.

Input

There are multiple test cases in the input. Each test case starts with a line containing the single integer n, the number of digit columns in the addition (1 ⩽ n ⩽ 1000). Each of the next 3 lines contain a string of n digits. The number on the third line is presenting the (not necessarily correct) sum of the numbers in the first and the second line. The input terminates with a line containing “0” which should not be processed.

Output

For each test case, print a single line containing the minimum number of columns needed to be erased.

Sample Input

3
123
456
579
5
12127
45618
51825
2
24
32
32
5
12299
12299
25598
0

Sample Output

0
2
2
1

Hint

Source

ATRC2017

开始是用贪心写的,总感觉自己没错,贪心的判断写了一层又一层最后还是错了。

结束后看了学长的代码,用dp写的,顿时有种恍然大悟的感觉,考试的时候钻进死胡同了。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
#define debug(a) cout << #a << ": " << a << endl
int main() {
int n;
while( cin >> n ) {
if( !n ) {
break;
}
string s1, s2, s3;
cin >> s1 >> s2 >> s3;
int a[], b[], c[];
for( int i = ; i < n; i ++ ) {
a[i] = s1[i] - '';
b[i] = s2[i] - '';
c[i] = s3[i] - '';
}
int dp[];
memset( dp, , sizeof(dp) );
for( int i = n - ; i >= ; i -- ) {
if( ( a[i] + b[i] ) % == c[i] ) { //如果当前直接或者进位后间接满足就置为1
dp[i] = ;
}
for( int j = i + ; j < n; j ++ ) {
int jinwei = ( dp[j] ) && ( a[j] + b[j] > c[j] ); //后面是否有可以进位的
if( ( a[i] + b[i] + jinwei ) % == c[i] ) {
dp[i] = max( dp[i], dp[j] + ); //有的话就更新i位置的dp值
}
}
}
int ans = n;
for( int i = ; i < n; i ++ ) {
if( a[i] + b[i] <= c[i] ) {
ans = min( ans, n - dp[i] );
}
}
cout << ans << endl;
}
return ;
}

2018湖南多校第二场-20180407 Column Addition的更多相关文章

  1. 2018湖南多校第二场-20180407 Barareh on Fire

    Description The Barareh village is on fire due to the attack of the virtual enemy. Several places ar ...

  2. 2019牛客多校第二场 A Eddy Walker(概率推公式)

    2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...

  3. 2018 Multi-University Training Contest 2 杭电多校第二场

    开始逐渐习惯被多校虐orz  菜是原罪 1004  Game    (hdoj 6312) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6312 虽然披着 ...

  4. 2019年湖南多校第一场||2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)

    第一场多校就打的这么惨,只能说自己太菜了,还需继续努力啊- 题目链接: GYM链接:https://codeforces.com/gym/101933 CSU链接:http://acm.csu.edu ...

  5. hdu6312 2018杭电多校第二场 1004 D Game 博弈

    Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. 2018牛客多校第二场a题

    一个人可以走一步或者跳x步,但不能连着跳,问到这个区间里有几种走法 考虑两种状态  对于这一点,我可以走过来,前面是怎么样的我不用管,也可以跳过来但是,跳过来必须保证前一步是走的 dp[i][0]表示 ...

  7. 2018杭电多校第二场1003(DFS,欧拉回路)

    #include<bits/stdc++.h>using namespace std;int n,m;int x,y;int num,cnt;int degree[100007],vis[ ...

  8. 2019 湖南多校第一场(2018~2019NCPC) 题解

    解题过程 开场shl过B,C,然后lfw写J,J WA了以后shl写A,但是因为OJ上空间开小WA了,而不是MLE?,J加了特判过了.之后一直在检查A错哪了,直到qt发现问题改了空间,浪费许多时间,但 ...

  9. 2014多校第二场1011 || HDU 4882 ZCC Loves Codefires (贪心)

    题目链接 题意 : 给出n个问题,每个问题有两个参数,一个ei(所要耗费的时间),一个ki(能得到的score).每道问题需要耗费:(当前耗费的时间)*ki,问怎样组合问题的处理顺序可以使得耗费达到最 ...

随机推荐

  1. 前端笔记之React(六)ES6的Set和Map&immutable和Ramda和lodash&redux-thunk

    一.ES6的Set.Map数据结构 Map.Set都是ES6新的数据结构,都是新的内置构造函数,也就是说typeof的结果,多了两个: Set 是不能重复的数组 Map 是可以任何东西当做键的对象 E ...

  2. Java性能权威指南读书笔记--之二

    新生代填满时,垃圾收集器会暂停所有的应用线程,回收新生代空间.这种操作被称为Minor GC. 老年代被填满时,垃圾收集器会暂停所有应用线程,对其进行回收,接着对堆空间进行整理.这个过程被称为Full ...

  3. JAVA基础——Switch条件语句

    JAVA基础——switch 条件语句 switch语句结构: switch(表达式){ case值1: 语句体1: break: case值2: 语句体2: break: case值3: 语句体3: ...

  4. 干货 | 博云基于OVS自研容器网络插件在金融企业的落地实践

    本文根据博云在dockerone社区微信群分享内容整理 过去几年博云在企业中落地容器云平台遇到了很多痛点,其中一个比较典型的痛点来自网络方面,今天很高兴跟大家聊聊这个话题并介绍下我们基于OVS自研的C ...

  5. 基于python语言使用余弦相似性算法进行文本相似度分析

    编写此脚本的目的: 本人从事软件测试工作,近两年发现项目成员总会提出一些内容相似的问题,导致开发抱怨.一开始想搜索一下是否有此类工具能支持查重的工作,但并没找到,因此写了这个工具.通过从纸上谈兵到着手 ...

  6. java swing 开发 -JTable

    最近利用空闲时间自己琢磨了一下java swing 编程,其实在从事javaweb之前我一直向往的就是java swing 开发,不知道为什么可能当时觉得Windows上的exe程序很是神奇,关于wi ...

  7. 我的C语言学习1

    学习是快乐的,尤其是从之前看到一个程序的一头雾水到大致懂了是怎么回事,这个过程是兴奋开心的,让我不断的前进,不能自拔,今天就要结束,总结一下. 1.1-第一个C语言 #include<stdio ...

  8. 解决socket粘包的两种low版模式 os.popen()和struct模块

    os.popen()模式 server端 import socket import os phone = socket.socket() # 实例化一个socket对象 phone.bind((&qu ...

  9. Xcodebuild命令使用

    Xcodebuild简介 Xcodebuild是命令行工具包的其中一项. 命令行工具包(Command Line Tools)是一个轻量的.可以与XCode分开的.在Mac上单独下载的命令行工具包. ...

  10. windows 下 ctags 安装以及 tags 目录创建

    最近处理 .as 格式代码,需要转换成 c# 格式, 用 VS 查看,无法跳转,十分蛋疼,又用起了好久没用的 VIM,配置 tags 文件,实现自动跳转. 1.下载ctag文件http://ctags ...