动态规划
静默加载
优秀的判断力来自于经验,但经验来自于错误的判断。在看着别人走过的路时,思考怎么走自己的路。无私奉献不是天方夜谈,有时候,我们也可以做到。
展开
-
Myers‘Diff之线性空间细化
Myers’diff前言在学习完上一篇文章Myers’Diff之贪婪算法 之后,我对Android源码中的DiffUtil类进行了阅读发现其算法的实现和文章中的方式并不尽相同,而是在其基础之上再次进行的优化。所以本篇文章是以上一篇Myers’Diff之贪婪算法 文章内容基础之上对它的变体进行再次研究的过程。上一篇文章Myers’Diff之贪婪算法 讲述diff怎么从一个抽象的问题转化为数学问题,并对一些名词做了专有的定义(为解决问题的过程提供辅助),Myers'Diff之贪婪算法讲述了利用辅助的k线进原创 2020-10-12 10:46:22 · 1377 阅读 · 1 评论 -
Myers‘Diff之贪婪算法
Myers’ Diff前言写这篇文章已经拖了很久了,因为一直在看它后续的 Myers’ Diff 的变体 。最初不知道是什么时候发现 DiffUtil 对比列表 item 数据进行局部刷新,git 文件对比都用到了这个算法。上个月刚好再一次看到了就想深入了解一下。但发现发现国内的博客和帖子,对这个算法的讲述内容比较少,每篇文章都讲述了作者自己认为重要的内容,所以有一个点搞不懂的话没法整体性的进行理解。刚开始我自己就有一个点没想清楚想了好几天,我觉得程序员不能怕算法,书读百遍其义自现,阅读算法代码也是如此原创 2020-10-10 14:06:13 · 2576 阅读 · 2 评论 -
HDOJ 2571 命运
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2571 题目为DP中的水题,有前面向往后递推……#include#includeusing namespace std;const int INF=-100000000;int n,m;int a[22][1002];inline int max(int a,int b){原创 2015-12-18 18:14:37 · 531 阅读 · 0 评论 -
HODJ 1087 Super J…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087题目可以简化为求一组数字的最大上升序列的和我们一次遍历整个序列,每一次求出第一个数到当前这个数的最大上升序列的和,直至遍历到最后一个数字为止,然后再取dp数组当中的最大值即可……在此推荐一个写LIS(longest increasingsubsequence)博客本人感觉写的非常好h原创 2015-12-18 18:14:34 · 513 阅读 · 0 评论 -
HDOJ 1505 City Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505 题意:给定一个地图,找出一个矩形可以覆盖的最大面积开两个数组r[](right),l[](left),分别记录左边和右边能构成矩形的最远的边用a[i][j]表示 在i高度j位置上的最大高度#include#define N 1002int a[N][N];int l[N],原创 2015-12-18 18:14:32 · 582 阅读 · 0 评论 -
HDOJ 1506 Largest&nbsp…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506题意:给定一个条形统计图,找出一个矩形可以覆盖的最大面积开两个数组r[](right),l[](left),分别记录左边和右边能构成矩形的最远的边#include#definemaxint 200000__int64a[maxint];__int64l[maxint];__i原创 2015-12-18 18:14:29 · 508 阅读 · 0 评论 -
HDOJ 4310 Hero
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4310题目解读:可以算出每一位敌人的单位血的伤害量,进行排序,先干掉最大的,,,,#include #include struct hero{ intDPS,HP; doublelife;}aaa[25];int cmp(const void *a ,const void原创 2015-12-18 18:11:44 · 459 阅读 · 0 评论 -
HDOJ 2189 悼念512汶川大地震遇…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2189题目的大意为:有一些人要进行分组,但每一组的人数必须是素数#include#include int p[155],a[50],len;int c1[450],c2[450];voidpirm() //先将能用的到的素数都求出来{ memset(p,0,sizeof(p)原创 2015-12-18 18:11:00 · 475 阅读 · 0 评论 -
HDOJ 2152 Fruit
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2152题目大意为:要买由M个水果组成的水果拼盘,不过我有个小小的要求,对于每种水果,个数上我有限制,既不能少于某个特定值,也不能大于某个特定值而且我不要两份一样的拼盘。你随意搭配,你能组出多少种不同的方案#include #include int c1[1010],c2[1010];int原创 2015-12-18 18:10:57 · 384 阅读 · 0 评论 -
HDOJ 1709 The Balance
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1709题目大意为由这些砝码,看不能表示的最小的重量是多少则和个体问题在于天平的每个砝码都可以放在天平的两边#include#include#includeint c1[10005],c2[10005];int a[105],ans[10005];int main(){ int i,j,n原创 2015-12-18 18:10:55 · 520 阅读 · 0 评论 -
HDOJ 1398 Square Coins
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1398母函数问题,题目意思是钱币都是由N*N这种价值的钱币所组成的,输入一个价值,问有多少不同的组成这种价值的方法#include int main(){ intc1[310],c2[310]; intn,i,j,k; while(scanf("%d",&n),n)原创 2015-12-18 18:10:52 · 478 阅读 · 0 评论 -
HDOJ 1171 Big Event in HDU
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1171题目大意为有一些器材每个器材都有其特定的价值,现在将这些器材分为来两组AandB,而且A>B#include #include int c1[250050],c2[250050];int main(){ intnum[55],m[55],sum; inti,j,k,l原创 2015-12-18 18:10:50 · 543 阅读 · 0 评论 -
HDOJ 1085 Holding Bin-Laden …
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1085母函数问题,分步求解一个一个进行#include using namespace std;int c1[10000], c2[10000];int num[4];int main(){ intnNum; while(scanf("%d %d %d", &num[1],原创 2015-12-18 18:10:47 · 487 阅读 · 0 评论 -
HDOJ 2602 Bone Collector
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2602#include#include#define M 1010int T;int N;//骨头数量int V;//背包容量struct bone{ intvalue;//骨头价值 intvolume;//骨头所占背包容量}bone[M];int bag[M];in原创 2015-12-18 18:10:42 · 429 阅读 · 0 评论 -
HDOJ 2191 悼念512汶川大地震遇…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2191#include#includeusing namespace std;#define MAX 101class Point{public: int price; int height; int cnum;};Point point[MAX];int casen;int n原创 2015-12-18 18:10:40 · 401 阅读 · 0 评论 -
HDOJ 1114 Piggy-Bank
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1114 以下有三种做法,自己在网上找的。自己开始学习背包问题,感觉这几种做的方法都好, 题解:想求重量为W(k)时的最小价值V(k),给定的重量选择为weight[],对应的价值分别为value[];则若知道W(k)的前一步W(k-1)时所对应的价值,由于W(k-1)+weight[i] =原创 2015-12-18 18:10:37 · 421 阅读 · 0 评论 -
HDOJ 2566 统计硬币
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2503本来以为是母函数的题,结果母函数自己没有学好,用暴力过了#include int main(){ intsum,t,i,j,k,n,m; scanf("%d",&t); while(t--) { sum=0; scanf("%d原创 2015-12-18 18:10:34 · 443 阅读 · 0 评论 -
HDOJ 1466 计算直线的交点数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1466我们知道: n条直线互不平行且无三线共点的最多交点数max=1+2+……(n-1)=n(n-1)/2 首先,容易列举出N=1,2,3的情况: 0 0,1 0,2,3 然后,假设 先来看个统计的方法: 假设一共有n=a+b条直线 (即n条直线分成2组,分别原创 2015-12-18 18:10:19 · 524 阅读 · 0 评论 -
HDOJ 2069 Coin Change
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2069一个有着五层循环的.....#include int main(){ int n,d[251] = {0}; int c1, c5,c10, c25, c50; for (n = 0;n for (c50 = 0; c50 * 50原创 2015-12-18 18:08:21 · 514 阅读 · 0 评论