浮点数编码 本文为浮点数编码的一般情况说明,全文均为白中英教授的《计算机组成原理》一书中的内容,本文仅作简要总结。和采用补码进行编码的整数编码方式不同,浮点数采用科学计数法的形式进行编码,这使得占4字节的浮点型float比占8字节的整形long表示的数据范围还要大。以下为采用科学计数法的这种编码格式的简要说明: 我们知道十进制的科学计数法表示数N为:N
关于Java数据类型取值范围的一些思考和理解 事先申明,本文为菜鸡笔者自己学习总结,大佬若觉得笔者说的是废话可自行忽略,如果觉得笔者写的还凑合也请指正其中不对之处,笔者在此感谢。相信搞Java的或正在学java的都应该见过下面这个表格:数据类型关键字内存占用取值范围字节型byte1个字节-128 ~ 127短整型short2个字节-32768 ~ 32767整型int4个字节-231 ~ 231-1
Java中的Timestamp与String之间的转化 初学Java被这个Timestamp快搞吐了,主要是Java的这个类型与数据库中自带的Timestamp类型兼容而且还能精确达到具体时分秒,所以想省掉点转化的麻烦就用的这个,网上的大部分介绍显得较为复杂,然后被一篇百度经验拯救了,大致如下: String类型转化为Timestamp类型——例子如下: //定义一个String类型实体str保存你要的时间,格式如下(...
Java中的&(不短路与) 开始学Java,发现了点新东西。。。 Java中的与逻辑运算符是分类别的,有 短路与(&&) 和 不短路与(&) 之分, 先说说 短路与 ,我们知道与运算的逻辑规则是与运算的两位操作数必须都是true的情况下才返回true——即: x && y 的 值当且仅当a和b都为true时才返回true。 那么当x为false时,无论...
POJ2392——Space Elevator(DP) 题目链接 这道题的意思是给定每一块建材的高度和数目,以及其能堆叠的高度上限,求最高能叠多高,这道题和poj上的一道名字是coins的题目比较相似,我用了同样的DP策略,也就是dp[i][j]表示第i种建材块在构成高度为j时能最少能剩下多少块。那么: ①当dp[i-1][j]>=0,也就是当前高度之前的木块就能达到,第种就能全留不用
ZSTUOJ3698——单调序列2 题目链接 这题和POJ3666是一样的题目,只是数据范围扩大了,从2000扩大到了5000,做法和POJ3666是一样的,只需扩展数组大小即可,所以就不赘述了,全当我极不负责的水了一篇博客好了。。。,POJ3666的解释可以看这里。#include#include#include#include#includeusing namespace s
POJ3666——Making the Grade(动态规划) 题目链接 这题反正我是觉得用DP做有点恶心,看别人的题解做的,转移方程是:dp[i][j]表示前i个元素的最后一个元素为全部元素第j小时的最小代价,则dp[i][j]=min(dp[i-1][k])+abs(s[i]-cop[j]), ( 0≤i<n ,0≤j , 0≤k )从这个式子来看应该是有三重循环的,但有为大牛很巧妙的省掉了k的循环,从而降低了时间复杂度,然
HDU1069——Monkey and Banana(动态规划) 题目链接 题目要求找最高能叠的箱子的高度,其实就是按照求LIS的方式来求即可,只是此处的最长按照箱子的高度做参数,然后一个箱子能叠在另一个箱子上的前提是处在下面的箱子长和宽都比上面的箱子要大,不能相等,输入时分类一下再处理输入数组,然后按照长或者宽的顺序sort一下,再对另一个参数进行dp即可。#include#include#include#in
POJ1631——Bridging signals(动态规划) 题目链接 真的很想说这道题读懂题意比解决题目本身要难。。。然而题目本身的意思又很简单就是求最长递增子序列。但这道题有点特殊的地方就是要优化,常规的两个for的方法会超时,然后在《挑战程序设计竞赛》这本书上给了另一个nlogn的方法——就是定义dp[i]:=长度为i+1的上升子序列中末尾元素的最小值(不存在的话就是INF),初始化对dp[]数组全部赋值成INF,也就是+∞,然后对
POJ1065——Wooden Sticks(贪心) 题目链接 题目大意很好懂,给一连串数对,只要后一个数对的两个值比前一个数对两个值都大,那么该数对不消耗时间,否则消耗1单位时间。求如何安排数对顺序使得耗时最少。这题是贪心,先按L从小到大排序,然后对w进行贪心,其思想上和以前一道导弹拦截的题目几乎一模一样(题解链接),用vector存当前需要另外加工的w值,然后对每次更新均对vector进行搜索,找出与当前w差值最小且比其小的w
POJ3280——Cheapest Palindrome(动态规划) 题目链接 题目意思挺好懂的,就是说给你一个字符串,要求添加或删除若干的字符使得其成为回文串。给出每个字符添加和删除的代价,求出代价最小值。简单的DP,方程为:dp[i][j]=min(dp[i][j-1]+Map[s[j]-'a'],dp[i+1][j]+Map[s[i]-'a']);dp[i][j]表示第i个字符到第j个字符的最小代价,Map[s[i]-'a']表示删除或添加
POJ3616——Milking Time(动态规划) 题目链接 这道题感觉有点像任务调度,(由于智商感人)还是看别人的题解做的。题目要求获得更多的牛奶,但区间又不能重叠,所以状态转移函数dp[i]=max(dp[i],dp[j]+s[i].product),(j表示在i之前的且与第i个区间不重合的区间),dp[i]表示第i个区间能获得的最大产量。其中第i个并不是题目给出的第i个区间,而是按照结束时间排好序的第i个区间。看一下代码还
POJ2385——Apple Catching(动态规划) 题目链接 这道题听说是很水的DP入门题。然而,我连入门题都不会。看别人的题解弄的,关键点就是要抽象出问题的状态转移,其状态转移方程为 dp[i][j] = max(dp[i-1][j] , dp[i-1][j-1])。其中dp[i][j] 表示的是 第i秒 第j跳 最多能吃多少苹果,这个看似很简单的方程我都理解了很久,其实主要的是没把别人的代码看完,这个方程是不完整的,还差
HDU1257——最少拦截系统(贪心) 题目链接 在kuangbin的DP专题里找到的,然而有点坑的是并不是用DP做的。。。此题用贪心才是正解啊~~,对于每一发导弹,若已经存在拦截系统,且可以拦截此导弹,那么重新开一台是没意义的,因为达到的效果和通过降低现有拦截系统高度来拦截所达到的效果是一样的,当然若拦截不了那就另当别论去开一台,问题是有多台可以降低高度那么选哪一台呢?答案当然是选高度最低的且能拦截此导弹的系统
HDU1114——Piggy-Bank(装满的完全背包) 题目链接 这道题是一道完全背包练手很好的题,比较容易,但是与纯的完全背包相比却做了部分很巧的改动。其一,这是一个要求装满的完全背包。其二,这个背包求得并不是最大值,而是最小值。那么如何解决这些变动呢?首先是看求最小值,这个好处理,那就是把max( )改成min( )就好了,但求最小值影响的却不只是函数的变化,还影响了对装满背包的处理。 我们知道,无论是01背包还
POJ3176——Cow Bowling(水DP) 题目链接 开始做DP的我表示要尊重每道水题(其实是只会水题。。。)这道题就是要找一条能从三角形定点到最底边的一条路径,方法是从底边开始往上找,一直取当前节点可达的最大值,最后找到定点即可,方法上模拟了背包问题的数组一维化处理,但是空间消耗还是大大滴(1700K)。。而且时间也跑了76ms。很想知道那些0ms跑出来的大神是如何做到的。#include#inc
POJ3262——Protecting the Flowers(贪心) 题目链接 题目大意是说农场主要尽可能的减少牛吃花造成的损失,所以赶牛回牛圈,但是一次只能赶一头牛,现给出赶一头牛花的时间和牛每分钟吃的花的数量,求最少牛会吃掉多少花?处理起来也比较容易,关键找到赶牛的顺序,所以排序是关键。其实利用sort函数就挺好的,写一个cmp,里面比较的就是按照a牛单位时间吃的花与赶b牛的时间乘积与b牛单位时间吃的花与赶a牛的时间乘积,选其较小者。然后统
POJ1017——Packets(贪心) 题目链接 一道很简单贪心,结果被自己做蠢了。题目要求有6种不同规格的箱子,分别是1*1,2*2,3*3,4*4,5*5,6*6。要对这6种规格的箱子打包,但是包裹的规格只有6*6的。所以问你如何用尽量少的包裹打包,输出包裹数。我的做法就是老老实实的模拟,先装6*6的,每个包裹只能装一个6*6,再装5*5,一个包裹只能装一个5*5和11个1*1,再是4*4。。。就这样一直模拟下去
POJ2393——Yogurt factory(贪心) 题目链接 蛮水的一个贪心,维护当前最优价格就好,可以把储藏时间看做额外加价的次数,每过一周都在最优价上加一次储藏价,然后不断更新最优价即可,注意数据开long long。#include#include#include#include#includeusing namespace std;int main(){ long long n,
POJ3190——Stall Reservations(贪心) 题目链接 题目大致是说有一群奶牛要挤牛奶,但是她们只在规定的时间区间内挤牛奶,而且一台挤奶机只能给一头牛挤牛奶,问最少需要几台挤奶机才能给全部的牛挤牛奶,并且输出每头牛是在第几台挤奶机挤的牛奶,第一行输入奶牛数,然后按顺序输入每头奶牛的挤牛奶时间区间。输出则是第一行输出最少的挤奶机数。然后一次输出每头奶牛是在第几台挤奶机挤的奶。首先对挤牛奶区间sort一下,优先按区间左端点从小