摘要: 题意:将1到N个数全排列,找出最长上升子序列和最长下降子序列中的较小值,并按字典序输出这个排列。思路:其实这题真没什么具体方法,如果你的逻辑思维能力较好的话,可以很轻松想出来,不过我是看了题解才明白的,如果N是一个平方数,例如9, 1 , 2 , 3 , 4 , 5 , 6 , 7 ,8 , 9它的答案是:3 ,2 , 1 , 6 , 5 , 4,9 , 8 ,7 ,即将序列分成sqrt(n) 段,然后每段都倒序,这样最小的值就是3 ,如果不是平方数,可以分两种情况,m = ceil(sqrt(n)) ;一种是(m-1)*m <n ,一种是(m-1)*m >= n 。呃,怎么解释这 阅读全文
posted @ 2012-08-17 16:07 Misty_1 阅读(325) 评论(3) 推荐(0) 编辑
摘要: 题意:给出N*N个矩形,分成n*n个小矩形,然后给出M种颜色,每个小矩形可以涂一种颜色,并且有些小矩形已经涂完颜色,要保证这个大矩形无论是旋转还是反转都要保持不变,问有多少种染色方式。思路:中心对称图形,呃,其实找到有多少个小矩形可以然不同的颜色但又能保持是中心对称图形就基本上解决了这道题,找这些小矩形也很简单,是看了标程给出的公式才想到的,就是每个大矩形的左上角的那些小矩形。代码:View Code #include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream&g 阅读全文
posted @ 2012-08-17 10:40 Misty_1 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题意:在M分钟里,每分钟会出现N颗龙珠,每颗龙珠的位置有题目给出,并且取走每个龙珠所消耗的能量也给出,同时在路上消耗的能量石|x1-x2|,如果在每分钟出现的龙珠里取一颗,问消耗能量最小是多少。思路:在比赛的时候就知道要有dp过,不过如果是不加优化的dp会超时的,所以要优化一下。先来推一下dp的状态转移公式。设dp[i][j]表示第i批龙珠中取第j个需要花费的最小体力。dp[i][j] = min{ dp[i-1][k] + abs(pos[i-1][k]-pos[i][j]) } + cost[i][j];如果直接用这个状态转移公式的,时间复杂度是:m*n*n,优化的话,如果每一个状态都看成 阅读全文
posted @ 2012-08-17 10:05 Misty_1 阅读(242) 评论(0) 推荐(0) 编辑