摘要: 洛谷P1968 美元汇率 一开始看错题了。。。或者说理解错题意了,额不,我自己都没手推样例,是我太浮躁了,态度不认真,改改改。。。一个裸贪心,如果昨天的马克数大于今天的,就转换一次,就是在昨天将美元换成马克,在今天将马克换成美元,你手里的美元数就会增加。 小技巧:可以将ans乘100,最后再除100 阅读全文
posted @ 2017-08-18 17:07 WeiAR 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 洛谷P1802 5倍经验日 简单的背包,因为输了也有经验,所以预处理求和,f[i]+=sum,并在此基础上01背包,c[i]为差值,注意赋值时,i从0开始,背包的声韵体积可以为0. 阅读全文
posted @ 2017-08-18 10:51 WeiAR 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 关于二分查找的边界问题 二分查找首先要满足单调性,对于这种方式,l==r,l是第一个大于差找位置的位置,举例, 在1 2 3 4 5中查找3,l==r==4,根据需要输出l或l-1. 阅读全文
posted @ 2017-08-18 10:43 WeiAR 阅读(1053) 评论(0) 推荐(0) 编辑
摘要: codevs线段覆盖5 离散化+二分查找,按右端点排序,f[i]代表1~i的满足不覆盖的最大值,对于第i条线段,要么选,要么不选,所以方程为f[i]=max(f[i-1],f[find(i)]+e[i].v);find(i)是从右往左数第一个与i不相交的线段的下标,ans为f[n]; 阅读全文
posted @ 2017-08-18 10:16 WeiAR 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 背包五讲 1. 01背包,一种物品数量只有一个,要么选要么不选,v从后向前保证了只可能选一次。 2. 完全背包,物品的数量不限,v从小到大,就免除了数量的限制。 3 多重背包,给定物品的数量,num,多加一维,i->num,循环num次,满足了数量,记得不要j*w[type],这样就相当于等差数列求 阅读全文
posted @ 2017-08-17 16:01 WeiAR 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 关于二进制 二进制是个好东西,二进制多用于位运算中,而且它的这一个特性能让O(n)优化到O(log2n),用1,10,100,1000....进行组合,能组成所有的数字,因为每个数都可以用二进制来表示,比如1010110,就可以用1000000,10000,100,10的组合表示,经典用法,倍增的R 阅读全文
posted @ 2017-08-17 11:07 WeiAR 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 对四边形不等式优化dp的理解 四边形不等式适用于优化最小代价子母树问题,即f[i][j]=max/min(f[i][k-1]+f[k][j])+w[i][j],类似枚举中间点的dp问题,典型例题石子归并; 如果w函数满足区间包含的单调性和四边形不等式,那么函数f也满足四边形不等式,如果f满足四边形不 阅读全文
posted @ 2017-08-17 10:31 WeiAR 阅读(263) 评论(0) 推荐(0) 编辑
摘要: dp看似像递推,但是有一点不一样,虽然都是先处理完子过程并由此退出最终的,但是dp满足任何过程的最优性,dp用子过程最优来保证最终结果的最优性。 阅读全文
posted @ 2017-08-16 19:42 WeiAR 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 洛谷P1018 乘积最大 当时看到这个题很懵逼,暴力不好打,也不是很有效,dp也没思路。。然后看了题解。。f[i][j]表示在序列中前i个数中加入j个乘号的最大乘积,要在序列中枚举从j-1到i的第j个乘号所在的位置,这里要前缀和优化,答案就是f[n][k]。 阅读全文
posted @ 2017-08-16 19:38 WeiAR 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 今天做dp时,第一遍好像是这么回事,打了程序之后也A了,但不一定真的明白,比如它是最优解,那它比其他方法好在哪里,或者它是如何满足题目的条件的,一定不可似懂非懂,要彻底弄会,然后多练习,加强理解。 阅读全文
posted @ 2017-08-16 18:46 WeiAR 阅读(200) 评论(0) 推荐(0) 编辑