笔记
欧尼酱的咪咪
这个作者很懒,什么都没留下…
展开
-
acm第十二周学习总结
学习总结这周学习了递归和搜索,先从递归引入,程序直接或间接调用自身的编程技巧称为递归算法,直接或间接调用自身的函数称为递归函数。原创 2021-05-22 23:47:49 · 150 阅读 · 0 评论 -
acm第十一周学习总结
学习总结这周学习了分组的背包问题和二分法;分组的背包问题就是把n件物品分成若干组,对每组物品至多取一件物品放进背包,在不超过背包容量的情况下,可以存放的最大价值;状态转移方程:f[k][v]=max{f[k-1][v],f[k-1][v-c[i]]+w[i]}注:其中for v的逆排序必须放在for i属于组k之外保证每个组只能有一个被添加到背包;题目描述:有 N 组物品和一个容量是 C 的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的重量是 w[i][j],价值是 v[i原创 2021-05-15 22:08:47 · 177 阅读 · 0 评论 -
第十周acm学习总结
二进制优化:将第i种物品拆分成若干件物品,每个物品有一个系数,1, 2, 4, 8… 2k-1, n-2k+1,假设有一种大米只有M袋 例如M为100 利用二进制来分解 for(int j=1;j<=a[i].num;j<<=1){ //左移一位等价于乘以 2 weigh[coun]=j*a[i].weight; size[coun++]=j*a[i].value;原创 2021-05-08 21:34:31 · 164 阅读 · 0 评论 -
acm第八周学习总结
背包问题01背包问题:01背包:有n件物品和一个容量为v的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路:由于每件物品只有一件,所以我们只要考虑这件物品是放还是不放,如果放的话背包容量为v-c[i],其价值也会增加放入物品的价值,若如果选择不放的话,则i-1其价值不变。状态转移方程:f[i][v]=max(f[i-1][v],f[i-1][v-c[i]]+w[i])01背包问题的优化:01背包可以由二维数组降为一维数组,状态转移方程由f[原创 2021-04-25 22:03:38 · 119 阅读 · 0 评论 -
acm第七周学习总结
学习体会:这周结束了线性dp的学习原创 2021-04-18 00:39:07 · 140 阅读 · 0 评论 -
acm第二周学习指导
双指针的应用1.双指针 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。双指针可以从不同的方向向中间逼近也可以朝着同一个方向遍历。2.使用双指针反转数组中的元素。其思想是将第一个元素与末尾进行交换,再向前移动到下一个元素,并不断地交换,直到它到达中间位置。我们可以同时使用两个指针来完成迭代:一个从第一个元素开始,另一个从最后一个元素开始。持续交换它们所指向的元素,直到这两个指针相遇。void reverse(int *v, int N){int i = 0;int j =原创 2021-03-20 17:52:30 · 153 阅读 · 0 评论