【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1109

【题目大意】

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

【题解】

  我们发现我们需要找到这样序列,i是递增的,a[i]也是递增的,
  i-a[i]是非严格递增的,因为i=a[i]+(i-a[i]),
  因此第一个递增条件是后面两个条件的必要不充分条件,
  这样就是一个二维的LIS,我们按照其中一维排序,用树状数组维护另一维即可。

【代码】

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=100010;
struct data{int x,y;}p[N];
int c[N],n,x,cnt;
bool cmp(data a,data b){if(a.x!=b.x)return a.x<b.x;else return a.y<b.y;
}
void add(int x,int val){while(x<=n)c[x]=max(c[x],val),x+=x&-x;}
int query(int x){int s=0;while(x)s=max(s,c[x]),x-=x&-x;return s;}
int main(){while(~scanf("%d",&n)){int ans=cnt=0;memset(c,0,sizeof(c));for(int i=1;i<=n;i++){scanf("%d",&x);if(i-x>=0){p[cnt++]={i-x,x};}}sort(p,p+cnt,cmp);for(int i=0;i<cnt;i++){int tmp=query(p[i].y-1)+1;ans=max(ans,tmp);add(p[i].y,tmp);}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/forever97/p/bzoj1109.html

BZOJ 1109 [POI2007]堆积木Klo(树状数组)相关推荐

  1. bzoj 1109: [POI2007]堆积木Klo(二维偏序)

    1109: [POI2007]堆积木Klo Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1139  Solved: 423 [Submit][St ...

  2. BZOJ 1109: [POI2007]堆积木Klo 神分析, LIS, BIT, 二分

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

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

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

  4. [2019.3.17]BZOJ1109 [POI2007]堆积木Klo

    考虑暴力dp. 设\(dp_i\)表示前\(i\)个积木,保留积木\(i\)的最大答案. 那么有 \(dp_i=max(dp_j)+1(i>j,a_i>a_j,a_i-a_j\le i-j ...

  5. BZOJ.4888.[TJOI2017]异或和(树状数组)

    BZOJ 洛谷 \(Description\) 求所有区间和的异或和. \(n\leq 10^5,\ \sum a_i\leq 10^6\). \(Solution\) 这样的题还是要先考虑按位做. ...

  6. BZOJ.3648.寝室管理(点分治 树状数组)

    BZOJ \(Description\) 求在一棵树上加一条边后,有多少条至少有\(k\)个点的路径. \(n\leq10^5\). \(Solution\) 对于一棵树的情况,可以点分治. 用树状数 ...

  7. bzoj 1264: [AHOI2006]基因匹配Match (树状数组优化dp)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1264 思路: n大小为20000*5,而一般的dp求最长公共子序列复杂度是 n*n的,所以我 ...

  8. BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )

    考虑cdq分治, 对于[l, r)递归[l, m), [m, r); 然后计算[l, m)的操作对[m, r)中询问的影响就可以了. 具体就是差分答案+排序+离散化然后树状数组维护.操作数为M的话时间 ...

  9. 【BZOJ】1012: [JSOI2008]最大数maxnumber 树状数组求区间最值

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1012 题意:维护一个数列,开始时没有数值,之后会有两种操作, Q L :查询数列末 ...

最新文章

  1. POJ2771最大独立集元素个数
  2. java list clear 垃圾回收_list.clear()vs list = new ArrayList Integer(); [重复]
  3. 2019ACM浪潮杯山东省赛参赛总结
  4. springMVC 控制层添加异步线程
  5. 宝宝胆小怎么办,家长怎么做?
  6. linux 安装mysql 云盘_linux下 安装mysql教程
  7. Android PreferenceActivity添加ToolBar
  8. dedecms后台界面更改
  9. 微信再次成师父 Facebook开始卖电影票
  10. html中竖线怎么写,网页中竖线的几种做法
  11. 同一个tomcat部署多个项目
  12. 祝贺自己获得CSDN2018 博客之星
  13. 如何计算每月还多少房贷
  14. MSRA前端实习面经
  15. 2022大数据产业年度“国产化优秀代表厂商”榜单发布,亚信科技AntDB数据库位列其中
  16. mysql 授权sql_mysql授权GRANT ALL PRIVILEGES
  17. 汇编(六):[BX] 和 Loop 指令
  18. centos 自动化安装redis
  19. ffmpeg常用命令汇总(倒放/左右翻转/上下翻转/倍速/压缩/去声音/加水印/画中画/缩放等)
  20. 南京大学网络交换机竞价需求公告,设备基本都是​华为锐捷华三

热门文章

  1. ASP.NET开源框架之HIPPO技术内幕(五)--控件结构
  2. (译)WebRTC实战: STUN, TURN, Signaling
  3. 分布式温度采集模块在玻璃制造中的应用
  4. 小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth
  5. SAP SD配置详解之一:销售分销组织结构配置
  6. 微博数据处理——获取僵尸用户数据集(一)
  7. 深潜mobi_统计资料深潜第3部分
  8. 锁相环工作原理,比如我们8MHZ晶振如何让MCU工作在48MHZ或者72MHZ呢
  9. 更改DOS背景颜色和字体大小
  10. IQA图像质量评价 数据集介绍(LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K)