摘要: 这题的模式需要记住一下,当需要从上下同时得到最优的时候,我记得还有一题NOIP的原题也是这个类型的,题目。。合唱队形也是类似的,两个DP相加。 这题还是有一点学习和参考的价值,代码:#include <stdio.h>#include <stdlib.h>int f1[27][27], f2[27][27], num[26][26];#define max(a, b) ((a)>(b)?(a):(b))int main(int argc, char **argv){ int n; int i, j; scanf("%d", &n); f 阅读全文
posted @ 2011-07-08 17:53 zqynux 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 一定要经过n / 2, n / 2,就是说从上面到n / 2这一行都只能取最右边的一个,然后下面的部分DP就行了。 代码:#include <stdio.h>#include <stdlib.h>int num[25][25];int f[26][25];#define max(i, j) ((i)>(j)?(i):(j))int main(int argc, char **argv){ int i, j; int n, ans = 0; scanf("%d", &n); for(i = 0; i < n; i++){ for(j 阅读全文
posted @ 2011-07-08 15:33 zqynux 阅读(353) 评论(0) 推荐(0) 编辑
摘要: ....太水了...排序,输出, Ok.#include <stdio.h>#include <string.h>#include <stdlib.h>char name[10000][100];int num[10000];int com(const void *a, const void *b){ return *(int *)a - *(int *)b;}int com_(const void *a, const void *b){ return strcmp(a, b);}int main(int argc, char **argv){ int i; 阅读全文
posted @ 2011-07-08 14:48 zqynux 阅读(219) 评论(0) 推荐(0) 编辑