摘要:
题意:给出一些节点,每个节点有两个值,lable和priority,要求构成一个笛卡尔树,按lable是二叉排序树,按priority是大根堆(不一定完全二叉树)。输出括号表示。思路:没什么好说的,完全自己独立写的代码,除了读入参考了rainy days的,其他都是独立创造的~自我感觉写的还可以~(抑郁,把括号表示法搞反了,纠结了好久,外面的括号越少的是堆顶!又一直以为只有一个字母,又纠结了好久,可以是一个字符串!)读入说明见:http://www.cnblogs.com/rainydays/archive/2011/06/15/2081266.htmlPS:字符串s是二叉排序树结构,权值w是 阅读全文
摘要:
题意:题目大意:让你构造一棵笛卡尔树。笛卡尔树的节点含有2个值,1个key,一个value,其中key是主键,value是辅键。一棵笛卡尔树就是:key升序,value升序或者降序。类似堆。判断能否构成。(PS:此题保证数据相异,必然能够成)思路:第一次做,参考的别人的,不过这个模板好像写的有点别扭。。自我感觉思路比较清晰的模板见我的下一篇文章:http://www.cnblogs.com/proverbs/archive/2012/10/11/2720592.htmlView Code 1 #include <cstdio> 2 #include <cstring> 阅读全文
摘要:
题意:一颗树,得到每个节点可到达的最远路径长度组成的序列,每给定一个q,求最长满足{最大值-最小值<=q}的连续序列的长度分析:①求以每个节点出发的最长路径dfs+树形dp:dfs出从u节点出发,向下延伸的最长路径的长度dis[u],以及是从那条边向下延伸得到的disnum[u],还有u节点向下延伸的次长路pis[u]从上向下DP,找到dp[u]表示从u向父节点延伸的最长路径长度(如果这个还不熟练请移步:HDU 2196,就是求步骤①)②维护区间最大最小的差维护一个队列(虚拟的,真实存在的只是 h 队头指针 ,t 队尾指针 两个指针),若当前h~t不满足条件h++否则t++用rmq O( 阅读全文
摘要:
题意:4*N的矩形中放入1*2的小矩形有多少种放法分析:表示公式不会推导。。没找着有人推公式的证明了。。。求证明、、、f(n)=f(n-1)+5*f(n-2)+f(n-3)-f(n-4)手动算出来前4项,然后处理线性递推式就好了~View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 6 using namespace std; 7 8 struct MT 9 {10 int x,y;11 int mt[7][7 阅读全文
摘要:
题意:将一个k进制的高精度数字A转换成m进制数B(k,m<=62)分析:我本来想把数字先转换成10进制,然后再转换成m进制,觉得太麻烦,于是乎问WZC神犇怎样做简单他是这样做的:应用“除n取余法”,我们直接短除A,除数是m还是举例说明吧:7进制下的35,转换成2进制,就用3除以2,商是1,余数是1将1*7再加上第二位的5当成第二个数,继续重复以上步骤说白了了就和10进制的短除法一样,只不过我们在对于每一位短除的处理上采用的是7进制(处理十进制的时候不都是将余数*10加到下一位么~)这样,这个题目完美解决了~PS:代码里写了好多没有用的函数,忽略就好~友情提示:注意将0转换后是否有输出我在 阅读全文