Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9419 Accepted: 5850 Description The multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one card…
LINK 每次删除一个数,代价是左右两边相邻的数的当前数的积 第一个和最后一个数不能删除 问最后只剩下第一个数的最后一个数的最小代价 思路 很简单的DP 正着考虑没有办法确定两边的数 那么就把每个区间内最后一次删除的数枚举出来,就可以确定左右两边的点是什么了 感觉挺对的 \(dp_{i,j}\)表示还有区间\([i,j]\)全部删完的最小代价,枚举一下最后删除的数然后直接统计贡献就可以了 #include<iostream> #include<cstdio> #include<…
这道题的妙处在于把原问题看成矩阵连乘问题,求这些矩阵相乘的最小乘法次数,比如一个i*k矩阵乘一个k*j的矩阵,他们的乘法次数就是i*k*j (联想矩阵乘法的三层循环),题目说的取走一张牌,类似于矩阵相乘除去k,所以根据这个条件分析可以联想到矩阵. 题目要求首尾两端不可取,也就是求到最后只剩下一个矩阵(一共n-1个). 用一个p数组就可以记录每个矩阵的行和列,比如:p[i],p[i+1],p[i+2]就可以表示一个i*(i+1)的矩阵和一个(i+1)*(i+2)的矩阵. 1 #include<cs…
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…
Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10010   Accepted: 6188 Description The multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one…
题意:n个数字的串,每取出一个数字的代价为该数字和左右的乘积(1.n不能取),问最小代价 思路:dp[i][j]表示把i~j取到只剩 i.j 的最小代价. 代码: #include<set> #include<map> #include<cmath> #include<queue> #include<cstdio> #include<cstring> #include<algorithm> typedef long lon…
http://poj.org/problem?id=1651 题意:给出n个数字,每取中间一个数,就会使得权值加上中间这个数和两边的乘积,求取剩两个数最少的权值是多少. 思路:区间dp. 一开始想了挺久还是写不出方程,做了点别的事回来再想就突然觉得很简单了. 一开始使得长度为1和2的区间dp[i][j]为0. 然后dp[i][j] = min(dp[i][k] + dp[k][j] + w[k] * w[i] * w[j]). 枚举的k为中间拿掉的数,然后和左右的区间和相加就是最后答案了. #i…
题意: 给出一个序列,共n个正整数,要求将区间[2,n-1]全部删去,只剩下a[1]和a[n],也就是一共需要删除n-2个数字,但是每次只能删除一个数字,且会获得该数字与其旁边两个数字的积的分数,问最少可以获得多少分数? 思路: 类似于矩阵连乘的问题,用区间DP来做. 假设已知区间[i,k-1]和[k+1,j]各自完成删除所获得的最少分数,那么a[k]是区间a[i,j]内唯一剩下的一个数,那么删除该数字就会获得a[k]*a[i-1]*a[i+1]的分数了.在枚举k的时候要保证[i,j]的任一子区…
题目链接:http://poj.org/problem? id=1651 题意:初使ans=0,每次消去一个值,位置在pos(pos!=1 && pos !=n) 同一时候ans+=a[pos-1]*a[pos]*a[pos+1].一直消元素直到最后剩余2个,求方案最小的ans是多少? 代码: #include <stdio.h> #include <ctime> #include <math.h> #include <limits.h> #…
题目链接:https://vjudge.net/problem/POJ-1651 Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11239   Accepted: 6980 Description The multiplication puzzle is played with a row of cards, each containing a single positive…