解法 一定要注意斐波那契数列的原始意义,斐波那契数列也叫作兔子数列是兔子繁衍的一种表示方法.同样适用于别的情况的动物繁衍问题 原始的是3个月一胎现在四个月那么方程就是 f(n)=n n<=4 f(n)=f(n-1)+f(n-3) n>4 代码 #include <bits/stdc++.h> using namespace std; int dp[1000][1000],num[1000][1000]; long long ans[100]; int main() { ios::s…
解法 排序+01背包 这里的排序规则用q-p升序排列这里是一个感觉是一个贪心的策略,为什么这样做目前也无法有效的证明或者说出来 然后就是01背包加了一个体积必须大于什么值可以装那么加一个max(p,q)的条件即可 代码 #include <bits/stdc++.h> using namespace std; struct node { int p,q,w; }num[1000]; bool cmp(node a,node b) { return a.q-a.p<b.q-b.p; } i…
伪代码 用二维数组记录,如果出现可以转移的dp那么记录bk[当前体积][装的物品]=1 输出的时候倒推,如果存在连通的边那么输出并且总共的体积减去输出的体积 代码(uva-624,目前wa不明所以,网上的答案也是那么输出的,或许要输出最多的物品?目前也不会这种玩法) #include <bits/stdc++.h> using namespace std; int v[1000],dp[1000000],bk[1000][1000]; int main() { ios::sync_with_s…
解法 01背包变式,首先贪心的想一下如果要保证余额最小那么就需要用相减后最小的钱减去之前最大的价格,且得保证这个钱在5元以上 对于寻找如何减最多能包含在5元以上,这里用01背包 我们把价钱看做体积装进一个余额-5的01背包内,为什么是余额-5? 因为我们要保证总的价格在5元以上,还得保证不装最后一个,因为要减去最后一个 最后我们用原来的余额-装的最多的物品的价格-最大的物品的价格就是答案 注意还要特判本来m就小于5的情况 代码 #include <bits/stdc++.h> using na…
解法 首先是输入的问题,输入的时候还要注意每一层都有多少个 然后是怎么求解,一般求解首先要考虑顺序,是正序还是倒序 如果这个题是正序的话那么最终还需要将最后一行进行一次找max的运算 如果是倒序的话那么最终归于同一个起点,直接进行输出即可 转移方程 转移方程考虑把问题分散化,分散成小的问题,其中这个题的问题就是如果要找最大的,那么每一个数的下面两个相邻的数应该取最大的 所以就是dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+num[i][j] 如果要进行正推,那么应该…
动态规划是算法中一门很重要的思想,其通过对每一步的假设规划,不停的寻找最优最有利的解决方案,然后一步一步求解出来. 而01背包是其中最基本的一种dp思想,其题目一般为给定一个容量为V的背包,然后有n件物品,其价值为value[i],每件物品只能最多选择一次或者不选择,问如何才能得到的物品价值最大. 一般dp问题的核心就是一个 状态转移方程 .状态转移方程一出来题目基本上就木得问题了. 通常来说,状态转移方程的代码思想一般如下 ; i<n; i++) { ; j<=V; j++) { if(j&…
有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Sample Input2450Sample Output246 //本代码为只输入一组数据的答案 //方法1:找规律找出来a[i]=a[i-1]+a[i-3] (ps:我第一次就是这样做出来的) //方法2:归纳出状态转移方程 //现在解释一下为什么a[i] = a[i - 1] + a[i - 3] //假如i-1年到i年每变化,则a[i] = a[i - 1]…
母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 82067    Accepted Submission(s): 40750 Problem Description 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛?   Input 输入数据由多个…
母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 84550    Accepted Submission(s): 42057 Problem Description 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛?   Input 输入数据由多个…
1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过<计算机图形学>.为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏的逼真,如魔兽世界.极品飞车),在研究生阶段还专门选修计算机图形学,但也只是听了几堂课,知道了有帧缓存.齐次坐标等零零散散的概念,之后读了一篇论文并上台作报告(压根没读懂).总之,当时只是觉得计算机图形学或三维渲染很牛,甚至问我什么是渲染都不知道,更不知道如何将3维几何体显示到2维屏幕上.令我现在想来非常可笑…