摘要:
题目链接: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 2855 Fibonacci Check-up 题意&题解: 1 #include<bits/stdc++.h> 2 #define mst(a,b) memset(a,b,sizeof(a)) 3 #define F(i,a,b) for(int i=a;i<=b;i++) 4 阅读全文
摘要:
题目链接:hdu 2807 The Shortest Path 题意: 如果矩阵A*B=C,那么就表示A-->B有一条单向路径,距离为1. 给一些矩阵,然后问任意两个矩阵直接的距离。 题解: 把矩阵读进来后处理一下邻接矩阵,然后Folyd一下。 1 #include<cstdio> 2 #inclu 阅读全文
摘要:
题目链接:hdu 2158 最短区间版大家来找碴 题意: 给你n个数,现在有m个询问,每个询问有q个数,让你从那n个数中选一个最小的区间,使得这个区间内包含有这q个数 题解: 双指针滚一下,具体细节看代码 1 #include<bits/stdc++.h> 2 #define F(i,a,b) fo 阅读全文
摘要:
题目链接:hdu 2157 How many ways?? 题意: 给你一个邻接矩阵,问你从a到b点,可走重复路径,恰好经过k个节点的路径数。 题解: 其实就是一个裸的矩阵快速幂,每走一次,相当于一次乘法。 1 #include<bits/stdc++.h> 2 #define mst(a,b) m 阅读全文
摘要:
题目链接:hdu 1588 Gauss Fibonacci 题意: g(i)=k*i+b; f(0)=0f(1)=1f(n)=f(n-1)+f(n-2) (n>=2) 让你求:sum(f(g(i)))for 0<=i<n 题解: 这里用到二分等比求和 1 #include<bits/stdc++.h 阅读全文