题目大意:给你两个一位数,要你求出其中的较大值(使用$Brainf**k$)

($Brainf**k$简介,相当于有一个数组和一个指针,","为把数组当前位赋值为读入的数,"."为输出当前位置的值,"<"为指针左移一位(最左端为$0$),">"为指针右移一位,"+"数组当前位置的值加一,"-"数组当前位置的值减一,"[]"循环,每次运行到"["或"]"时判断一下当前位置是否为$0$,是,退出循环,否,继续循环)

题解:我还是太菜,想了$20$分钟。我构造了一个序列(标号从$0$开始),如下(上面的数字表示这一位的值,$a$为输入的第一个数,$b$为输入的第二个数;下面的数字表示这个位置的标号)

读入时的数列(>+>,>,,):

$$0\qquad 1\qquad 0\qquad b\qquad 0\qquad 0\qquad 0\\
0\qquad 1\qquad 2\qquad 3\qquad 4\qquad 5\qquad 6$$

然后把$b$在第$6$位建一个备份(先把$b$复制到位置$5,6$,再把位置$5$复制到位置$3$)([->>+>+<<<]>>[-<<+>>]<<<):

$$0\qquad 1\qquad a\qquad b\qquad 0\qquad 0\qquad b\\
0\qquad 1\qquad 2\qquad 3\qquad 4\qquad 5\qquad 6$$

这时,我们把$a,b$循环$-1$,但是每次往回移动指针时,若该位置有值,就一直左移,然后向右移动两位([->-[<]>>]):

分类讨论(记$M$为$max(a,b)$,$A$为$M-a$,$B$为$M-b$):

1.正常情况(即$a,b$都不为零),那么指针会先移动到位置$0$,再移动到位置$2$(即$a$的位置),然后继续:

$$0\qquad 1\qquad a\qquad b\qquad 0\qquad 0\qquad b\\
0\qquad 1\qquad 2\qquad 3\qquad 4\qquad 5\qquad 6$$

2.若$a$为零,即$a<b$,那么指针会先移动到位置$2$(即原来$a$的位置),再移动到位置$4$,循环就会结束:

$$0\qquad 1\qquad 0\qquad B\qquad 0\qquad 0\qquad b\\
0\qquad 1\qquad 2\qquad 3\qquad 4\qquad 5\qquad 6$$

3.若$b$为零,即$a\geq b$,那么指针就先会停在位置$3$(即原来$b$的位置),再移动到位置$5$,循环结束:

$$0\qquad 1\qquad A\qquad 0\qquad 0\qquad 0\qquad b\\
0\qquad 1\qquad 2\qquad 3\qquad 4\qquad 5\qquad 6$$

现在,原来$a,b$的位置存的值为$A$和$B$,

所以这时的指针就会停在位置$4,5$,这时把指针向左移动$4$格,也就是说指针会停在位置$0,1$(<<<<),

然后若这个位置有值(也就是在位置$1$),就继续向左移动([<]),

所以现在指针停在位置$0$,再向右移动$3$格,就停在了位置$3$,即$max(a,b)-b$(>>>)。

最后把位置$3$的值(值为$max(a,b)-b$)加到位置$6$(值为$b$)就行了。
$$0\qquad 1\qquad 0\qquad 0\qquad 0\qquad 0\qquad M\\
0\qquad 1\qquad 2\qquad 3\qquad 4\qquad 5\qquad 6$$

卡点:我竟然一次过???

Brainf**k Code:

>+>,>,,[->>+>+<<<]>>[-<<+>>]<<<[->-[<]>>]<<<<[<]>>[->>>>+<<<<]>>>>.

  

