bzoj 4831 [Lydsy1704月赛]序列操作 dp
[Lydsy1704月赛]序列操作
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 203 Solved: 69
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
4
1 2 1 3
5
1 2 1 1 3
Sample Output
2 3
HINT

#include<queue>
#include<vector>
#include<cstdio>
#include<string>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int f[][],F[][];
int g[][],G[][];
int a[];
int main()
{
int T;
scanf("%d",&T);
while(T>)
{
T--;
int n;
scanf("%d",&n);
int i,j;
int lim=;
for(i=;i<=n;i++)
{
scanf("%d",&a[i]);
lim=max(lim,a[i]);
}
if(n==)
{
printf("0 0\n");
continue;
}
for(j=;j<=lim;j++)
{
f[][j]=-;
F[][j]=-;
g[][j]=;
G[][j]=;
f[][j]=-;
F[][j]=-;
g[][j]=;
G[][j]=;
}
int p=,q=;
int tmp=min(a[],a[]);
for(i=;i<tmp;i++)
F[p][a[]-i]=G[p][a[]-i]=i;
f[p][a[]-tmp]=tmp;
g[p][a[]-tmp]=tmp; for(i=;i<=n;i++)
{
for(j=;j<=a[i];j++)
{
f[q][j]=max(f[p][a[i]-j],F[p][a[i]-j])+a[i]-j;
g[q][j]=min(g[p][a[i]-j],G[p][a[i]-j])+a[i]-j;
}
for(j=a[i];j<=a[i-];j++)
{
f[q][]=max(f[q][],f[p][j]+a[i]);
g[q][]=min(g[q][],g[p][j]+a[i]);
}
f[q][]=max(f[q][],F[p][a[i]]+a[i]);
g[q][]=min(g[q][],G[p][a[i]]+a[i]);
for(j=a[i-]-;j>=;j--)
{
f[p][j]=max(f[p][j],f[p][j+]);
g[p][j]=min(g[p][j],g[p][j+]);
}
for(j=;j<=a[i];j++)
{
F[q][j]=max(f[p][a[i]-j],F[p][a[i]-j])+a[i]-j;
G[q][j]=min(g[p][a[i]-j],G[p][a[i]-j])+a[i]-j;
}
for(j=;j<=a[i-];j++)
{
f[p][j]=-;
F[p][j]=-;
g[p][j]=;
G[p][j]=;
}
p=-p;
q=-q;
}
int ansmax=-,ansmin=;
for(i=;i<=a[n];i++)
{
ansmax=max(ansmax,f[p][i]);
ansmin=min(ansmin,g[p][i]);
}
printf("%d %d\n",ansmin,ansmax);
}
}
bzoj 4831 [Lydsy1704月赛]序列操作 dp的更多相关文章
- BZOJ4831: [Lydsy1704月赛]序列操作(非常nice的DP& 贪心)
4831: [Lydsy1704月赛]序列操作 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 250 Solved: 93[Submit][Statu ...
- [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT)
[BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT) 题面 小C有一个集合S,里面的元素都是小于质数M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数 ...
- bzoj 4836 [Lydsy1704月赛]二元运算 分治FFT+生成函数
[Lydsy1704月赛]二元运算 Time Limit: 8 Sec Memory Limit: 128 MBSubmit: 577 Solved: 201[Submit][Status][Di ...
- BZOJ.4832.[Lydsy1704月赛]抵制克苏恩(期望DP)
题目链接 \(f[s][i][j][k]\)表示还剩\(s\)次攻击,分别有\(i,j,k\)个血量为\(1,2,3\)的奴隶主时,期望受到伤害. 因为期望是倒推,所以这么表示从后往前求,注意\(a, ...
- BZOJ 1046: [HAOI2007]上升序列 LIS -dp
1046: [HAOI2007]上升序列 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3438 Solved: 1171[Submit][Stat ...
- [BZOJ 1046] [HAOI2007] 上升序列 【DP】
题目链接:BZOJ - 1046 题目分析 先倒着做最长下降子序列,求出 f[i],即以 i 为起点向后的最长上升子序列长度. 注意题目要求的是 xi 的字典序最小,不是数值! 如果输入的 l 大于最 ...
- bzoj 1046: [HAOI2007]上升序列【dp+二分】
先从后到前做一个最长下降子序列的dp,记录f[i],我这里用的是二分(其实树状数组比较显然) 然后对于询问,超出最长上升子序列的直接输出:否则从前到后扫,f[i]>=x&&a[i ...
- BZOJ 4833: [Lydsy1704月赛]最小公倍佩尔数(数论 + 最值反演)
题面 令 \({(1+\sqrt 2)}^n=e(n)+f(n)*\sqrt2\) ,其中 \(e(n),f(n)\) 都是整数,显然有 \({(1-\sqrt 2)}^n=e(n)-f(n)*\sq ...
- bzoj 1049: [HAOI2006]数字序列【dp+二分+瞎搞】
第一问明显就是用b[i]=a[i]-i来做最长不下降子序列 然后第二问,对于一对f[i]=f[j]+1的(i,j),中间的数一定要改的,并且是等于b[i]或者b[j],我不会证,然后因为是随机数据,所 ...
随机推荐
- loadrunner_遇到cookie接口_3种应对方法
方法一:是调用登录接口,在调用登录后的接口 方法二:手动储存cookie,写死cookie 方法一:提前登录收集cookie,写成参数化文件 方法一,案例(就是先登录,再写登录后的接口): 注:use ...
- CSP201403-2:窗口
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...
- unity像素贪吃蛇
[ 星 辰 · 别 礼 ] 设计过程: 首先,在之前玩坏控制台做的那个c#贪吃蛇之后,我以为做unity会很简单,但事实比较不如人意...拖了好几天.因为过程中遇到一些问题 蛇身的移动,还是用列表,将 ...
- java中对象和对象的引用
1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一 ...
- 总结Canvas和SVG的区别
参考链接: 菜鸟教程 HTML5 内联SVG 经典面试题(讨论canvas与svg的区别) Canvas SVG 通过 JavaScript 来绘制 2D 图形 是一种使用 XML 描述 2D 图形的 ...
- servlet映射路径
1 访问映射过程 问题:访问URL:http://localhost:8080/day10/first ,服务器如何相应的? 前提: tomcat服务器启动时,首先加载webapps中的每个web应 ...
- lintcode-181-将整数A转换为B
181-将整数A转换为B 如果要将整数A转换为B,需要改变多少个bit位? 注意事项 Both n and m are 32-bit integers. 样例 如把31转换为14,需要改变2个bit位 ...
- 如何设置windows 2003的最大远程连接数
在Windows 2003系统上的远程桌面实际上就是终端服务,虽然远程桌面最初在Windows XP上就已经存在,但由于Windows XP的远程桌面功能,只能提供一个用户使用计算机,因此使用率并不高 ...
- 从实战角度浅析snmp
Snmp Simple Network Management Protocol Snmp最终是为五花八门的网管软件服务的,由于接触的网管软件较少,所以对snmp的理解至今还仅限于初级配置阶段.以下言 ...
- C语言指针【转】
一.C语言指针的概念 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细 ...