ZOJ 1563 Pearls(一个物品和他之前的组合情况)
来源:互联网 发布:idc联想数据 编辑:程序博客网 时间:2024/06/15 12:09
题目地址:点击打开链接
题意:一个公司要采购一批珠宝,但是特别蛋疼的是,每次采购n个珠宝,但是必须付(n+10)个珠宝的钱,于是公司的CEO想,可以把价格低的珠宝采购成价格高的珠宝,这样有时候会省一些钱
思路:第一次还以为是个水题呢,敲了一下结果连第一个测试案例都过不了,我原来想着一些价格低的只会按和价格相邻且比他高的买,结果第一个案例就错了,原来第1,2种物品都按物品3的价格买才最省钱,后来一想,只会是一段连续的且和他相邻的区间会按他的价格买,不然按比它价格高一点买不就行了
AC代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <cstring>#include <climits>#include <cmath>#include <cctype>typedef long long ll;using namespace std;struct pearls{ int num; int price;}a[110];int dp[110];const int zui = 100000000;int main(){ int t,n,i,j; scanf("%d",&t); while(t--) { memset(dp,0,sizeof(dp)); scanf("%d",&n); for(i=1; i<=n; i++)//从1开始赋值,因为以后要用到dp[0] { scanf("%d%d",&a[i].num,&a[i].price); } dp[1] = (a[1].num+10)*a[1].price; int sum; for(i=2; i<=n; i++) { sum = a[i].num; dp[i] = dp[i-1] + (a[i].num + 10) * a[i].price; for(j=i-1; j>=1; j--) { sum += a[j].num; dp[i] = min(dp[i],(sum+10)*a[i].price+dp[j-1]); } } printf("%d\n",dp[n]); } return 0;}
错误代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <cstring>#include <climits>#include <cmath>#include <cctype>typedef long long ll;using namespace std;struct pearls{ int num; int price;}a[110];int dp[110];int main(){ int t,n,i; scanf("%d",&t); while(t--) { memset(dp,0,sizeof(dp)); scanf("%d",&n); for(i=1; i<=n; i++)//不能从0开始赋值 { scanf("%d%d",&a[i].num,&a[i].price); } dp[1] = (a[1].num+10)*a[1].price; for(i=2; i<=n; i++) { dp[i] = min((dp[i-1]+(a[i].num+10)*a[i].price),(dp[i-2]+(a[i].num+a[i-1].num+10)*a[i].price)); } printf("%d\n",dp[n]); } return 0;}
0 0
- ZOJ 1563 Pearls(一个物品和他之前的组合情况)
- ZOJ 1563 Pearls
- ZOJ 1563 Pearls(DP)
- zoj 1563 - Pearls
- zoj 1563 Pearls 动态规划
- 求一组数的组合的和为一个值的所有情况
- soj 3531 Number Pyramids(观察组合数 + 每种物品至少选一个的完全背包)
- 0-1背包中每个物品重量和价值值都很小的情况
- !important和(空格)/**/:的组合技巧及其他
- !important和(空格)/**/:的组合技巧及其他
- !important和(空格)/**/:的组合技巧及其他
- CSS技巧:!important和空格的组合技巧及其他
- CSS技巧:important和空格的组合技巧及其他
- 使用php和阶乘原理 通过阶乘获取一个一维数组中全部的组合情况
- 字符串的排列和组合(不考虑字符重复的情况)
- list中的组合所有情况(无需排列,只是组合所有的情况)
- 因此你需要在考虑所有的情况以后给他提供一个最好的方案
- 物品集中采购系统的设计和实现(开篇)
- 深入浅出Android Support Annotation(什么是android.support.annotation.NonNull的拓展)【转】
- Hibernate 面试总结
- Android快速SDK(10)地址库Location【傻瓜模式】
- sicily 10625 TRENER
- ubuntu下把微信的amr音频格式转换为 mp3格式
- ZOJ 1563 Pearls(一个物品和他之前的组合情况)
- git删除文件所有历史版本
- 工欲善其事,必先利其器--phper的sublime text3
- ERP见面会
- 静态Static(C#)
- leetcode 48:Rotate Image
- [2033 ] :人见人爱A+B
- JUnit4入门
- LeetCode Add Two Numbers(用链表模拟加法)