POJ 1651 Multiplication Puzzle(類似矩陣連乘 區間dp)

傳送門:http://poj.org/problem?id=1651

?

Multiplication Puzzle
Time Limit: 1000MS?Memory Limit: 65536K
Total Submissions: 13109?Accepted: 8034

Description

The multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one card out of the row and scores the number of points equal to the product of the number on the card taken and the numbers on the cards on the left and on the right of it. It is not allowed to take out the first and the last card in the row. After the final move, only two cards are left in the row.

The goal is to take cards in such order as to minimize the total number of scored points.

For example, if cards in the row contain numbers 10 1 50 20 5, player might take a card with 1, then 20 and 50, scoring
10*1*50 + 50*20*5 + 10*50*5 = 500+5000+2500 = 8000

If he would take the cards in the opposite order, i.e. 50, then 20, then 1, the score would be
1*50*20 + 1*20*5 + 10*1*5 = 1000+100+50 = 1150.

Input

The first line of the input contains the number of cards N (3 <= N <= 100). The second line contains N integers in the range from 1 to 100, separated by spaces.

Output

Output must contain a single integer - the minimal score.

Sample Input

6
10 1 50 50 20 5

Sample Output

3650

Source

Northeastern Europe 2001, Far-Eastern Subregion
題目意思:
給你一串數字,頭尾不能動,每次取出一個數字,這個數字貢獻=該數字與左右相鄰數字的乘積,求一個最小值。
分析:
是一個區間dp問題,類似矩陣連乘的做法,也是需要在一個區間中選擇一個k值從而來達到你的某種要求,這里是要使得消去的值最小
概況一下題意就是:
初使ans=0,每次消去一個值,位置在pos(pos!=1 && pos !=n)
同時ans+=a[pos-1]*a[pos]*a[pos+1],一直消元素直到最后剩余2個,求方案最小的ans是多少?
#include <iostream>
#include<algorithm>
#include <cstdio>
#include<cstring>
using namespace std;
#define max_v 105
#define INF 9999999
int a[max_v];
int dp[max_v][max_v];
int main()
{int n;while(~scanf("%d",&n)){for(int i=1;i<=n;i++){scanf("%d",&a[i]);}memset(dp,0,sizeof(dp));for(int r=2;r<n;r++){for(int i=2;i<=n-r+1;i++){int j=i+r-1;int t=INF;for(int k=i;k<=j-1;k++){t=min(t,dp[i][k]+dp[k+1][j]+a[i-1]*a[k]*a[j]);}dp[i][j]=t;}}printf("%d\n",dp[2][n]);}return 0;
}

?

轉載于:https://www.cnblogs.com/yinbiao/p/9415933.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451771.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451771.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451771.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

25--最后一個單詞的長度

文章目錄1.問題描述2.代碼詳情1.問題描述 給定一個僅包含大小寫字母和空格 ’ ’ 的字符串 s&#xff0c;返回其最后一個單詞的長度。如果字符串從左向右滾動顯示&#xff0c;那么最后一個單詞就是最后出現的單詞。 如果不存在最后一個單詞&#xff0c;請返回 0 。 說明&…

MySQL 企業監控器 2.3.10 正式版發布

Oracle于近日發布了 MySQL 企業監控器 2.3.10 正式版。 MySQL企業監控器主要用于實施對數據庫進行監控和管理。通過它&#xff0c;數據庫管理員不但可以獲得高級的數據復制和數據庫監控功能&#xff0c;同時還可以簡化安裝流程。而且&#xff0c;無論是對于MySQL企業版&#xf…

Docker 跨主機網絡方案分析

PS&#xff1a;文章首發公眾號&#xff0c;歡迎大家關注我的公眾號&#xff1a;aCloudDeveloper&#xff0c;專注技術分享&#xff0c;努力打造干貨分享平臺&#xff0c;二維碼在文末可以掃&#xff0c;謝謝大家。 上篇文章介紹了容器網絡的單主機網絡&#xff0c;本文將進一步…

java中為什么使用上轉型和下轉型

為什么使用上轉型&#xff1f;因為當一個父類有很多子類&#xff0c;子類都重寫了父類的方法并加以使用。這時候&#xff0c;如果要在之前代碼讓你用其他子類來實現&#xff0c;就變得很簡單&#xff0c;只需要把A a new B();換成A a new C();&#xff08;假設B和C都繼承了A&…

session和cache的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 以前實現數據的緩存有很多種方法&#xff0c;有客戶端的Cookie&#xff0c;有服務器端的Session和Application。 其中Cookie是保存在客…

第四個

。 轉載于:https://www.cnblogs.com/wxy2000/p/9657823.html

26-- 轉換成小寫字母

文章目錄1.問題描述2.代碼詳情1.問題描述 實現函數 ToLowerCase()&#xff0c;該函數接收一個字符串參數 str&#xff0c;并將該字符串中的大寫字母轉換成小寫字母&#xff0c;之后返回新的字符串。 示例 1&#xff1a; 輸入: “Hello” 輸出: “hello” 示例 2&#xff1a;…

