摘要: P2834 纸币问题 3 定义dp[i][j]为前i种纸币凑出j的金额数 考虑dp[i][j] 1.用了第i种面额 dp[i][j]=dp[i-1][j]+dp[i][j-a[i]];//仅需在没用第i种面额(dp[i-1][j])的基础上加上用了第i种面额达到金额j-a[i]的方案数 2.没使用第 阅读全文
posted @ 2026-05-05 14:17 AAA_jiancaipifa 阅读(1) 评论(0) 推荐(0)
摘要: P2840 纸币问题 2 这题与纸币问题1类似:https://www.cnblogs.com/AAAjiancaipifa/p/19974032 但是dp数组表示的含义改变了 定义dp[i]表示凑出i元的给钱方式数 于是初始条件有了: dp[0]=1 //凑出0元只有一种方式,就是什么也不给 考虑 阅读全文
posted @ 2026-05-05 10:27 AAA_jiancaipifa 阅读(3) 评论(0) 推荐(0)
摘要: P2842 纸币问题 1 此题为背包问题的实际应用 定义dp[i]表示凑出i元花费的最少张数 首先我们要枚举每个纸币的面额 for(int i=1;i<=n;i++) //a[i] 然后可以进行一些基础的排除: 显然如果我们给出的金额(w)比枚举到的面额还要小 那就无法有该面额恰好凑出这个金额 于是 阅读全文
posted @ 2026-05-05 09:46 AAA_jiancaipifa 阅读(2) 评论(0) 推荐(0)
摘要: P1216 [IOI 1994 / USACO1.5] 数字三角形 Number Triangles 此题为基础的dp题 定义dp[i][j]表示金字塔顶到(i,j)得到的最大和 考虑dp[i][j] 1.从左边(i-1,j-1)->(i,j) dp[i][j]=a[i][j]+dp[i-1][j- 阅读全文
posted @ 2026-05-04 16:46 AAA_jiancaipifa 阅读(3) 评论(0) 推荐(0)
摘要: P2866 [USACO06NOV] Bad Hair Day S 可以分析出:只要找到每一个数的右边第一个大于此数的位置即可 而“每头奶牛能看到多少头牛” <->“每头牛能被多少牛看到” 于是 我们维护一个一维的栈 stack<int> s; 每次读入一头奶牛的身高(x) 比这头牛矮的全部出栈 w 阅读全文
posted @ 2026-05-04 16:21 AAA_jiancaipifa 阅读(2) 评论(0) 推荐(0)