HDOJ 1021-1025

1021
这道题的解答只要写出前几项就可以得到答案,也就是说只要m%n后得到的数再加上m%n的结果再进行%n,多次以后必定会重复,这是可以用数学知识证明的,F(0)=7,%3=1 F(1)=11,%3=2。 那么F(2)=F(0)+F(1) ,%3 相当于 两个的余数1+2 模3 ,得到的结果必定是<3 故多次以后必定会出现重复
1022
设置栈模拟列车进出,讲数字按顺序存入栈中,当发现栈顶元素与出栈顺序的第一个相同时,将指针从出栈顺序第一个移至第二个,同时将栈顶元素出栈。
1023
列车出栈顺序,这道题目实际上另一种形式的卡特兰数,可以这么简单的认为,将进栈标记为1,出栈标记为0,那么进出栈的先后顺序字符串中从开头算起任一连续字串中,1的个数都要比0的多。 这道题还有一点是要用数组模拟大数。我自己也是查了好多资料才理解过来的..直接用网上能ac的代码了。
1024
题目的意思是求所给序列中互不相交的m个字段的和最大,可以预料到要用动态规划,动态转移方程也是可以理解,要么dp[i][j]=max(dp[i][j-1]+num[j],dp(i-1,t)+num[j])(因为必须是以 num[j] 结尾的,所以num[j]一定属于最后一个子段,即要么自己独立成一个子段,要么与前边以num[j-1]结尾的子段联合),然后还可以用一系列的时间和空间的优化。无情。我不是很能完全理解。
1025
我写不出来代码。但我知道怎么分析。。。完了 好像得了这种病。相信学过数据结构都知道这道题目就是求两个字符串的最长公共子序列。类似的,把城市看成字符。富裕的城市在上面一条线,贫穷的在下面一条线所以 。d[i][j]= max{d[i-1][j-1]+1,d[i-1][j],d[i][j-1]} 这三种情况进行分析,ij,表示从富裕城市i到贫穷城市j.

原文地址:https://www.cnblogs.com/monster5475/p/9636633.html