日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cdoj 1131 男神的礼物 区间dp

發(fā)布時間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cdoj 1131 男神的礼物 区间dp 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

男神的禮物

Time Limit: 20 Sec

Memory Limit: 256 MB

題目連接

http://acm.uestc.edu.cn/#/problem/show/1131

Description

Lweb學(xué)長是集訓(xùn)隊里公認(rèn)的男神。有一天他要給美美的學(xué)姐姐準(zhǔn)備禮物。

Lweb學(xué)長可是會魔法的喲。為了準(zhǔn)備一份禮物,男神要加工n份材料。每一次只能加工相鄰的材料。

當(dāng)男神加工兩個魔法值為a,b的材料,男神都要消耗a*b的體力,同時在這個地方合成出魔法值(a+b)0的材料。

男神為了能節(jié)省體力來完成他的禮物。想找聰明的你幫他算一算他所要花費的最小體力。

Input

第一行一個整數(shù)T,表示男神所要準(zhǔn)備的禮物數(shù)。 之后的T組數(shù)據(jù)各有兩行數(shù)據(jù),第一行有一個整數(shù)n,表示這份禮物的材料數(shù)(1<=n<=100)。 接下來一行有n個整數(shù)a(0<=a<100),表示這件禮物第i份材料的魔法值。

Output

每組數(shù)據(jù)一行輸出,表示男神制作這份禮物所要的最小體力。

Sample Input

2
2
18 19
3
40 60 20

Sample Output

342
2400

HINT

對于樣例 2:

先加工材料40和60,得到0的材料,消耗40?60體力,共消耗2400體力;

再加工材料0和20,得到20的材料,消耗0?20體力,共消耗2400體力.

題意

?

?

題解:

區(qū)間dp,類似于石子合并的問題,每次每枚舉合并的點就好了

代碼:

?

//qscqesze #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 200001 #define mod 10007 #define eps 1e-9 int Num; char CH[20]; const int inf=0x7fffffff; //нчоч╢С /*inline void P(int x) {Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts(""); } */ inline ll read() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; } inline void P(int x) {Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts(""); } //************************************************************************************** ll dp[101][101]; ll a[101]; ll sum[101]; int main() {int t=read();while(t--){memset(dp,0,sizeof(dp));memset(sum,0,sizeof(sum));int n=read();for(int i=1;i<=n;i++){a[i]=read();sum[i]=a[i]+sum[i-1];}for(int r=2;r<=n;r++){for(int i=r-1;i>=1;i--){for(int j=i;j<=r;j++){ll kiss=((sum[j]-sum[i-1])%100)*((sum[r]-sum[j])%100);if(dp[i][r]==0)dp[i][r]=dp[i][j]+dp[j+1][r]+kiss;elsedp[i][r]=min(dp[i][r],dp[i][j]+dp[j+1][r]+kiss);}}}cout<<dp[1][n]<<endl;} }

?

總結(jié)

以上是生活随笔為你收集整理的cdoj 1131 男神的礼物 区间dp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。