TM机就是TINY语言编译器编译之后的汇编代码的运行环境。TM机的主要功能是将TM的汇编代码读入和执行,它具有一般计算机类似的精简指令级RISC。TM汇编语言和一般的Intel汇编语言差不多,包括寄存器寻址、操作符等,很容易理解。一条典型的代码如:LD 0,10(1),这里面10(1)就是寄存器1中地址为基址,10为偏移地址,寻址结果放入寄存器0。三目操作符:MUL 0,1,0表示将寄存器1和寄存...
分类:
其他好文 时间:
2014-05-18 18:24:00
阅读次数:
275
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4804
题意:给定一个图,0是不能放的,然后现在有1X1和1X2方块,最后铺满该图,使得1X1使用次数在C到D之间,1X2次数随便,问有几种放法
思路:插头DP的变形,只要多考虑1X1的情况即可,然后DP多开一维表示使用1X1的个数
代码:
#include
#include
#includ...
分类:
其他好文 时间:
2014-05-18 18:21:46
阅读次数:
208
题目连接:Codeforces 432D Prefixes and Suffixes
题目大意:给出一个字符串,求所有既是前缀串又是后缀串的字符串出现了几次。
解题思路:根据性质可以根据KMP算法求出所有的前后缀串,然后利用dp求解,dp[i]表示从1到i这个子串出现过的次数。转移方程dp[jump[i]]+=dp[i]。任意一个dp[i]的初始状态应该是1。
#include
#...
分类:
其他好文 时间:
2014-05-18 14:11:46
阅读次数:
321
【题目大意】一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻。问有多少种放牛方案(一头牛都不放也是一种方案)
【解析】根据题意,把每一行的状态用二进制的数表示,0代表不在这块放牛,1表示在这一块放牛。首先很容易看到,每一行的状态要符合牧场的硬件条件,即牛必须放在能放牧的方格上。这样就能...
分类:
其他好文 时间:
2014-05-18 08:27:39
阅读次数:
304
题目链接:hdu 4719 Oh My Holy FFF
题目大意:队伍里有n个人,给出每个人的身高,他们按照顺序排列,现在要将这n个人分成若干组,每一组的人数不得大于l,并且第i组的最后一个人的身高一定要大于第i?1组的最后一个人的身高。要求最后的权值最大,权值为,k为组号。
解题思路:dp[i]表示以第i个人作为结尾的最大权值,那么dp[i]肯定是从前面的l-1个中转移过来的,即d...
分类:
其他好文 时间:
2014-05-18 08:08:12
阅读次数:
229
水池数目
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池。
输入第一行输入一个整数N,表示共有N组测试数据
每一组数据都是先输入该地图的行数m...
分类:
其他好文 时间:
2014-05-18 06:51:16
阅读次数:
236
dp[i]=max(dp[i],dp[j]+1) ja[i]
dp[i]表示长度为i的最长下降子序列的长度。
r[i]表示长度为i的最长下降子序列的方案数。
考虑这样一个问题,比如6 3 9 3,对于两个3,他们数字一样并且dp值也一样,那么r[2]的方案数是没有意义的
因为能通过第一个3扩展的也能通过第二个3扩展,所以直接把r[2]=0。
对于一次扩展若dp[j]+1==dp[i],则...
分类:
其他好文 时间:
2014-05-18 06:31:43
阅读次数:
249
剑指offer上的第20题,九度OJ上测试通过。
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
输入:
输入可能包含多个测试样例,对于每个测试案例,
输入的第一行包括两个整数m和n(1<=m,n<=1000):表示矩阵的维数为m行n列。
接下来的m行,每行包括n个整数,表示矩阵的元素...
分类:
其他好文 时间:
2014-05-18 06:09:11
阅读次数:
317
题目:
输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。效率尽可能高。
例如:
f(2)=1
f(12)=5
f(20)=12
f(115)=44
解决方案:
最简单的方法是从1到n循环处理,计算每个数中1的个数,累加起来。这个效率很低。
第二种方法是累加从1到n的所有数的个位十位百位等等上面1的个数,对于32位整数运算次数不超过10次。
int n...
分类:
其他好文 时间:
2014-05-18 04:41:55
阅读次数:
197
除了邻接矩阵外储存图的另一种方法,适用于稀疏图。用一个有n结点,p条边的有向图,用a[i],b[i],l[i]分别表示第i条边的起点,终点,权值。first[x]表示x号结点连出的第一条边,next[i]表示与第i条边是同一个结点连出的下一条边,如果为0则表示已经没有下一条了。初始化:用last[x...
分类:
其他好文 时间:
2014-05-17 22:29:48
阅读次数:
468