【BZOJ】3971 [WF2013]Матрёшка
【算法】区间DP
【题解】
第二个DP可以预处理mex优化到O(nM+n2),不过我懒……
第一个DP有另一种写法:不预处理,在一个n2取出来的的区间中,枚举决策点从左到右时,保留左最小值的可保留数不严格单调递增,保留右最小值的可保留数不严格单调递减,均摊O(1)。
???
【细节】
f[0]=0初始化
inf+inf+inf就会爆int
区间第二重循环是i=1...n-p,否则有可能爆数组边界。
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=,inf=0x3f3f3f3f;
int dp[maxn][maxn],f[maxn],sum[maxn][maxn],ms[maxn][maxn],n,m,A[maxn];
int calc(int a,int b,int c,int d)
{
int m1=ms[a][b],m2=ms[c][d];
int ans=inf;
ans=(b-a+)-(sum[b][m2]-sum[a-][m2])+(d-c+);
ans=min(ans,(d-c+)-(sum[d][m1]-sum[c-][m1])+(b-a+));
return ans;
}
bool B[maxn];
bool mex(int a,int b)
{
memset(B,,sizeof(B));
for(int i=a;i<=b;i++)if(B[A[i]])return ;else B[A[i]]++;
bool ok=;
if(!B[])return ;
for(int i=;i<=m;i++)
{
if(ok&&B[i])return ;
if(B[i-]&&!B[i])ok=;
}
return ;
}
int main()
{
scanf("%d",&n);
m=;
for(int i=;i<=n;i++){scanf("%d",&A[i]);m=max(m,A[i]+);}
for(int i=;i<=n;i++)
{
for(int j=;j<=A[i];j++)sum[i][j]=sum[i-][j];
for(int j=A[i];j<m;j++)sum[i][j]=sum[i-][j]+;
ms[i][i]=A[i];
for(int j=i+;j<=n;j++)ms[i][j]=min(ms[i][j-],A[j]);
}
for(int p=;p<=n-;p++)
{
for(int i=;i<=n-p;i++)//
{
int j=i+p;
dp[i][j]=inf;
for(int k=i;k<j;k++)if(dp[i][k]<inf&&dp[k+][j]<inf)//
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]+calc(i,k,k+,j));
}
}
memset(f,0x3f,sizeof(f));
f[]=;//初始化!!!
for(int i=;i<=n;i++)
{
for(int j=;j<i;j++)if(f[j]<inf-)
{
if(mex(j+,i))
{
f[i]=min(f[i],f[j]+dp[j+][i]);
}
}
}
if(f[n]>inf-)printf("Impossible");
else printf("%d",f[n]);
return ;
}
【BZOJ】3971 [WF2013]Матрёшка的更多相关文章
- 【BZOJ】3052: [wc2013]糖果公园
http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...
- 【BZOJ】3319: 黑白树
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...
- 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...
- 【BZOJ】1013: [JSOI2008]球形空间产生器sphere
[BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...
- 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- 【BZOJ】【3083】遥远的国度
树链剖分/dfs序 其实过了[BZOJ][4034][HAOI2015]T2以后就好搞了…… 链修改+子树查询+换根 其实静态树的换根直接树链剖分就可以搞了…… 因为其实只有一样变了:子树 如果roo ...
- 【BZOJ】【2434】【NOI2011】阿狸的打字机
AC自动机+DFS序+BIT 好题啊……orz PoPoQQQ 大爷 一道相似的题目:[BZOJ][3172][TJOI2013]单词 那道题也是在fail树上数有多少个点,只不过这题是在x的fail ...
- 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法
整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...
- 【BZOJ】【3170】【TJOI2103】松鼠聚会
切比雪夫距离+曼哈顿距离 题解:http://www.cnblogs.com/zyfzyf/p/4105456.html 其实应该先做这题再做[BZOJ][3210]花神的浇花集会的吧…… 我们发现d ...
随机推荐
- linux下php环境配置
参: http://www.laozuo.org/5542.html LAMP,基于Linux/Apache/MySQL/PHP架构的网站建设环境,对于一般的网站来说足够使用,如果我们的网站访问量或者 ...
- 向redis插入数据时,返回值问题
向redis插入数据时,如果redis没有要插入的key,插入成功之后返回值为1 如果redis有这个key,插入成功之后返回值是0
- 关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT、L
char :单字节变量类型,最多表示256个字符, wchar_t :宽字节变量类型,用于表示Unicode字符, 它实际定义在<string.h>里:typedef unsigned s ...
- java.awt.AWTError: Can't connect to X11 window server using ':20' as the value of the DISPLAY variable
1.使用pio在Linux服务器上创建window文件时,需要使用到Linux的图形界面服务,出现以下问题需确认用户权限. 参考文献:https://zhidao.baidu.com/question ...
- [计算机网络] C++模拟telnet登陆SMTP服务发送邮件过程
在百度文库中的<使用telnet协议收发邮件>,我们可以很清楚地看到如何通过telnet来进行发送邮件,下面是一些需要用到的命令,通过以下命令可以很容易实现邮件发送功能.为了更好地理解其中 ...
- Kubernetes初探 :总体概述及使用示例
Kubernetes是Google开源的容器集群管理系统.它构建于docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-Pa ...
- 9.1、AutoEncoder自动编码器[转]
如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重.自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征.自动编码器就是一种尽可能复 ...
- CentOS yum安装软件包
yum(Yellowdog Update Modifie)命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定 ...
- [bzoj] 3673 3674 可持久化并查集 || 可持久化数组
原题 加强版 题意: 可持久化并查集模板-- 题解: 用可持久化线段树维护一个可持久化数组,来记录每一次操作后的状态. 不能用路径压缩,但是要按置合并,使复杂度保证在O(log) #include&l ...
- AOJ.859 地毯填补问题 (递归与分治)
AOJ.859 地毯填补问题 (递归与分治) 题意分析 学习分治思想,第一次接触, 代码总览 #include <iostream> #include <cstdio> #in ...