1109: [POI2007]堆积木Klo

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 948  Solved: 341
[Submit][Status][Discuss]

Description

  Mary在她的生日礼物中有一些积木。那些积木都是相同大小的立方体。每个积木上面都有一个数。Mary用他的
所有积木垒了一个高塔。妈妈告诉Mary游戏的目的是建一个塔,使得最多的积木在正确的位置。一个上面写有数i
的积木的正确位置是这个塔从下往上数第i个位置。Mary决定从现有的高塔中移走一些,使得有最多的积木在正确
的位置。请你告诉Mary她应该移走哪些积木。

Input

  第一行为一个数n,表示高塔的初始高度。第二行包含n个数a1,a2,...,an,表示从下到上每个积木上面的数。
(1<=n<=100000,1<=ai<=1000000)。

Output

  注意:请输出最多有多少点可以处在正确位置

Sample Input

5
1 1 2 5 4

Sample Output

3

HINT

 

Source

 

[Submit][Status][Discuss]

分析

OTZ Neighthorn

一开始是三维——

i > j && a[i] > a[j] && a[i] - i <= a[j] - j

然后,巨机的Neighthorn告诉我们,这其实是二维,因为满足后两个条件时,第一维一定满足。

所以是二维了——

a[i] > a[j] && a[i] - i <= a[j] - j

然而蒟蒻的我依然不会,于是巨机的Neighthorn有开始指点迷津。

说,如果你把a[i]看作新的下标,这就是个水水的最长不严格上升子序列问题。

