Analysis

区间dp+压位高精

dp五分钟,高精两小时

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 110
#define INF 2147483647
using namespace std;
typedef long long ll;
ll dp[maxn][maxn][maxn],a[maxn];
ll s1[maxn],s2[maxn],s3[maxn];
int n;
inline void mark(ll c[])
{
for(int i=;i<=c[];i++)
{
c[i+]+=c[i]/;
c[i]%=;
}
while(c[c[]+])
{
c[]++;
c[c[]+]+=c[c[]]/;
c[c[]]%=;
}
}
inline void mul(ll a1,ll a2,ll a3,ll c[])
{
c[]=;
c[]=;
for(int i=;i<=c[];i++) c[i]*=a1;
mark(c);
for(int i=;i<=c[];i++) c[i]*=a2;
mark(c);
for(int i=;i<=c[];i++) c[i]*=a3;
mark(c);
}
inline void add(ll a[],ll b[],ll c[])
{
c[]=max(a[],b[]);
for(int i=;i<=c[];i++) c[i]=a[i]+b[i];
mark(c);
}
inline bool compare(ll a[],ll b[])
{
if(a[]>b[]) return ;
else if(a[]<b[]) return ;
for(int i=a[];i>=;i--)
{
if(a[i]>b[i]) return ;
else if(a[i]<b[i]) return ;
}
return ;
}
inline void print()
{
printf("%lld",dp[][n][dp[][n][]]);
for(int i=dp[][n][]-;i>;i--)
{
printf("%lld",dp[][n][i]/);
printf("%lld",dp[][n][i]/%);
printf("%lld",dp[][n][i]/%);
printf("%lld",dp[][n][i]%);
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%lld",&a[i]);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
dp[i][j][]=;
for(int l=;l<=n-;l++)
for(int i=;i<=n;i++)
{
int j=i+l;
if(j>n) break;
dp[i][j][]=INF;
for(int k=i+;k<j;k++)
{
memset(s1,,sizeof(s1));
memset(s2,,sizeof(s2));
memset(s3,,sizeof(s3));
mul(a[i],a[j],a[k],s1);
add(dp[i][k],dp[k][j],s2);
add(s1,s2,s3);
if(compare(dp[i][j],s3))
memcpy(dp[i][j],s3,sizeof(s3));
}
}
print();
return ;
}

请各位大佬斧正(反正我不认识斧正是什么意思)

LOJ P10149 凸多边形的划分 题解的更多相关文章

  1. LOJ P10018 数的划分 题解

    每日一题 day52 打卡 Analysis 这道题直接搜索会TLE到**,但我们发现有很多没有用的状态可以删去,比如 1,1,5; 1,5,1; 5,1,1; 所以很容易想到一个优化:按不下降的顺序 ...

  2. 洛谷P4047 [JSOI2010]部落划分题解

    洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...

  3. 洛谷 P4774 / loj 2721 [NOI2018] 屠龙勇士 题解【同余】【exgcd】【CRT】

    推导过程存在漏洞+exCRT板子没打熟于是期望得分÷实际得分=∞? 题目描述 小 D 最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号 \(1\sim n​\) 顺序杀掉 \(n​\ ...

  4. [LOJ#2340] [WC2018] 州区划分

    题目链接 洛谷题面. LOJ题面.还是LOJ机子比较快 Solution 设\(f(s)\)表示选\(s\)这些城市的总代价,那么我们可以得到一个比较显然的\(dp\): \[ f(s)=\frac{ ...

  5. 洛谷 P3239 / loj 2112 [HNOI2015] 亚瑟王 题解【期望】【DP】

    ???看不懂的期望DP 题目描述 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚 ...

  6. 洛谷 P4108 / loj 2119 [HEOI2015] 公约数数列 题解【分块】

    看样子分块题应该做的还不够. 题目描述 设计一个数据结构. 给定一个正整数数列 \(a_0, a_1, \ldots , a_{n-1}\),你需要支持以下两种操作: MODIFY id x: 将 \ ...

  7. 洛谷 P4269 / loj 2041 [SHOI2015] 聚变反应炉 题解【贪心】【DP】

    树上游戏..二合一? 题目描述 曾经发明了零件组装机的发明家 SHTSC 又公开了他的新发明:聚变反应炉--一种可以产生大量清洁能量的神秘装置. 众所周知,利用核聚变产生的能量有两个难点:一是控制核聚 ...

  8. LOJ P10004 智力大冲浪 题解

    每日一题 day37 打卡 Analysis 经典的带限期和罚款的单位时间任务调度问题 将 val 从大到小排序,优先处理罚款多的,将任务尽量安排在期限之前,并且靠后,如果找不到,则放在最后面 #in ...

  9. LOJ P10011 愤怒的牛 题解

    每日一题 day36 打卡 Analysis 非常水的二分模板,就直接二分答案,用贪心策略check就好了 #include<iostream> #include<cstdio> ...

随机推荐

  1. 打开python 交互式模式

    pip install jupyter jupyter notebook --ip=127.0.0.1 --port=8888

  2. Python进阶:聊协程

    从一个爬虫说起 Python 2 的时代使用生成器协程,Python 3.7 提供了新的基于 asyncio 和 async / await 的方法.先看一个简单的爬虫代码,爬虫的 scrawl_pa ...

  3. Golang_学习资料

    个人推荐: http://godeye.org/index.php?a=course&id=6 http://mikespook.com/learning-go/ http://coolshe ...

  4. High load average analyze

    https://www.tummy.com/articles/isolating-heavy-load/ https://www.tecmint.com/understand-linux-load-a ...

  5. 基于thymeleaf实现简单登录

    1.引入thymeleaf.静态资源等依赖 <dependency> <groupId>org.springframework.boot</groupId> < ...

  6. Excel VBA 入门基础

    Private Sub RegExp_Replace() Dim RegExp As Object Dim SearchRange As Range, Cell As Range '此处定义正则表达式 ...

  7. ribbon的理解

    什么是ribbon? Ribbo是一个基于HTTP和TCP的客户端负载均衡器 什么是客户端负载均衡? 客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置. 在客户端负载均衡中,所有的客户 ...

  8. 【转载】Sqlserver使用SUBSTRING函数截取字符串

    在SQL语句查询过程中,Sqlserver支持使用LEFT().RIGHT().SUBSTRING()等几个函数对字符串进行截取操作,SubString函数相对于其他两个函数来说更灵活,使用场景更多, ...

  9. SHELL字符串处理技巧(${}、##、%%)

      在SHELL编程中,经常要处理一些字符串变量.比如,计算长度啊.截取子串啊.字符替换啊等等,常常要用到awk.expr.sed.tr等命令.下面给大家介绍个简单的字符串处理方法,用不着嵌套复杂的子 ...

  10. 直接插入排序算法(java)

    直接插入排序是将未排序的数据插入至已排好序序列的合适位置. 具体流程如下: 1.首先比较数组的前两个数据,并排序: 2.比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置: 3.比较第四 ...