LOJ P10149 凸多边形的划分 题解
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 凸多边形的划分 题解的更多相关文章
- LOJ P10018 数的划分 题解
每日一题 day52 打卡 Analysis 这道题直接搜索会TLE到**,但我们发现有很多没有用的状态可以删去,比如 1,1,5; 1,5,1; 5,1,1; 所以很容易想到一个优化:按不下降的顺序 ...
- 洛谷P4047 [JSOI2010]部落划分题解
洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...
- 洛谷 P4774 / loj 2721 [NOI2018] 屠龙勇士 题解【同余】【exgcd】【CRT】
推导过程存在漏洞+exCRT板子没打熟于是期望得分÷实际得分=∞? 题目描述 小 D 最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号 \(1\sim n\) 顺序杀掉 \(n\ ...
- [LOJ#2340] [WC2018] 州区划分
题目链接 洛谷题面. LOJ题面.还是LOJ机子比较快 Solution 设\(f(s)\)表示选\(s\)这些城市的总代价,那么我们可以得到一个比较显然的\(dp\): \[ f(s)=\frac{ ...
- 洛谷 P3239 / loj 2112 [HNOI2015] 亚瑟王 题解【期望】【DP】
???看不懂的期望DP 题目描述 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚 ...
- 洛谷 P4108 / loj 2119 [HEOI2015] 公约数数列 题解【分块】
看样子分块题应该做的还不够. 题目描述 设计一个数据结构. 给定一个正整数数列 \(a_0, a_1, \ldots , a_{n-1}\),你需要支持以下两种操作: MODIFY id x: 将 \ ...
- 洛谷 P4269 / loj 2041 [SHOI2015] 聚变反应炉 题解【贪心】【DP】
树上游戏..二合一? 题目描述 曾经发明了零件组装机的发明家 SHTSC 又公开了他的新发明:聚变反应炉--一种可以产生大量清洁能量的神秘装置. 众所周知,利用核聚变产生的能量有两个难点:一是控制核聚 ...
- LOJ P10004 智力大冲浪 题解
每日一题 day37 打卡 Analysis 经典的带限期和罚款的单位时间任务调度问题 将 val 从大到小排序,优先处理罚款多的,将任务尽量安排在期限之前,并且靠后,如果找不到,则放在最后面 #in ...
- LOJ P10011 愤怒的牛 题解
每日一题 day36 打卡 Analysis 非常水的二分模板,就直接二分答案,用贪心策略check就好了 #include<iostream> #include<cstdio> ...
随机推荐
- 长乐培训Day8
T1 远征 题目 [题目描述] 寒枫将军将要带领他的部队去圣雪山消灭那里的冰龙.部队分成了若干个小队,属于同一个小队的人兵种相同. 寒枫将军有着杰出的指挥能力,在战斗的时候,寒枫将军能够让所有相同兵种 ...
- python 之 并发编程(守护线程与守护进程的区别、线程互斥锁、死锁现象与递归锁、信号量、GIL全局解释器锁)
9.94 守护线程与守护进程的区别 1.对主进程来说,运行完毕指的是主进程代码运行完毕2.对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕详细解释:1.主 ...
- python学习-53 正则表达式
正则表达式 就其本质而言,正则表达式是一种小型的/高度专业化的编程语言,它内嵌在python中,并通过RE模块实现,正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. 1.元字符 - ...
- 十九、eMMC驱动框架分析
一.MMC简介 eMMC在封装中集成了一个控制器,提供标准接口并管理Nand Flash,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间. 对于我们来说,eMMC就是在Nand ...
- wc 指令
统计文件的行数, 字符数, 字节数. wc 命令的功能相对简单,参数也较少,但是是统计文本行数,字符数的利器.具体的参数和用法如下 语法 wc [OPTION]... [FILE]... wc [OP ...
- (转)DMA(Direct Memory Access)
DMA(Direct Memory Access) DMA(Direct Memory Access)即直接存储器存取,是一种快速传送数据的机制. 工作原理 DMA是指外部设备不通过CPU而直接与系统 ...
- html页面在苹果手机内,safari浏览器,微信中滑动不流畅问题解决方案
1. -webkit-overflow-scrolling:touch是什么? MDN上是这样定义的: -webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效 ...
- C# DataGridView 动态添加列和行
https://blog.csdn.net/alisa525/article/details/7350471 dataGridView1.ReadOnly = true ; //禁用编辑功能 ...
- vue 鼠标移入移出事件执行多次(尤其ie)
来自:https://www.cnblogs.com/myfirstboke/p/9150809.html 侵删 <p @mouseover="over($event)" ...
- Linux 知识
linux下如何查看某软件是否已安装 因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查 ...