∑( 口 ||, 再次 OTZ Neighthorn。

代码

 #include <cstdio>
#include <cstring>
#include <algorithm> #define lim 10000000 class Scanner
{
private:
char *c; public:
Scanner(void)
{
c = new char[lim];
fread(c, , lim, stdin);
} int nextInt(void)
{
int res = ;
bool neg = ; while (*c < '')
if (*c++ == '-')
neg ^= true; while (*c >= '')
res = res* + *c++ - ''; return neg ? -res : res;
}
}in; #define N 1000005 int n, a[N]; struct pair
{
int x, y;
pair(void) {};
pair(int a, int b) :
x(a), y(b) {};
}; pair p[N]; int cmp(const void *a, const void *b)
{
if (((pair *)a)->x != ((pair *)b)->x)
return ((pair *)a)->x - ((pair *)b)->x;
else return -((pair *)a)->y + ((pair *)b)->y;
} int tmp[N]; #define inf 0x3f3f3f3f
#define low lower_bound
#define upp upper_bound signed main(void)
{
n = in.nextInt(); for (int i = ; i <= n; ++i)
a[i] = in.nextInt(); for (int i = ; i <= n; ++i)if (a[i] <= i)
p[i] = pair(a[i], i - a[i]);
else p[i] = pair(inf, inf); qsort(p + , n, sizeof(pair), cmp); using namespace std; memset(tmp, inf, sizeof(tmp)); for (int i = ; i <= n; ++i)
{
int t = p[i].y;
*upp(tmp, tmp + i, t) = t;
} printf("%d\n", low(tmp, tmp + n, inf) - tmp);
}

BZOJ_1109.cpp

@Author: YouSiki

BZOJ 1109: [POI2007]堆积木Klo的更多相关文章

  1. BZOJ 1109 [POI2007]堆积木Klo(树状数组)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1109 [题目大意] Mary在她的生日礼物中有一些积木.那些积木都是相同大小的立方体. ...

  2. bzoj 1109 [POI2007]堆积木Klo(LIS)

    [题意] n个数的序列,删除一个数后序列左移,求最后满足i==a[i]的最大个数. [思路] 设最终得到a[i]==i的序列为s,则s应满足: i<j,a[i]<a[j],i-a[i]&l ...

  3. BZOJ.1109.[POI2007]堆积木Klo(DP LIS)

    BZOJ 二维\(DP\)显然.尝试换成一维,令\(f[i]\)表示,强制把\(i\)放到\(a_i\)位置去,现在能匹配的最多数目. 那么\(f[i]=\max\{f[j]\}+1\),其中\(j& ...

  4. BZOJ 1109 POI2007 堆积木Klo LIS

    题目大意:给定一个序列,能够多次将某个位置的数删掉并将后面全部数向左串一位,要求操作后a[i]=i的数最多 首先我们如果最后a[i]=i的数的序列为S 那么S满足随着i递增,a[i]递增(相对位置不变 ...

  5. 1109: [POI2007]堆积木Klo

    1109: [POI2007]堆积木Klo https://lydsy.com/JudgeOnline/problem.php?id=1109 分析: 首先是dp,f[i]表示到第i个的最优值,f[i ...

  6. 【BZOJ】1109: [POI2007]堆积木Klo

    题意 \(n(1 \le n \le 100000)\)个数放在一排,可以一走一些数(后面的数向前移),要求最大化\(a_i=i\)的数目. 分析 分析容易得到一个dp方程. 题解 \(d(i)\)表 ...

  7. 【BZOJ1109】[POI2007]堆积木Klo 二维偏序

    [BZOJ1109][POI2007]堆积木Klo Description Mary在她的生日礼物中有一些积木.那些积木都是相同大小的立方体.每个积木上面都有一个数.Mary用他的所有积木垒了一个高塔 ...

  8. 【bzoj1109】[POI2007]堆积木Klo 动态规划+树状数组

    题目描述 Mary在她的生日礼物中有一些积木.那些积木都是相同大小的立方体.每个积木上面都有一个数.Mary用他的所有积木垒了一个高塔.妈妈告诉Mary游戏的目的是建一个塔,使得最多的积木在正确的位置 ...

  9. BZOJ1109 : [POI2007]堆积木Klo

    f[i]表示第i个在自己位置上的最大值 则f[i]=max(f[j])+1 其中 j<i a[j]<a[i] a[i]-a[j]<=i-j -> j-a[j]<=i-a[ ...

随机推荐

  1. 利用统计学知识为android应用的启动时间做数据分析

    [声明:如需转载本文,请注明来源] 一.数据说明 启动时间用同一台设备,同一个包进行启动时间的测试,其中三组样本数据(每组100份对比数据)如下: 设备pro-5-1 base_list_1 = [0 ...

  2. IntelliJ Idea14 创建Maven多模块项目

    Maven多模块项目的参考资料 Sonatype上的教程 http://books.sonatype.com/mvnex-book/reference/multimodule.html 在这个教程里, ...

  3. Basic: Fisher's transform

    来源:http://bbs.chinahrd.net/thread-709742-1-1.html,Kenneth的回答. z = 0.5 * ln [ (1+r)/(1-r) ]" C0 ...

  4. 几种.NET平台数据持久化框架介绍

    原文连接:http://yuxnet.blog.163.com/blog/static/164863495201131532223362/ 在.NET平台下,关于数据持久层框架非常多,本文主要对如下几 ...

  5. CentOS VMware 下SSH配置方法详解

    1.安装SSH[root@sample ~]# yum install ssh2.启动SSH[root@sample ~]# service sshd start3.设置开机运行[root@sampl ...

  6. 【转】CSS Sprites教程大全(使用方法、工具介绍)

    什么是CSS Sprite CSS Sprite 又叫CSS精灵,是目前大型网站中经常运用的图片处理方式.它的原理很简单,将网站上零散的小图片(或图标)整合在一张大图上,再用CSS中“backgrou ...

  7. centos6-honeyd安装&配置

    安装 需要装 libpcap libevent libdnet 等(!) 有些用的yum,有些下载的安装包手动安装 (wget tar configure make install 非常linux) ...

  8. PhoneGap: Android平台入门例子(Hello World)

    Hello World Demo: http://docs.phonegap.com/en/2.0.0/guide_getting-started_android_index.md.html#Gett ...

  9. 后记:Cookie安全大辩论总结

    前天,我发布在博客园上的某知名电商网站的Cookie漏洞引发园友们的热议,学到了很多知识,现在整理一下其中比较激烈的技术讨论.谁对谁错每个人自己心中都有一把称,很多时候都是我无法说服你,你也无法说服我 ...

  10. Android回调

    当A页面跳往B页面做一些操作后,再从B页面回到A页面时,A页面想要回去一些B页面操作的数据时,我们一般会使用回调. 1 public class MainActivity extends Activi ...