- 博客(3)
- 收藏
- 关注
原创 openjudge 2.7 选择客栈
开三个数组dp1[55],dp2[55],dp3[55],dp1[i]表示咖啡馆最低消费大于p,色调为i的客栈数,dp2[i]咖啡馆最低消费小于等于p,色调为i的客栈数,dp3[i]表示该客栈前,最近出现的咖啡馆最低消费小于等于p,色调为i的客栈前与该客栈色调相同的数量(仔细思考可以发现,如果出现了一个最低消费小于等于p的咖啡馆,不管其客栈什么色调,在该客栈及其后面出现的客栈,都能与前面所有色调匹配的客栈构成一对,而dp3的任务就是记录并更新这些客栈数)。
2023-04-18 17:00:23 49 1
原创 OpenJudge 2.7 1757 神奇的口袋
前i个物品容积和为j的方法数 = 前i-1个物品容积和为j-a[i]的方法数 + 前i-1个物品容积和为j的方法数(即算上当前容积a[i]和不算当前容积)a[i]为第i个物品的容积,dp[i][j]表示为前i个物品容积和为j的方法数,dp[0][0]----dp[n][0]均初始化为1。列出方程:dp[i][j] = dp[i-1][j-a[i]] + dp[i-1][j]考虑到j-a[i]可能小于零,因此应该加入判定条件。
2023-04-14 12:54:33 109
原创 OpenJudge 1.13 花生采摘
if(k-abs(a1[i]-a1[i-1])-abs(a2[i]-a2[i-1])-a1[i]-1>=0)//同理。//如果花生数目是最多的,则仅算上它的行坐标,其它的则为行,列坐标相差的绝对值加上行坐标。//用k减去得到的值,若k不小于零,则加上花生数,否则k归零,程序完成,输出。//思路:找到有花生的植株,用数组分别标记他们的坐标,花生数目。if(a3[i]<a3[j])//大小交换,大的在前。if(k-a1[i]*2-1>=0)//若可进可出。else break;if(i==0)//刚进花生田。
2023-04-14 11:46:27 95
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人