博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1934 封印
阅读量:7173 次
发布时间:2019-06-29

本文共 1585 字,大约阅读时间需要 5 分钟。

P1934 封印

题目描述

很久以前,魔界大旱,水井全部干涸,温度也越来越高。为了拯救居民,夜叉族国王龙溟希望能打破神魔之井,进入人界“窃取”水灵珠,以修复大地水脉。可是六界之间皆有封印,神魔之井的封印由蜀山控制,并施有封印。龙溟作为魔界王族,习有穿行之术,可任意穿行至任何留有空隙的位置。然而封印不留有任何空隙! 龙溟无奈之下只能强行破除封印。破除封印必然消耗一定的元气。为了寻找水灵珠,龙溟必须减少体力消耗。他可以在破除封印的同时使用越行术。

神魔之井的封印共有 n 层,每层封印都有一个坚固值。身为魔族的龙溟单独打破一层封印时需要消耗的元气为该层封印的坚固值和封印总层数 n 的平方的乘积; 但他运用越行术时,打破第 i 层到第 j 层封印(i<j)的总元气消耗为第 i, j 层封印的坚固值之和与第 i, j 层之间所有封印层(包括第 i, j 层)的坚固值之和的乘积。同时,为了不惊动蜀山,第 i, j 层封印的坚固值之和必须不大于一个固定值 t(单独打破时该层坚固值可以大于该值) 。

输入输出格式

输入格式:

 

第一行包含两个正整数 n 和 t,按序表示封印层数和题中所述的固定值。

第二行为 n 个正整数a1~an,按序表示第 1 层到第 n 层封印的坚固值。

 

输出格式:

 

仅一行,包含一个正整数,表示最小消耗元气。

 

输入输出样例

输入样例#1: 
6 108 5 7 9 3 5
输出样例#1: 
578

说明

【样例说明】

先单独打破第一层,再用越行术从第二层直接打破到最后一层。 这样消耗元

气8 × 6^2+ (5 + 5) × (5 + 7 + 9 + 3 + 5) = 578。

【数据范围】

对于 10%的数据,n ≤ 10;

对于 50%的数据,n ≤ 100;

对于 70%的数据,n ≤ 500;

对于 100%的数据,n ≤ 1000,ai(1 ≤ i ≤ n) , t ≤ 20000。

 

 

洛谷题解:

由于题目具有无后效性,所以想到用DP来解决。

我们令f[i]表示打破前i层封印消耗元气的最小值,则状态转移方程如下:

f[i]=max⁡{f[i−1]+a[i]*n^2,f[k]+(a[k+1]+a[i])*sum(k+1,i)|0<k+1<i,a[k+1]+a[i]≤k}

状态转移方程写好后,问题在于求sum(k+1,i)时如果遍历一遍需要O(n)的复杂度。这样总复杂度为k(n^3),50-70分。

这个复杂度可以用预处理前缀和的方法来优化。用S[i]表示从a[1]到a[i]的

总和,则sum(k+1,i)=S[i]-S[k]。这样总复杂度为k(n^2),可以通过所有测试点。

 

 

1 #include
2 using namespace std; 3 int n,t; 4 long long f[1003],s[1003],a[1003]; 5 int main() 6 { 7 cin>>n>>t; 8 int m=n*n; 9 for(int i=1;i<=n;i++)10 {11 cin>>a[i];12 s[i]=s[i-1]+a[i];13 }14 for(int i=1;i<=n;i++)15 {16 long long ans=m*a[i]+f[i-1];17 for(int j=1;j
t)continue;20 ans=min(ans,(a[i]+a[j])*(s[i]-s[j-1])+f[j-1]);21 }22 f[i]=ans;23 }24 cout<

 

转载地址:http://wxbzm.baihongyu.com/

你可能感兴趣的文章
开源计划--格瓦拉梦想(GUEVARA‘S DREAM)
查看>>
show full columns 和 checking privileges的说明
查看>>
电信网络拓扑图自动布局之总线
查看>>
数据库启动时报ORA-00845错误解决方法
查看>>
查询阿里云存储文件并导出excle 保存到本地
查看>>
WebService-—调用第三方提供的webService服务
查看>>
LVM报错:resize2fs: Bad magic number in super-block
查看>>
从开发到部署会用到的 Docker 命令
查看>>
access数据库转mysql数据库
查看>>
CISCO服务器配置RAID步骤
查看>>
利用makefile文件编译c++源文件
查看>>
VS 0xC0000005 运行错误分析
查看>>
相机水平视角计算公式
查看>>
关于解决mysql和jsp乱码问题的总结
查看>>
CentOS 下安装 PAC Manager 进行远程管理
查看>>
目标社交化汽车新媒体平台,优信用两亿打造“车伯乐”
查看>>
tomcat配置相关总结
查看>>
Android官方开发文档Training系列课程中文版:电池续航时间优化之检查与监测坞的状态与类型...
查看>>
Sql Server 2008 R2 定时备份任务设定
查看>>
spring中的事务属性
查看>>