数据结构
丁磊_Ml
业精于勤,荒于嬉;行成于思,毁于随。
展开
-
nyoj ACM:士兵杀敌(三)(区间最值查询 --RMQ算法)
士兵杀敌(五) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为0~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情。在这样的情况下,南将军却经常会在许多原创 2017-04-01 17:24:17 · 649 阅读 · 0 评论 -
前缀式表达式求值
上一篇博客讲了中缀,后缀表达式的求法,这里就记载一下前缀的。 可以参考这篇博客 nyoj ACM:前缀式计算( 堆栈的使用 或 递归 ) 比如求 : + 2 * + 3 4 5 注意输入的之间都有空格 思路: 1. 用数组s接受前缀表达式,连同空格一起接收。 2. 然后将s全部压入堆栈A中 3. 每次从堆栈A中取出一个字符x。如果是数字,那么就看A的下一个字符y是数字还是小数点原创 2017-04-03 08:56:27 · 2239 阅读 · 0 评论 -
中缀转后缀 和 后缀表达式求值
逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法)被称为后缀表示法,(当然波兰表示法 就是 前缀表示法)。 下面内容转载自:http://www.iteye.com/topic/1130373如何书写逆波兰表达式:先看一下怎么书写前缀表达式: 1. 如2+(3+4)*5这种我们最常见的式子就是中缀式。 2. 而把中缀式按运算顺序加上括号就是:(2+((3+4)转载 2017-04-03 08:43:20 · 1176 阅读 · 0 评论 -
nyoj ACM:表达式求值 (堆栈)
表达式求值 时间限制:3000 ms | 内存限制:65535 KB 难度:3描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是20 ,add(10,98) 的值是108等等。经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。 假设表达式可以简单定义为: 1. 一个正的十进制数原创 2017-04-02 21:37:43 · 687 阅读 · 0 评论 -
nyoj ACM:前缀式计算( 堆栈的使用 或 递归 )
前缀式计算 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 先说明一下什么是中缀式:如2+(3+4)*5这种我们最常见的式子就是中缀式。而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )把括号去掉就是:+ 2 * + 3 4 5最后这个式子就是该表达式的前缀表示。给你一个前缀表达式,请你计原创 2017-04-02 20:35:48 · 798 阅读 · 0 评论 -
nyoj ACM:士兵杀敌(五)(数组的巧妙运用)
士兵杀敌(五) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为0~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情。在这样的情况下,南将军却经常会在许多原创 2017-04-02 15:36:17 · 573 阅读 · 0 评论 -
树状数组总结
树状数组基本用法什么是树状数组数学解释一插点问线单点增减区间查询二插线问点区间修改单点查询 区间每次修改的值是一样的三 区间查询区间修改树状数组基本用法:一、插点问线,单点增减+区间查询 ,如“士兵杀敌(二)”二、插线问点,区间修改+单点查询 如“士兵杀敌(四)”(区间每次修改的值是一样的)三、 区间查询+区间修改 四、 树状数组求逆序数五、 多维树状数组一般的用数组数组来解的题,都是原创 2017-04-02 11:08:59 · 524 阅读 · 0 评论 -
nyoj ACM:士兵杀敌(四)(树状数组)
士兵杀敌(四) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情,军师小工的任务就是在南将军询问他某个原创 2017-04-02 13:08:04 · 607 阅读 · 0 评论 -
区间最值查询 --RMQ算法
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。这两个问题是在实际应用中经常遇到的问题,本文介绍了当前解决这两种问题的比较高效的算法。转载 2017-04-01 18:43:11 · 2092 阅读 · 0 评论 -
nyoj ACM:士兵杀敌(二)(树状数组)
士兵杀敌(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。输入 只有一组测试数据 第一行是两个整数N原创 2017-04-01 17:03:12 · 474 阅读 · 0 评论 -
nyoj ACM: 三个水杯(回溯算法 bfs )
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入 第一行一个整数N(0<N<50)N(0<N<50)表示N组测试数据原创 2017-04-03 19:45:21 · 2063 阅读 · 0 评论