CDOJ 1131 男神的礼物 区间dp
男神的礼物
Time Limit: 3000/3000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
Lweb学长是集训队里公认的男神。有一天他要给美美的学姐姐准备礼物。
Lweb学长可是会魔法的哟。为了准备一份礼物,男神要加工n份材料。每一次只能加工相邻的材料。
当男神加工两个魔法值为a,b的材料,男神都要消耗a*b的体力,同时在这个地方合成出魔法值(a+b)%100的材料。
男神为了能节省体力来完成他的礼物。想找聪明的你帮他算一算他所要花费的最小体力。
Input
第一行一个整数T,表示男神所要准备的礼物数。 之后的T组数据各有两行数据,第一行有一个整数n,表示这份礼物的材料数(1<=n<=100)。 接下来一行有n个整数a(0<=a<100),表示这件礼物第i份材料的魔法值。
Output
每组数据一行输出,表示男神制作这份礼物所要的最小体力。
Sample input and output
Sample Input | Sample Output |
---|---|
2 2 18 19 3 40 60 20 |
342 2400 |
Hint
对于样例 2:
先加工材料40和60,得到0的材料,消耗40∗∗60体力,共消耗2400体力;
再加工材料0和20,得到20的材料,消耗0∗∗20体力,共消耗2400体力.
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <map>
#include <vector>
#include <queue>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define MM(a,b) memset(a,b,sizeof(a));
#define inf 0x7f7f7f7f
#define FOR(i,n) for(int i=1;i<=n;i++)
#define CT continue;
#define PF printf
#define SC scanf
const int mod=1000000007;
const int N=1e3+10;int dp[105][105],sum[105];
int main()
{int cas,n,x;scanf("%d",&cas);while(cas--){MM(dp,inf);MM(sum,0);scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&x);dp[i][i]=0;sum[i]=sum[i-1]+x;}for(int r=2;r<=n;r++)for(int l=r-1;l>=1;l--)for(int k=l;k<=r-1;k++){int ener=((sum[k]-sum[l-1])%100)*((sum[r]-sum[k])%100);dp[l][r]=min(dp[l][r],dp[l][k]+dp[k+1][r]+ener);}printf("%d\n",dp[1][n]);}return 0;
}
分析:设dp[l][r]为合并区间[l,r]范围材料的体力消耗,先固定l,r然后枚举中间值k(k代表将[l,k]和
[k+1,r]范围内的材料合并,当然前提是两边的数合并的结果已经算出来了),
dp[l][r]=min(dp[l][k]+dp[k+1][r]+消耗); 复杂度n^3;
转载于:https://www.cnblogs.com/smilesundream/p/5757566.html
CDOJ 1131 男神的礼物 区间dp相关推荐
- cdoj 1131 男神的礼物 区间dp
男神的礼物 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1131 Descr ...
- [动态规划] uestc oj A - 男神的礼物
A - 男神的礼物 Time Limit: 3000/3000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Lweb学长 ...
- CDOJ 1321柱爷的恋爱 (区间dp)
柱爷的恋爱 Time Limit: 1000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit St ...
- 9.动态规划:区间DP问题(合并石头问题)【灵神基础精讲】
0x3f:https://www.bilibili.com/video/BV1Gs4y1E7EU/ chenf99:由易到难,一步步说明思路和细节:https://leetcode.cn/proble ...
- 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]
传送门 题目2 : 回文字符序列 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串ab ...
- 【BZOJ 4565】 [Haoi2016]字符合并 区间dp+状压
考试的时候由于总是搞这道题导致爆零~~~~~(神™倒序难度.....) 考试的时候想着想着想用状压,但是觉得不行又想用区间dp,然而正解是状压着搞区间,这充分说明了一件事,状压不是只是一种dp而是一种 ...
- 女神节礼品:大学男神创作“专属情诗app”
"一般秀恩爱虐不到我,可这种秀恩爱简直虐死单身狗啊!" 3月7号女神节,一般的男生会送鲜花,开窍的男生会送口红,但是,这位深圳的男神却撩出了新花样. 一大学男神为相恋四年的女友想出 ...
- nyoj 304 节能 【区间dp】
点击打开链接 节能 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 Dr.Kong设计的机器人卡多越来越聪明.最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关 ...
- 东莞市选 格斗俱乐部(区间dp)
[问题描述] 格斗俱乐部是格斗爱好者的一个组织,在这里,格斗者们能通过与别的成员进行格斗来释放自己的压力与轻松自己的情绪.最近俱乐部举行了一场比赛,该比赛有N位选手参加,他们将围成一个圆圈,每一场比赛 ...
- 【区间DP+高精】codevs1166 矩阵取数游戏题解
转自: [ametake版权所有]http://blog.csdn.net/ametake欢迎来看 http://blog.csdn.net/ametake/article/details/47664 ...
最新文章
- 正则表达式简明使用手册
- CRM_OPPORT_H_READ_OW used not so often
- LeetCode 82 删除排序链表中的重复元素||-中等
- oracle 存储过程设置回滚点,(转)oracle 存储过程事宜使用断点回滚 -savepoint
- linux 目录sbit,linux中SUID,SGID与SBIT的奇妙用途详解
- Veeam黑科技之Direct NFS Access
- Spring启动NoClassDefFoundError中EmbeddedValueResolver错误
- 服务器mysql占用_mysql占用服务器cpu过高的原因以及解决办法
- 16位CRC校验算法
- Matlab安装 解决error114
- 关于js如何获取鼠标划过文本的内容与下标
- 北京挪动推出神州行5元卡套餐
- QuickTime格式解析
- 摸索着的坚持!!!!2015年9月29日13:14
- Dism 错误 32
- 2021-07-18 游戏仓、力反馈
- Unity3D关于ComputeShader
- ssrs订阅_SSRS订阅失败警报
- IAR无法调试问题解决
- ddz指标最佳数值_大单分差指标ddz如何解析资金流向与筹码分布
热门文章
- oauth2+JWT实现oauth2服务
- PyTorch: Conv2d and ConvTranspose2d
- C1驾照到期更换,驾照异地入迁,摩托驾驶证报名,记录
- ThunderSoft Video to GIF Converter(电脑视频转gif软件)官方正式版V3.3.0 | 轻松将视频转换成GIF图片
- ie ajax十分卡,解决jquery .ajax 在IE下卡死问题的解决方法
- 视频教程-ASP.NET就业实例视频教程(1)基础入门——搭建网站开发环境教学视频-.NET
- 怎么批量查询银行卡号发卡行等信息?
- 一些很有意思的文章_拔剑-浆糊的传说_新浪博客
- 【C/C++】银行排队系统
- matlab 线透明度,matlab 曲线填充 透明度