1073. Pearls
之前用的是貪心來做,對于這組數據就出錯了
10,10
5,15
10,23
看了一下別人的想法,用的是動態規劃
傳送門http://soj.me/1073
具體的題解移步這里http://wenku.baidu.com/view/27cbabdb50e2524de5187ed3.html
證明連續性是為了保證動態規劃方程的成立,如果連續性成立那么就是說明了子問題對于父問題沒有影響。
連續性的具體解釋如下
假設存在i,i+1,i+2三種珍珠,如果想要用高等級的珍珠代替低等級的珍珠,要么用i+2的代替i+1和i的,要么就只用i+1的代替i的,
不可以僅僅用i+2的代替i的,如果這樣就不能保證最優解。
?
?1?#include?<iostream>
?2?using?namespace?std;
?3?int?ans[1010];
?4?int?num[1010];
?5?int?cl[1010];
?6?int?main()
?7?{
?8?????????int?t;
?9?????????cin>>t;
10?????????while(t--)
11?????????{
12?????????????????int?n;
13?????????????????cin>>n;
14?????????????????for(int?i=1;i<=n;i++)
15?????????????????????????cin>>num[i]>>cl[i];
16?????????????????ans[0]=0;
17?????????????????for(int?i=1;i<=n;i++)
18?????????????????{
19?????????????????????????int?min=99999999;
20?????????????????????????for(int?j=0;j<i;j++)
21?????????????????????????{
22?????????????????????????????????int?sum=0;
23?????????????????????????????????for(int?k=j+1;k<=i;k++)
24?????????????????????????????????????????sum+=num[k];
25?????????????????????????????????if(ans[j]+(sum+10)*cl[i]<min)
26?????????????????????????????????{
27?????????????????????????????????????????????????min=ans[j]+(sum+10)*cl[i];
28?????????????????????????????????}
29?????????????????????????}
30?????????????????????????ans[i]=min;
31?????????????????}
32?????????????????cout<<ans[n]<<endl;
33?????????}
34?}
?
轉載于:https://www.cnblogs.com/congzc/archive/2011/05/02/2329976.html
總結
以上是生活随笔為你收集整理的1073. Pearls的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cisco engine memory
- 下一篇: rman备份rman-00554 ,rm