Brainf**k(一位数求max)的更多相关文章

  1. hdu6003 Problem Buyer 贪心 给定n个区间,以及m个数,求从n个区间中任意选k个区间,满足m个数都能在k个区间中找到一个包含它的区间,如果一个区间包含了x,那么 该区间不能再去包含另一个数,即k>=m。求最小的k。如果不存在这样的k,输出“IMPOSSIBLE!”。

    /** 题目:hdu6003 Problem Buyer 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6003 题意:给定n个区间,以及m个数,求从n个区 ...

  2. CF 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和(数位DP)

    题意: 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和 分析:考虑用状态压缩 , 10给位0~9 , 如果之前出现过了某个数字x ,那就拿当 ...

  3. [HDU] 5306 Gorgeous Sequence [区间取min&求和&求max]

    题解: 线段树维护区间取min求和求max 维护最小值以及个数,次小值 标记清除时,分情况讨论 当lazy>max1 退出 当max1>lazy>max2(注意不要有等号) 更新 否 ...

  4. hdu Anniversary party 树形DP,点带有值。求MAX

    Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  5. 单调队列优化dp,k次移动求最长路

    洛谷2254 给你k次移动 每次移动给你一个时间段 a,b和方向dir 地图上有障碍物 为了不撞上障碍物你可以施法让箱子停下来 问箱子可以走的最长路 ((以下是洛谷的题解)) /*首先考虑对于时间t来 ...

  6. AcWing 1019. 庆功会 多重背包求max

    //多重背包 max #include <iostream> using namespace std; ; int n, m; int f[N]; int main() { cin > ...

  7. POJ-3111 K Best---二分求最大化平均值

    题目链接: https://cn.vjudge.net/problem/POJ-3111 题目大意: 卖宝救夫:Demy要卖珠宝,n件分别价值vi 重 wi,她希望保留k件使得 最大. 解题思路: # ...

  8. EM算法——有隐含变量时,极大似然用梯度法搞不定只好来猜隐含变量期望值求max值了

    摘自:https://www.zhihu.com/question/27976634 简单说一下为什么要用EM算法 现在一个班里有50个男生,50个女生,且男生站左,女生站右.我们假定男生的身高服从正 ...

  9. BrainF**k的编译器

      按照语法编写了这个"编译器"(对于解释性语言而言"编译"二字的确很奇怪).   功能:     1."编译".运行一个后缀为 '.bf' ...

随机推荐

  1. jQuery获取data-*属性值

    下面就详细介绍四种方法获取data-*属性的值 <li id="getId" data-id="122" data-vice-id="11&qu ...

  2. vue入门——组件基础todolist

    1. 以下是 todolist 的例子,没有用到组件:下面的3 会通过组件拆分todolist <!DOCTYPE html> <html lang="en"&g ...

  3. PyCharm+QT Designer整合

    CMD下使用pip安装PyQt4或者PYQT5 这里要注意,你下载的PYQT5不包含QT designer 还要:pip3 install PyQt5-tools,好像Pyqt5中将designer分 ...

  4. 一道SQL面试题——表行列数据转换(表转置)

    SQL语句如下: select country, sum(case when type='A' then money end) as A, sum(case when type='B' then mo ...

  5. 记6种php 加密解密方法

    <?php function encryptDecrypt($key, $string, $decrypt){ if($decrypt){ $decrypted = rtrim(mcrypt_d ...

  6. python更新mysql数据

    >>>cur.execute("update users set username=%s where id=2",("mypython")) ...

  7. Hash学习笔记

    啊啊啊啊,这篇博客估计是我最早的边写边学的博客了,先忌一忌. 本文章借鉴与一本通提高篇,但因为是个人的学习笔记,因此写上原创. 目录 谁TM边写边学还写这玩意? 后面又加了 Hash Hash表 更多 ...

  8. 生産管理(PP)

    伝票系 製造指図 マスタ系 生産資源/治工具 作業区 能力 作業手順 作業バージョン 作業記録 需要予測プロファイル 計画手配 MRP レシピ その他 カスタマイズ系 BOM関連 製造指図確認 伝票系 ...

  9. P2212 [USACO14MAR]浇地Watering the Fields

    P2212 [USACO14MAR]浇地Watering the Fields 题目描述 Due to a lack of rain, Farmer John wants to build an ir ...

  10. win10 无法修改默认程序 默认打开方式的解决方法

    此时是2018年11月24日 win10 pro 64位 版本是1803  具体版本号是17134 情景: 我的状况是.json文件的默认打开方式被新安装的应用霸占了,然后无论是通过“右键-属性-更改 ...