02 2015 档案

摘要:题意:给出一个有向图,问是不是仙人掌图。仙人掌图:每个边只在一个普通环内的强连通图。解法:tarjan判断强连通分量是否为1个,记录找环的路径,在每找到一个环时遍历路径记录点出现的次数,如果出现有点被记录两次,则说明有边不只在一个环内。代码:#include#include#include#incl... 阅读全文
posted @ 2015-02-28 18:58 露儿大人 阅读(237) 评论(0) 推荐(0)
摘要:csdn总挂···而且觉得这里比较好看啦啦啦啦啦一键搬家真好用TUT不用贴原地址了呢 阅读全文
posted @ 2015-02-27 18:26 露儿大人 阅读(155) 评论(2) 推荐(0)
摘要:题意:一个n * m的棋盘,0或1,每次改变一个格子时同时改变上下左右的格子,问用最少次数将棋盘全变成0的策略。题解:用二进制压缩第一行更改的状态,之后遍历棋盘,如果当前格子为1则改变下方的格子,记录改变次数最小的状态为ans,最后模拟一次ans状态时的策略并输出。代码:#inclu... 阅读全文
posted @ 2015-02-22 16:25 露儿大人 阅读(191) 评论(0) 推荐(0)
摘要:题意:双调欧几里得旅行商问题。算法导论15-1题,从最左边的点严格从左走到右再从右走到左回到起点,所有点都要走且只走一次,求最短路径。解法:定义dp[i][j]表示从i走到j的双调路径,分为两种情况:当j #include#include#include#include#include#includ... 阅读全文
posted @ 2015-02-22 12:14 露儿大人 阅读(181) 评论(0) 推荐(0)
摘要:题意:有一条公路,上面有n个施工队,要躲进m个避难所中,每个避难所中至少有一个施工队,躲进避难所的花费为施工队与避难所的坐标差的绝对值,求最小花费及策略。解法:将施工队和避难所按坐标排序,可以看出有下列递推关系,dp[i][j]表示前j个施工队进入前i个避难所的花费,则有dp[i][... 阅读全文
posted @ 2015-02-22 11:51 露儿大人 阅读(251) 评论(0) 推荐(0)
摘要:大概学了一下重载运算符的方法···鉴于我的记性实在是呵呵呵呵···写个test···顺便记一下初始化表的写法TUT#include#include#include#include#include#include#include#include#include#include#include#incl... 阅读全文
posted @ 2015-02-17 22:05 露儿大人 阅读(138) 评论(0) 推荐(0)
摘要:题意:在一个n * m的地图里,有p个宝藏,每次只能向横纵坐标增加的方向走,问最少走几次能把宝藏都拿走。解法:按横坐标排序,纵坐标的一个不下降子序列就是一条合法路径,要求多少条不下降子序列可以覆盖所有点,这个问题可以转化为最长下降子序列的长度。代码:#include#include#include#... 阅读全文
posted @ 2015-02-16 21:39 露儿大人 阅读(200) 评论(0) 推荐(0)
摘要:题意:给出一个树,每个点有一个value,value的意义是去掉这个点之后所有连通分量中点最多的那个连通分量的点数,这棵树的重心为所有点value的最小值,求重心,及重心都有谁。解法:貌似是个树形dp,不过不太懂树形dp···学了一下也没太明白这题为啥是树形dp···觉得其实是深搜···嗯···随便... 阅读全文
posted @ 2015-02-16 19:47 露儿大人 阅读(199) 评论(0) 推荐(0)
摘要:题意:36张扑克,平分成9摞,两张数字一样的可以拿走,每次随机拿两张,问能拿光的概率。解法:记忆化搜索,状态压缩。一开始我想在还没拿的时候概率是1,然后往全拿光推···样例过不去···后来觉得推反了,改成了深搜,模拟拿牌的过程,九摞牌的状态用9位五进制表示。代码:#include#include#i... 阅读全文
posted @ 2015-02-15 00:39 露儿大人 阅读(389) 评论(0) 推荐(0)
摘要:题意:求[A,B]内有多少个数,满足x % f(x) == 0。解法:数位DP。转化为ans = solve(b) - solve(a - 1)。设dp[i][sum][mod][r]表示长度为i,各位和为sum,模mod余r的数的个数。当在数字后面新添加一位j时,则有dp[i + 1][sum +... 阅读全文
posted @ 2015-02-11 19:29 露儿大人 阅读(166) 评论(0) 推荐(0)
摘要:题意:一段DNA序列s,只包含字符ATGC,长度不超过15,求有多少种长度为n的DNA序列与s的最长公共子序列长度为0~len。 解法:状压dp。 LSC: if(a[i] == b[j]) dp[i][j] = dp[i - 1][j - 1] + 1; else dp[i][j] = max(d 阅读全文
posted @ 2015-02-09 12:15 露儿大人 阅读(230) 评论(0) 推荐(0)
摘要:题意:在一个n维坐标系中,坐标的范围是0到m - 1,如果两个点坐标只有一个维度的坐标不同则可以相互移动,给出p个点,问任意两个点之间路径为d的个数是多少,答案与p取模。解法:只需要考虑两个点之间不同的维度的个数,递推方程:f[i][j]表示第i步时维度不同个数为j的路径数,f[i][j] = f[... 阅读全文
posted @ 2015-02-06 15:34 露儿大人 阅读(133) 评论(0) 推荐(0)
摘要:虽然它出现在dp专场里···但是我第一反应是一道最短路题···不过幸好它出现在dp专场里···因为我不怎么会dijstra什么的···题意:一条河上有N+1对码头,每个相邻码头之间需要一定时间到达,每对码头之间也需要一定时间到达,如下图:给出起点码头和终点码头,问最短到达时间。解法:假设起点码头一定... 阅读全文
posted @ 2015-02-01 16:30 露儿大人 阅读(187) 评论(0) 推荐(0)
摘要:寒假开始了···但是做题没有结束嘤··· 然后是dp专场嘤··· 题意:背包问题,给出背包容量和物品对数,每对物品都有特殊的关系:第一种关系是两个物品都取有价值,若只取一个则失去价值;第二种是两个物品只能取一个,都取则失去价值;第三种是只有当第一个被取时第二个才能被取,但可以单独取第一个物品。 解法 阅读全文
posted @ 2015-02-01 11:29 露儿大人 阅读(120) 评论(0) 推荐(0)