随笔分类 - ACM-dp
摘要:题意: 给出一棵树,一个人可以在树上跳,每次最多跳k(1≤k≤5)个点定义f(s,t)为从顶点ss跳到顶点tt最少需要跳多少次求∑(s<t)f(s,t) 链接: 点我 dp[i][j]表示以i点为根,子树节点到i距离的mod为i的节点个数 fs[i][j]表示以i点为根,子树节点到i距离的mod为i
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define MOD 1000000007 10 const int IN...
阅读全文
摘要:题目中提到 It guarantees that the sum of T[i] in each test case is no more than 2000 and 1 2 #include 3 #include 4 #include 5 #include 6 #include 7 #inclu...
阅读全文
摘要:看到范围基本可以想到dp了,处理起来有点麻烦 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #def...
阅读全文
摘要:题意:给你n(n = 1000)个二维点,第一个点是power plant,还有n - 1个点是dormitories。然后现在知道有一条寝室到寝室的边是不能连的,但是我们不知道是哪条边,问这种情况下,最小生成树的最大值。 好题,毕竟做了一下午,注意dis要double转换 dfs求的是从cur点出
阅读全文
摘要:虽然dp方程很好写,就是这个期望不知道怎么求,昨晚的BC也是题目问题抽象之后为:在一个x坐标轴上有N个点,每个点上有一个概率值,可以修M个工作站, 求怎样安排这M个工作站的位置,使得这N个点都走到工作站的距离期望值最小?解题报告人:SpringWater(GHQ)解题思路:状态方程:dp[i][j]...
阅读全文
摘要:题意:有n个人,可任意分成若干组,然后每个人个各提供一个信息,表示他们组前面有多少人,后面有多少人。问最多有多少个信息是不冲突的。将n个人看成一组区间,然后每个人的信息可以表示为该人所在组的区间,然后求最大不相交的区间个数(区间可以完全覆盖),注意不是区间长度,长度是贪心 1 #include 2...
阅读全文
摘要:设定每个节点的上限和下限,之后向上更新,判断是否出现矛盾 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define MOD 1000000...
阅读全文
摘要:题目:给出1-n连续的方格,从0开始,每一个格子有4个状态,左右脚交替,向右跳,而且每一步的步长必须在给定的区间之内。当跳出n个格子或者没有格子可以跳的时候就结束了,求出游戏的期望步数0:表示不能到达这个格子1:表示左脚跳进这个格子2:表示右脚跳进这个格子3:随意哪个脚跳进这个格子,而且下一步随意用...
阅读全文
摘要:cl少用在for循环里 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define MOD 1000000007 10 c...
阅读全文
摘要:太吊了,反正我不会 1 /* 2 HDU 4035 3 4 dp求期望的题。 5 题意: 6 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 7 从结点1出发,开始走,在每个结点i都有3种可能: 8 1.被杀死,回到结点1...
阅读全文
摘要:没看过TSP,先mark 1 //4838039 2011-10-27 23:04:15 Accepted 4026 2343MS 31044K 3143 B C++ Geners 2 //状态压缩DP的TSP问题 3 //优先级位运算小于判等 , 还有各种细节各种出错 4 #include...
阅读全文
摘要:一开始用搜索直接超时,看题解会的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #define inf 11000011 #define M 1...
阅读全文
摘要:题意:求K个机器人从同一点出发,遍历所有点所需的最小花费链接:点我Sample Input3 1 1 //3个点,从1出发,1个机器人1 2 11 3 13 1 21 2 11 3 1Sample Output32转移方程: dp[i][j]=min(dp[i][j],dp[i][j*k],d...
阅读全文
摘要:题意:给一些指定长宽高的砖,求能累出的最大高度,不同砖有不同编号,每种编号对下面的砖做出了限制dp注意输出要用%I64d,否则会wa,以后不用%lld了Sample Input310 10 12 010 10 12 110 10 11 2210 10 11 110 10 11 10Sample Ou...
阅读全文
摘要:题意:有n只狼,每只狼有两种属性,一种攻击力一种附加值,我们没杀一只狼,那么我们受到的伤害值为这只狼的攻击值与它旁边的两只狼的附加值的和,求把所有狼都杀光受到的最小的伤害值。枚举中间k作为最后杀死的狼 1 #include 2 #include 3 #include 4 #include 5 #in...
阅读全文
摘要:给一个给定括号序列,给该括号上色,上色有三个要求1、只有三种上色方案,不上色,上红色,上蓝色2、每对括号必须只能给其中的一个上色3、相邻的两个不能上同色,可以都不上色求0-len-1这一区间内有多少种上色方案,很明显的区间DPdp[l][r][i][j]表示l-r区间两端颜色分别是i,j的方案数0代...
阅读全文
摘要:链接:点我就是自己写不出来 1 #include 2 #include 3 #include 4 using namespace std; 5 const int MAX = 23; 6 7 int dp[MAX][MAX]; 8 int pos[MAX][MAX]; 9 int val[M...
阅读全文
摘要:链接:点我 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int v = 2000 + 5; 7 const int MaxN = 100 + 5; 8 int N, sum, num[M...
阅读全文
摘要:链接:点我 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define MOD 100000000710 const int INF=0x3...
阅读全文