java守護線程和用戶線程的區別

Java中的線程可以分為兩類&#xff0c;即用戶線程和守護線程。用戶線程是為了完成任務&#xff0c;而守護線程主要是為其他線程服務。 守護線程的唯一用途是為其他線程提供服務。守護線程會隨時中斷&#xff0c;因此不要在守護線程上使用需要釋放資源的資源&#xff0c;如輸入輸…

初學duboo+zookeeper

看了很多相關資料&#xff0c;其實都沒有自己動手試一次印象更深刻一些。找了很多教程&#xff0c;下工具&#xff0c;花了幾個小時終于讓程序跑起來了&#xff0c;下面說下步驟&#xff1a;1.java環境也就安裝jdk&#xff0c;我使用的是1.7版本&#xff0c;jdk安裝就不在這復述…

Fedora 17 Beta 版發布

Fedora團隊今天發布了Fedora 17 Beta版本&#xff0c;這是正式版本發布前的最后一個重要的里程碑版本。據該團隊介紹&#xff0c;正式版將在今年5月發布&#xff0c;將主要修復Beta版中發現的關鍵性bug。針對普通用戶的桌面改進&#xff1a; 采用GNOME 3.4&#xff0c;提升了用…

27--字符串相加

文章目錄1.問題描述2.代碼詳情1.問題描述 給定兩個字符串形式的非負整數 num1 和num2 &#xff0c;計算它們的和。 注意&#xff1a; num1 和num2 的長度都小于 5100. num1 和num2 都只包含數字 0-9. num1 和num2 都不包含任何前導零。 你不能使用任何內建 BigInteger 庫&…

[轉] 一文弄懂神經網絡中的反向傳播法——BackPropagation

在看CNN和RNN的相關算法TF實現&#xff0c;總感覺有些細枝末節理解不到位&#xff0c;浮在表面。那么就一點點扣細節吧。 這個作者講方向傳播也是沒誰了&#xff0c;666&#xff5e; 原文地址&#xff1a;https://www.cnblogs.com/charlotte77/p/5629865.html 最近在看深度學習…

java線程組

線程組 線程組是Java線程編程所持有的概念。在Java中&#xff0c;線程組是指java.lang.ThreadGroup類的對象&#xff0c;每個線程都隸屬于唯一的一個線程組&#xff0c;這個線程組在線程創建時指定并在線程的整個生命周期內都不能更改。可以通過調用包含ThreadGroup類型參數的T…

FreeBSD 8.3 發布

近日&#xff0c;FreeBSD開發團隊放出了8.x穩定分支的8.3版本。此次發行的版本將支持amd64、i386、pc98和 sparc64等處理器類型。FreeBSD是一種類UNIX操作系統&#xff0c;但不是真正意義上的 UNIX 操作系統&#xff0c;它是由經過 BSD、386BSD 和 4.4BSD 發展而來的 Unix 的一…

Java中四種訪問權限總結

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、Java中有四種訪問權限&#xff0c; 其中三種有訪問權限修飾符&#xff0c;分別為private、public、protected&#xff0c;還有一種不…

28--僅僅反轉字母

文章目錄1.問題描述2.代碼詳情1.問題描述 給定一個字符串 S&#xff0c;返回 “反轉后的” 字符串&#xff0c;其中不是字母的字符都保留在原地&#xff0c;而所有字母的位置發生反轉。 示例 1&#xff1a; 輸入&#xff1a;“ab-cd” 輸出&#xff1a;“dc-ba” 示例 2&…

Moving Average

移動平均算法Demo #!/usr/bin/python2.7 # Fetch data from BD and analyse.import json import urllib import traceback import numpy as np # import pandas as pd import matplotlib.pyplot as plt #from scipy import statsdef fetch_raw_data(url):try:response urllib.…

【前端工程師手冊】JavaScript作用域拾遺

【前端工程師手冊】JavaScript作用域拾遺 昨天總結了一些作用域的知識【前端工程師手冊】JavaScript之作用域&#xff0c;但是發表完發現忘記了一些東西&#xff0c;今天拾個遺。 昨天說到了JavaScript中沒有塊級作用域&#xff0c;其實在es6中是有的。 es6中的塊級作用域 先舉…

游戲開發中的數據表示

聲明&#xff1a;本文內容源自騰訊游戲學院程序公開課_服務端 一、數據表示的基礎 什么是數據表示&#xff1f; 數據是信息的載體。 數據表示是一組操作&#xff0c;可以描述、顯示、操作信息。 數據表示的要素 IDL - 接口描述語言 IDL是用來描述軟件組件接口的一種計算機語言。…

29--反轉字符串

文章目錄1.問題描述2.代碼詳情1.問題描述 編寫一個函數&#xff0c;其作用是將輸入的字符串反轉過來。輸入字符串以字符數組 char[] 的形式給出。 不要給另外的數組分配額外的空間&#xff0c;你必須原地修改輸入數組、使用 O(1) 的額外空間解決這一問題。 你可以假設數組中…