一开始状态就定的不一样…一直想着优化转移然后越走越远..

%%%Seter
我们令f[i]表示第i个积木的积木回到自己的位置,前i个积木最多有多少个归位
枚举前一个归位的积木,可以得到
f[i]=f[j]+1(j<i,a[j]<a[i],i−a[i]>=j−a[j])f[i]=f[j]+1(j=j-a[j])
发现像是个三维偏序上的LIS?
但其实不用,可以发现,当a[j]<a[i],i−a[i]>=j−a[j]a[j]=j-a[j]同时满足时,一定满足j<ij
所以就是求一个很正常的LIS了
以i−a[i]i-a[i]为第一关键字,a[i]a[i]为第二关键字(能保证最长)排序,然后正常做就行了

code:

#include<set>
#include<map>
#include<deque>
#include<queue>
#include<stack>
#include<cmath>
#include<ctime>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<climits>
#include<complex>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 1e9
using namespace std;const int maxn = 110000;int n;
struct node
{int x,i;
}a[maxn];
inline bool cmp(const node x,const node y){return x.i-x.x==y.i-y.x?x.x<y.x:x.i-x.x<y.i-y.x;}
int t[maxn],tp;int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i].x),a[i].i=i;sort(a+1,a+n+1,cmp);for(int i=1;i<=n;i++) if(a[i].i-a[i].x>=0){int now=a[i].x;if(!tp) { t[tp=1]=a[i].x;continue; }int l=1,r=tp;while(l<=r){int mid=l+r>>1;if(t[mid]<now) l=mid+1;else r=mid-1;}++r;t[r]=now; if(r>tp) tp=r;}printf("%d\n",tp);return 0;
}

BZOJ1109: [POI2007]堆积木Klo相关推荐

  1. [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 ...

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

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

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

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

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

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

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

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

  6. [POI2007]堆积木Klo

    题解: dp定义方程的时候 好像也不能都用前一个来递推..这样就不能优化了 这题看了题解才想出来... 还是很简单的啊.... 我们定义f[i]表示前i个最大收益 那么j要能从i转移就得满足a[i]- ...

  7. 堆积木(基本数据结构-ArrayList数组的使用)

    蒜头君有 n 块积木,编号分别为 1 到 n.一开始,蒜头把第 i 块积木放在位置 i.蒜头君进行 m次操作,每次操作,蒜头把位置 b 上的积木整体移动到位置 a 上面. 比如 1 位置的积木是 1, ...

  8. echarts树点击label事件_ECharts 堆积木(砖块)游戏

    最近突发奇想,用 3D 的堆叠柱图,做了一个搭积木的小游戏. 主要思路 用一个几乎透明的 series-bar3D 铺满整个 grid3D,作为操作区,监听鼠标点击事件.完成堆积木的操作: 用多层数据 ...

  9. ps随机排列_漂亮!自然材料:人工可控微米级胶体粒子“堆积木”——粒子随心所欲的组装排列!...

    堆积木俨然已经成为了幼儿教育必备课程,通过堆积木可促进幼儿大脑发育.利用形状相同的基元可组装出各种不同结构,同时也可以通过不同基元之间的匹配组装更加新颖的结构.由于堆积木的组装灵活性,这一概念也被科研 ...

最新文章

  1. Markdown 语法介绍
  2. linux服务器健康检查,Linux 检查硬盘健康状态
  3. html怎么添加背景图片_万能的产品介绍PPT页面是怎么炼成的?
  4. 并联机构工作空间求解_断路器机构弹簧的设计
  5. idea 新建spring clound 项目_手把手教你spring源码搭建
  6. 服务器迁移中心 SMC 最佳实践及新特性介绍
  7. jmeter连接mysql时jdbc下载
  8. 漏扫工具:Docker一键安装AWVS和Nessus
  9. 怎么做SWOT分析模型PPT呢?
  10. 华为网络设备介绍及基础配置命令
  11. 如何玩转互联网金融大数据——征信
  12. C# ListView 在指定行后面插入新行,并对行号重新排序。
  13. 公链、私链、联盟链优缺点
  14. There appears to be trouble with your network connection.Retrying
  15. mysqlReport 详细解析
  16. 燕青分布式系统开发之分布式事务解决方案视频(2天)
  17. 1 Tbps! 使用英特尔第三代Xeon® Scalable Processor 加速VPP IPsec
  18. angular async和await (实用)
  19. 镜像格式二十年:从 Knoppix 到 OCI-Image-v2
  20. SQL Server 数据库之角色、管理权限

热门文章

  1. C#Excel导入和导出
  2. js正则表达式:密码至少8位,要求必须字母、数字加英文符号
  3. 明星产品!种质资源数字化一站式解决方案!
  4. Ubuntu16.04 Remmina远程复制粘贴
  5. Golang标准库-syscall(什么是系统调用/Go 语言中的系统调用)
  6. Frp一键安装脚本Centos
  7. scrapy命令行入门学习
  8. 使用 NativeScript 的 Android 持续后台服务
  9. 计算机考研难度特别大吗,计算机考研难度大吗?学姐为你深度剖析
  10. 又掉坑里了,python3.7 安装 polyglot 失败