摘要: 解题报告:发现规律就可以了,斜着看,第一条线上有1个,第二条线上有2个,....然后求出等差数列前n项和,求出N在第几条线上,然后就看N是在这条线上的第几个就可以了。 1 #include 2 const int MAX = 10000000+5; 3 int main() { 4 int ... 阅读全文
posted @ 2013-08-01 22:47 xiaxiaosheng 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目的意思是输入一个字符串,并规定,里面的“hehe”可以用"wqnmlgb"来代替,也可以不代替,问输入的这个字符串在经过相关的代替之后可以有多少种不同的形态。先打一个斐波那契数的表,f[1] = 1,f[2] =2....,然后从前往后扫一遍字符串,将一段连在一起的"he"一起计算,若这一段里面有 n 个 "he" ,然后这一段就有f[n]种不同的形态,然后一直这样扫下去,把每一段的状态数都相乘,就是最后的结果,不过,要注意的是用到斐波那契数如果不取模的话,一定会爆 int 所以打表的时候每一步都要取摸,并且相乘的时候每 阅读全文
posted @ 2013-08-01 19:57 xiaxiaosheng 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 解题报告:给你两个字符串,让你连接起来,没有前后顺序,要求是长度最短优先,其次是字典序最小。这题我用的是KMP,做两次匹配,分别把第一次跟第二次输入的字符串放前面,然后比较两次得到的字符窜的长度和字典序。 1 #include 2 #include 3 const int MAX = 200000+5; //因为如果两个加一起就有可能超出了,干脆开两倍的数组 4 int next[MAX]; 5 void get_next(const char *t) { 6 next[0] = -1; 7 int len = strlen(t); 8 int i = 0,j = -... 阅读全文
posted @ 2013-08-01 15:16 xiaxiaosheng 阅读(193) 评论(0) 推荐(0) 编辑