【JZOJ5263】分手是祝愿
2024-08-31 09:11:57
Description
请注意本题的数据范围。
Input
Output
Sample Input
2
2
15 19
3
30 40 20
Sample Output
285
2600
Hint
数据范围:
30% n<=9
100% n,a<=100, T<=5
Source
动态规划 /DFS /分治
题解:
区间DP裸题,注意a可以等于100.
代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#define MAXN 1000
#define ll long long
#define mod 100
using namespace std;
ll a[MAXN],b[MAXN][MAXN],dp[MAXN][MAXN],num[MAXN][MAXN];
int n; ll getit(int x,int y){
ll ans=;
if(x>y) swap(x,y);
if(y-x==) return a[x];
for(int i=x;i<=y;i++) ans=ans+a[i],ans%=mod;
return ans;
} void pre(){
memset(num,,sizeof(num));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
num[i][j]=num[j][i]=getit(i,j);
}
} ll DP(int l,int r){
if(r-l+==) return ;
if(l>r) return 1ll<<;
if(b[l][r]) return dp[l][r];
b[l][r]=;
for(int k=l;k<=r;k++){
ll ret=1ll<<;
ret=DP(l,k)+DP(k+,r)+num[l][k]*num[k+][r];
dp[l][r]=min(dp[l][r],ret);
}
return dp[l][r];
} void work(){
cin>>n;
for(int i=;i<=n;i++) scanf("%lld",&a[i]);
pre();
memset(dp,,sizeof(dp));
memset(b,,sizeof(b));
printf("%lld\n",DP(,n));
} int main()
{
int t;cin>>t;
while(t--){
work();
}
return ;
}
最新文章
- .NET Core Analysis
- C#面向对象编程进阶(一) ——实现栈
- iOS - UIButton
- mysql group by 用法解析(详细)
- n行m列的网格中含有的矩形数
- Java设计模式学习笔记,二:工厂模式
- Java常用API
- eclipes快捷键
- 关于HTTP GET &; POST的区别(转)
- C++ 传参时传内置类型时用传值(pass by value)方式效率较高
- tomcat多实例
- CentOS6文件系统思维导图
- PHP调用WCF提供的方法
- 6.824 Lab 5: Caching Extents
- 2018.09.15 秘密的牛奶管道SECRET(次小生成树)
- C#数据库连接方法
- js jq封装ajax方法
- Python之反射练习
- python教程(三)&#183;自定义函数
- cobbler-web 网络安装服务器套件 Cobbler(补鞋匠)
热门文章
- 通过脚本实现将服务器的Log实时传送到Telegram群组
- 049 模块6-wordcloud库的使用
- 【最新】破解微信小程序,获取微信小程序源码,破解微信wxapkg,仅需5秒
- Python中使用moviepy进行视频分割
- 14 (OC)* UIView和UILayer
- Android远程服务AIDL开发过程中容易遇见的两个问题
- [Spark] 06 - What is Spark Streaming
- C++基础之动态内存
- 线控性能比拼,MKZ与CRV作为自动驾驶开发平台的全面测评
- LoadRunner11.安装破解