随笔分类 - ---动态规划---
摘要:题目链接:2017盛大游戏杯 零件组装 题意: 有n个零件,给你相邻关系和排斥关系,每两块零件组装起来有一个代价,问最少的代价总和是多少。 题解: 考虑状态压缩,dp[i]表示i这个集合为一个零件块。 那么要枚举一下i的子集。O(3^n). 先要预处理一下每个集合的排斥个数和相邻个数,然后容斥一下就
        阅读全文
                
摘要:题目链接:Helvetic Coding Contest 2017 online mirror K. Send the Fool Further! (medium) 题意: 给你一棵树,每条边有一个价值,现在每个节点最多访问k次,问最大的价值是多少。 每个价值只能加一次。 题解: 考虑dp[i][j
        阅读全文
                
摘要:题目链接:Codeforces Round #419 (Div. 2) E. Karen and Supermarket 题意: 有n件物品,每个物品有一个价格,和一个使用优惠券的价格,不过这个优惠券有一个限制,必须要在第x个使用后才可以使用。现在有m的钱,问最多能买多少个物品。 题解: 每个优惠券
        阅读全文
                
摘要:题目链接:Codeforces Round #417 (Div. 2) B. Sagheer, the Hausmeister 题意: 有n层楼,每层有m个房间,每层的两边是楼梯。 现在有一个人站在左下角,这个人必须将这一层的灯关闭后才能去另外一层。 每移动一次需要1分钟,问关闭所有灯需要多少时间。
        阅读全文
                
摘要:题目链接:Codeforces Round #416 (Div. 2) C. Vladik and Memorable Trip 题意: 给你n个数,现在让你选一些区间出来,对于每个区间中的每一种数,全部都要出现在这个区间。 每个区间的价值为该区间不同的数的异或值,现在问你这n个数最大的价值是多少。
        阅读全文
                
摘要:题目链接:hdu 6024 Building Shops 题意: 要在n个点上建若干小卖店,每个点建造小卖店的消费为cost[i],如果这个点没有建造小卖店,那么这个点的费用为和左边最近的点的坐标差。 求总的最小费用。 题解: 首先,第一个点必须建造,然后对于第i个点: dp[i]=min(dp[i
        阅读全文
                
摘要:题目链接:hdu 4705 Y 题意: 给你一棵n个节点的树,问你不在同一条路径上的三点对的对数。 题解: n个节点任选三个点Cn3 ,然后我们可以dp出在同一条路径上的三点对,然后减一减 1 #include<cstdio> 2 #pragma comment(linker, "/STACK:16
        阅读全文
                
摘要:题目链接:hdu 4123 Bob’s Race 题意: 给你n个节点,n-1条边的树,每条边有一个边权,定义dis[i]为距离i这个点最远的距离。 现在有m个询问,每个询问给一个q,然后找一段节点标号连续的点,使得max(dis[j])-min(dis[i])<=q; 问最长的一段区间。 题解: 
        阅读全文
                
摘要:题目链接:hdu 2196 Computer 题意: 给你一棵n个节点,n-1条边的树,每条边有一个长度,求没,每个点到最远距离的点的长度。 题解: 紫书上也有讲: 求一棵树最长的边的方法:随便找个点,dfs一遍求到长度最长的点s。 然后以s点为根dfs一遍,同样找到长度最长的点t。 然后在以t点为
        阅读全文
                
摘要:题目链接:hdu 3534 Tree 题意: 给你一棵n个节点,n-1条边的树,每条边有一个长度,现在问你最长的边的长度为多少,有多少条。 题解: 其实这种题不用记录最长和次长,我们开两个数组,len[i],num[i]。 表示以i为根结点出发的最长的长度以及最长的边的条数。 然后我们只需要一个df
        阅读全文
                
摘要:题目链接:hdu 6017 Girls Love 233 题意: 给你一串含2,3的串,现在最多交换m/2次,问最多能形成多少个233 题解:bc官方题解: 大家要学会分析状态啊喂!多思考多开脑洞,分析出状态之后,就是一个DP或者记忆化搜索,自然就可以写出来啦! 首先,因为字符不是'2'就是'3',
        阅读全文
                
摘要:题目链接:C. Alyona and Spreadsheet 题意: 给你一个n*m的矩阵,现在有k个询问,每次给你一个l,r,问你在[l,r]这行中能否有一列数十非递减的顺序 题解: 用vector来保存矩阵。 对于每一行n*m dp一下最远能达到的范围,然后询问的时候就判断l,r是否在这个范围内
        阅读全文
                
摘要:题目链接:hdu 4679 Terrorist’s destroy 题意: 给一棵树,每条边上都有一个权值,去掉树上任意一条边之后,分成两个子树,两个子树的最长路与这条边上的权值相乘,的到一个乘积。问去掉那一条边可以使这个乘积最小。 题解: 首先我们先找到整棵树的直径(即最长的那条路)。 那么删边的
        阅读全文
                
摘要:题目链接:hdu 5396 Expression 题目大意: 给你一个n然后是n个数。 然后是n-1个操作符,操作符是插入在两个数字之间的。 由于你不同的运算顺序,会产生不同的结果。 比如: 1 + 1 * 2 有两种 (1+1)*2 或者 1+(1*2) 1 * 2 * 3 也是两种即使结果是一样
        阅读全文
                
摘要:题目链接:hdu 5693 D Game 题意: 首先度度熊拥有一个公差集合{D},然后它依次写下N个数字排成一行。游戏规则很简单:1. 在当前剩下的有序数组中选择X(X≥2) 个连续数字;2. 检查1选择的X个数字是否构成等差数列,且公差 d∈{D};3. 如果2满足,可以在数组中删除这X个数字;
        阅读全文
                
摘要:题目链接:hdu 5151 Sit sit sit 题意: 一共有并排N个椅子, N个学生依次去坐,同时满足3个条件就不能坐下去: 1,该椅子不在最左,不在最右。 2,该椅子左右都有人坐了。 3,左右的椅子不同颜色。求最后N个人都能坐下去,有多少不同的情况. 题解: 考虑区间dp,dp[i][j] 
        阅读全文
                
摘要:题目链接:hdu 4570 Multi-bit Trie 题意: 这题的题意要看半天,其实就是让你求∑ai*(2^bi),一个长度为n的数列,将其分成若干段(每一段的长度要<=20), 要求∑ai*(2^bi)最小,其中ai是每一段数列的第一项,bi是每一段的长度。 比如样例:1 2 4 4 5 4
        阅读全文
                
摘要:题目链接:hdu 4576 Robot 题意: 给你一个环,最开始机器人站在1的位置,现在有m条指令,每次顺时针或者逆时针的走x步,现在问你停留在l到r区间的概率。 题解: 考虑dp[i][j],表示前i个操作停留在j这个位置的概率,那么转移方程就为dp[i][j]=0.5*(dp[i-1][j-x
        阅读全文
                
摘要:题目链接:hdu 4405 Aeroplane chess 题意: 一个0到n的数轴上掷色子前进,中间有直达部分,问到终点需要掷色子的期望。 题解: 无环的期望DP,直接递推就行。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<
        阅读全文
                
摘要:题目链接:hdu 3842 Machine Works 详细题解: HDU 3842 Machine Works cdq分治 斜率优化 细节比较多,好好体会一下。 在维护斜率的时候要考虑x1与x2是否相等,这里要处理一下。 1 #include<bits/stdc++.h> 2 #define F(
        阅读全文
                
 
                    
                
 浙公网安备 33010602011771号
浙公网安备 33010602011771号