上一页 1 2 3 4 5 6 ··· 48 下一页
  2013年10月5日
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1526题目大意:可以从n个碟子中任选一个放在桌子上(不断往上放),也可以把桌子上最顶端的盘子拿走对于约束条件 i , j 是说假如 i 这个碟子还在桌子上,就不能拿走 j 这个碟子,也就等于放了i 这个碟子就不能再放 j 了,因为放了 i 再放 j,就会相互约束,无法拿走碟子了。思路:可以把问题转化为括号匹配队列问题,左括号代表拿来碟子,右括号代表拿走碟子。dp[x][y] , x 代表还有x个碟子可以放,y 代表已经放了的碟子的状态压缩表示再放的形式就是 “(递归1 ) 递归2 ”,根据y可以 阅读全文
posted @ 2013-10-05 20:59 夜-> 阅读(333) 评论(0) 推荐(0) 编辑
  2013年10月4日
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1171一天的时间,WA了N遍,居然是因为数组开小了呀,我勒个去!鄙视自己。。。。。。我是从第 1 层往上更新的dp[level][x][y][day] 表示到第level层的(x,y)位置(第level层已经用完,该去第level+1层)且用了 day 天时的最多食物量d[level][x][y][x1][y1][day] 表示在第level层 从(x,y)到(x1,y1) 且用day天 最多获取事物量d[level][x][y][x1][y1][day]的求取过程可以爆搜dp[level][x 阅读全文
posted @ 2013-10-04 19:49 夜-> 阅读(423) 评论(0) 推荐(0) 编辑
  2013年10月3日
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1310题目中说的 “the lexicographically increasing list”10 和 2 谁更小呢,我刚开始没管这么多,直接按数的大小算的,把 2 放在了 10 的前面然后也过了,但是题意是不是这个意思?思路:数位DP + 二分代码:import java.math.BigInteger;import java.util.Scanner;public class Main { /** * @param args */ static final int N = 105; sta 阅读全文
posted @ 2013-10-03 15:17 夜-> 阅读(338) 评论(0) 推荐(0) 编辑
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1472题目大意:一颗树,根节点(1) 的值为 1.0,所有叶子节点的值为 0.0 ,其他节点值任意最后要求的是 所有相邻两个节点的值差的总和最小。思路:假设一个叶子节点为 c ,他的父节点为 b ,b的父节点为 a,那么 c 的值为 0.0,此子树的最优结果为(value[a]-value[b])*cost[a->b] + (value[b]-value[c])*cost[b->c]的最小值因为value[c]=0.0 确定,那么value[b]的值要么为 0.0 要么为value[ 阅读全文
posted @ 2013-10-03 12:58 夜-> 阅读(369) 评论(0) 推荐(0) 编辑
  2013年10月2日
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1745题目大意:可以是任意的顺序,在满足括号匹配的情况下,求组合成的字符串长度最长思路:先将每一个字符串进行处理,处理时将匹配的去掉 比如说 {)(()(())(} 处理后就变成了 {)( (}当然字符串的长度是没有变化的 处理后的字符串假如说 左括号的个数为L 右括号的个数为R我们必须确定一个正确的顺序,可以让我们从头到尾的逐个决定是否选用当前字符串,而且不影响最优结果字符串有 L>R,LR的字符串要放在前面 因为每一个这样的字符串都可以使左括号 — 右括号 的值变大,而对于 LR的情况 阅读全文
posted @ 2013-10-02 17:56 夜-> 阅读(521) 评论(0) 推荐(0) 编辑
  2013年9月30日
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1362水题,树形DP代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pp;const int INF=0x3f3f3f3f;const int N=100002;int head[N],I;int d[N];priority_queueqt[N];struc 阅读全文
posted @ 2013-09-30 16:44 夜-> 阅读(287) 评论(0) 推荐(0) 编辑
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1172水题DP 大整数直接上java代码:import java.math.BigInteger;import java.util.Scanner;public class Main { /** * @param args */ static final int N = 35; public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in 阅读全文
posted @ 2013-09-30 16:08 夜-> 阅读(327) 评论(0) 推荐(0) 编辑
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1238DP+记忆化搜索思路不难,关键是最优结果的储存问题,为了编写方便,直接用string储存最优结果虽然速度慢了一些,不过写起来方便代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef pair pp;const int INF=0x3f3f3f3f;const int 阅读全文
posted @ 2013-09-30 15:27 夜-> 阅读(303) 评论(0) 推荐(0) 编辑
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1410题目倒是不难,水题DP就是题意理解起来有点困难,意思就是给你一段话,提取里面的单词单词有小写字母和大写字母(某些单词的首部)组成 其他字符均为间隔,而且不止一行,提取单词后,从里面选一定的单词,这些单词在原段中不能相邻,然后让提取后所有单词总长最大代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long 阅读全文
posted @ 2013-09-30 09:26 夜-> 阅读(257) 评论(0) 推荐(0) 编辑
摘要: http://acm.timus.ru/problem.aspx?space=1&num=1900题目大意:有N个车站,相邻车站之间形成一个段,这样就有N-1个段,每个段最多可以放一个洗脑的仪器,这样的话,所有经过这个段(放了仪器)的人都会开心,我们有K个仪器,问怎么放可以让最多的人快乐思路:dp[i][j] 代表第i个仪器放在第j个段上的最优值,更新最优值时,需要枚举上一个仪器放的位置,在知道上一个仪器放的位置的情况下,可以知道当前位置仪器可以作用到多少人。注意人数全为0的情况代码:#include#include#include#include#include#include#in 阅读全文
posted @ 2013-09-30 08:41 夜-> 阅读(370) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 48 下一页