挺好的一道DP。

 /* 2217 */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std; #define MAXN 2005
#define MAXM 100005 int lt[MAXN], rt[MAXN];
int ldp[MAXM], rdp[MAXM];
int ln, rn, zn; int main() {
int n, t;
int i, j, k, tmp;
int ans; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif while (scanf("%d %d", &n, &t) != EOF) {
ln = rn = ;
zn = ;
lt[] = ;
rt[] = ;
for (i=; i<n; ++i) {
scanf("%d", &k);
if (k > )
rt[rn++] = k;
else if (k < )
lt[ln++] = -k;
else
++zn;
} rt[] = ;
lt[] = ;
sort(rt, rt+rn);
sort(lt, lt+ln);
ldp[] = ;
rdp[] = ; k = ;
for (i=; i<ln; ++i) {
for (j=lt[i-]; j<lt[i]; ++j)
ldp[j] = k;
++k;
ldp[j] = k;
} k = ;
for (i=; i<rn; ++i) {
for (j=rt[i-]; j<rt[i]; ++j)
rdp[j] = k;
++k;
rdp[j] = k;
} ans = -;
// go left and back to right
for (i=; i<=lt[ln-]; ++i) {
if (t < i)
break;
k = t-(i+i);
if (k < )
k = ;
if (k > rt[rn-])
k = rt[rn-]; ans = max(ans, ldp[i]+rdp[k]);
}
// go right and back to left
for (i=; i<=rt[rn-]; ++i) {
if (t < i)
break;
k = t-(i+i);
if (k < )
k = ;
if (k > lt[ln-])
k = lt[ln-]; ans = max(ans, rdp[i]+ldp[k]);
}
// go zero point first
ans += zn; printf("%d\n", ans);
} return ;
}

【HDOJ】2217 Visit的更多相关文章

  1. 【HDOJ】4729 An Easy Problem for Elfness

    其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...

  2. 【HDOJ】4418 Time travel

    1. 题目描述K沿着$0,1,2,\cdots,n-1,n-2,n-3,\cdots,1,$的循环节不断地访问$[0, n-1]$个时光结点.某时刻,时光机故障,这导致K必须持续访问时间结点.故障发生 ...

  3. 【HDOJ】4351 Digital root

    digital root = n==0 ? 0 : n%9==0 ? 9:n%9;可以简单证明一下n = a0*n^0 + a1*n^1 + ... + ak * n^kn%9 = a0+a1+..+ ...

  4. 【HDOJ】4322 Candy

    状态DP显然可以解,发现T了,不知道优化后能不能过.然后发现费用流可以解.trick是对need拆解成need/K, need%K两种情况讨论. /* 4312 */ #include <ios ...

  5. 【HDOJ】5296 Annoying problem

    LCA+RMQ.挺不错的一道题目. 思路是如何通过LCA维护费用.当加入新的点u是,费用增量为dis[u]-dis[lca(u, lower_u)] - dis[lca(u, greater_u)] ...

  6. 【HDOJ】3948 The Number of Palindromes

    后缀数组求不重复回文子串数目.注意dp数组. /* 3948 */ #include <iostream> #include <sstream> #include <st ...

  7. 【HDOJ】4775 Infinite Go

    其实是一道模拟题,并查集用来优化.还可以的一道题目. /* 4775 */ #include <iostream> #include <sstream> #include &l ...

  8. 【HDOJ】2242 考研路茫茫——空调教室

    tarjan缩点,然后树形dp一下可解.重点是重边的处理. /* 2242 */ #include <iostream> #include <sstream> #include ...

  9. 【HDOJ】1518 Square

    DFS+剪枝.与HDOJ 1455如出一辙. #include <stdio.h> #include <stdlib.h> #include <string.h> ...

随机推荐

  1. 初步掌握HDFS的架构及原理

    目录 HDFS 是做什么的 HDFS 从何而来 为什么选择 HDFS 存储数据 HDFS 如何存储数据 HDFS 如何读取文件 HDFS 如何写入文件 HDFS 副本存放策略 Hadoop2.x新特性 ...

  2. linux 上查找pid,筛选出来

    ps -ef | grep httpd find / -name "1000sql.txt" 查找命令

  3. Eclipse的修改编码插件使用

    最近因为编码问题,很是纠结,终于找到了一个Eclipse的修改编码插件com.lifesting.tool.encoding_1.0.0.jar,使用感觉还不错,记录一下使用方法. 第一步 将插件co ...

  4. ASP.NET Boilerplate Castle容器无缝添加日志功能

    以添加log4net日志框架为例进行讲解 1.通常log4net的配置参数放在单独的配置文件中,但也可以写在web.config中,这里在我们的web项目中添加log4net.config应用配置文件 ...

  5. JAVA导出Excel封装

    1.数据bean public class ExcelBean { private String name; private String sheetName; private ExcelTitle[ ...

  6. Android--WebView控件

    WebView 一 简介: WebView一般用于将Android页面已HTML的形式展现,我们一般叫它HTML5开发: WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用,通过 ...

  7. JVM Run-Time Data Areas.

    Ref: JVM Run-Time Data Areas class SimpleThread extends Thread { public SimpleThread(String name) { ...

  8. iOS: 在代码中使用Autolayout (2) – intrinsicContentSize和Content Hugging Priority【转】

    原文:http://www.mgenware.com/blog/?p=491 接上文:iOS: 在代码中使用Autolayout (1) – 按比例缩放和优先级. 我们继续来看在代码中使用Autola ...

  9. 最新xgboost python32位下安装xgboost

    网上很多windows python下安装xgboost都是很简单的几步无非是visual studio2013以上版本编译,安装.但现在最新的xgboost已经移除了c++工程文件,找到旧版本的也多 ...

  10. hdoj 1060

    代码: #include <stdio.h>#include <math.h> int main(){    int t;    while(scanf("%d&qu ...