sicily 1073. Pearls
2011-07-21 01:43
183 查看
#include <iostream> //DP #include <numeric> using namespace std; #define ed 105 int ai[ed],pi[ed],dp[ed]; int main() { int t,c; cin>>t; while(t--) { cin>>c; for(int i=1;i<=c;++i) cin>>ai[i]>>pi[i]; fill(dp,dp+ed,100000000); //初始化为极大值 dp[0]=0; for(int i=1;i<=c;++i) //dp[i]表示前i种Pearls的最小费用,dp[c]即为最优解 for(int j=1;j<=i;++j) dp[i]=min(dp[i],accumulate(&ai[j],&ai[i+1],10)*pi[i]+dp[j-1]); //accumulate(&ai[j],&ai[i+1],10)返回的是ai[j]+...+ai[i]+10,表示第j...i-1种珍珠都用第i种珍珠代替 cout<<dp[c]<<endl; } return 0; } //较低等级的珍珠如果要合并到较高等级的珍珠,应该是全部被合并这一等级上,而不能被拆成几部分再合并到不同等级上 //用较高等级的珍珠代替较低等级的珍珠必须是连续代替,比如价格200的等级要替代价格100的等级, //那么不能跳跃中间的等级,所以应是100及以上的等级(100<p<200)都要被价格200的等级所替代
相关文章推荐
- Sicily 1073. Pearls[动规]
- Sicily1282(KMP算法)
- Sicily 1135 飞越原野
- Sicily1154(快排)
- sicily 1016. 排队接水--课程作业
- Sicily1345(能量项链DP)
- Sicily课程作业 1934. 移动小球
- sicily 1940.Ordering Tasks
- sicily 1093. Air Express
- sicily 1048. Inverso
- sicily 后缀表达式计算
- 1482. 奖学金 寒假第一天 自己写出来的第一道sicily题
- Sicily 1685
- Sicily 1194 Message Flood
- Sicily 6768. Log Books 解题报告
- sicily 1020. Big Interger 有数学公式
- Sicily 1424. 奖金 解题报告
- Sicily 1090. Highways 解题报告
- Sicily 1151. 魔板 解题报告
- Sicily 1198. Substring