[Lydsy1704月赛]序列操作

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 203  Solved: 69
[Submit][Status][Discuss]

Description

给定一个长度为 n 的非负整数序列 a_1,a_2,...a_n 。你可以使用一种操作:选择在序列中连续的两个正整数,
并使它们分别减一。当你不能继续操作时游戏结束,而你的得分等于你使用的操作次数。你的任务是计算可能的最小
得分和最大得分。
 

Input

第一行包含一个正整数 T ,表示有 T 组数据,满足 T ≤ 200 。
接下来依次给出每组测试数据。对于每组测试数据:
第一行包含一个正整数 n ,满足 1 ≤ n ≤ 10^5   。
第二行包含 n 个非负整数,表示 a_1,a_2,...a_n ,满足 Σa_i  ≤ 10^6 。
约 5 组数据满足 n ≥ 10^3 或 Σa_i  ≥ 10^4 。
 

Output

对于每组测试数据
输出一行两个非负整数,用一个空格隔开,前者表示可能的最小得分,后者表示可能的最大得分。

Sample Input

2
4
1 2 1 3
5
1 2 1 1 3

Sample Output

2 2
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的更多相关文章

  1. BZOJ4831: [Lydsy1704月赛]序列操作(非常nice的DP& 贪心)

    4831: [Lydsy1704月赛]序列操作 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 250  Solved: 93[Submit][Statu ...

  2. [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT)

    [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT) 题面 小C有一个集合S,里面的元素都是小于质数M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数 ...

  3. bzoj 4836 [Lydsy1704月赛]二元运算 分治FFT+生成函数

    [Lydsy1704月赛]二元运算 Time Limit: 8 Sec  Memory Limit: 128 MBSubmit: 577  Solved: 201[Submit][Status][Di ...

  4. BZOJ.4832.[Lydsy1704月赛]抵制克苏恩(期望DP)

    题目链接 \(f[s][i][j][k]\)表示还剩\(s\)次攻击,分别有\(i,j,k\)个血量为\(1,2,3\)的奴隶主时,期望受到伤害. 因为期望是倒推,所以这么表示从后往前求,注意\(a, ...

  5. BZOJ 1046: [HAOI2007]上升序列 LIS -dp

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3438  Solved: 1171[Submit][Stat ...

  6. [BZOJ 1046] [HAOI2007] 上升序列 【DP】

    题目链接:BZOJ - 1046 题目分析 先倒着做最长下降子序列,求出 f[i],即以 i 为起点向后的最长上升子序列长度. 注意题目要求的是 xi 的字典序最小,不是数值! 如果输入的 l 大于最 ...

  7. bzoj 1046: [HAOI2007]上升序列【dp+二分】

    先从后到前做一个最长下降子序列的dp,记录f[i],我这里用的是二分(其实树状数组比较显然) 然后对于询问,超出最长上升子序列的直接输出:否则从前到后扫,f[i]>=x&&a[i ...

  8. 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 ...

  9. bzoj 1049: [HAOI2006]数字序列【dp+二分+瞎搞】

    第一问明显就是用b[i]=a[i]-i来做最长不下降子序列 然后第二问,对于一对f[i]=f[j]+1的(i,j),中间的数一定要改的,并且是等于b[i]或者b[j],我不会证,然后因为是随机数据,所 ...

随机推荐

  1. 【转】VSstudio中的一些宏

    说明 $(RemoteMachine) 设置为“调试”属性页上“远程计算机”属性的值.有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置. $(References) 以分号分隔的引用列表被 ...

  2. adb 在windows7中的使用

    我的系统环境是win7 x64 首先放上资源链接:https://pan.baidu.com/s/1eTV5qX8 密码:2ejw 第一步: 配置环境变量,将adb.exe的路径添加到PATH里面去: ...

  3. 【python 3.6】从网站抓图并存放到本地路径

    #!/usr/bin/python # -*- coding: UTF-8 -*- _author_ = 'BH8ANK' import urllib.request import re import ...

  4. 开关灯问题(C++)

    [问题描述] 假设有 N 盏灯(N 为不大于 5000 的正整数),从 1 到 N 按顺序依次编号,初始时全部处于开启状态:有 M 个人(M 为不大于 N 的正整数)也从 1 到 M 依次编号.第一个 ...

  5. 对int类型最小值INT_MIN取负值结果不变

    在32位系统中,int类型的最大值是0x7fffffff(即除了最高的1Bit其他31位都为1),而最小值是0x80000000(除了最高1bit,其他31位都为0). 显然,对于最小值求负数是不存在 ...

  6. 深入理解Java 8 Lambda(类库篇——Streams API,Collectors和并行)

    转载:http://zh.lucida.me/blog/java-8-lambdas-inside-out-library-features/ 关于 深入理解 Java 8 Lambda(语言篇——l ...

  7. 常用web资源

    ip相关 新浪:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=220.181.38.110 (不带参数本机) ...

  8. 感谢信——Alpha版

    作为Thunder团队的leader,当时担任组长,说实话,确实是头脑一热,可后来,在确定选题时,看着大家都有自己的想法,看着大家都那么踊跃,而我因为性格的原因,总是难以做决定,导致选题这件事就开了几 ...

  9. 针对XX系统的可用性和易用性构想

    可用性是与系统故障有关的一个质量属性,是指系统正常运行的时间的比例,一般通过两次故障之间的时间长度或在系统崩溃情况下能恢复正常运行的速度来衡量,同时此概念涉及一个公式的计算,就是系统正常运行时间的百分 ...

  10. Spring Boot(二)配置分析

    回顾一下采用SSM开发项目时,项目中会存在多个配置文件,比如web.xml,配置Spring相关的applicationContext-springmvc.xml, applicationContex ...