Hdu 3564 Another LIS 线段树+LIS
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1361 Accepted Submission(s): 492
For every test case, an integer N (1 <= N <= 100000) comes first, then there are N numbers, the k-th number Xk means that we add number k at position Xk (0 <= Xk <= k-1).See hint for more details.
In the sample, we add three numbers to the sequence, and form three sequences.
a. 1
b. 2 1
c. 2 1 3
- #include <bits/stdc++.h>
- using namespace std;
- const int N = + ;
- #define lson rt << 1, l, m
- #define rson rt <<1|1, m + 1, r
- int num[N << ];
- int a[N], pos[N], ans[N], res[N], n;
- void build(int rt, int l, int r) {
- num[rt] = r - l + ;
- if(l == r) return ;
- int m = (l + r) >> ;
- build(lson);
- build(rson);
- }
- void update(int rt, int l, int r, int k, int v) {
- if(l == r) {
- pos[l] = v;
- num[rt] = ;
- return;
- }
- int m = (l + r) >> ;
- if(k > num[rt << ]) update(rson, k - num[rt << ], v);
- else update(lson, k, v);
- num[rt] = num[rt << ] + num[rt << |];
- }
- int LIS[N], len;
- void solve() {
- len = ;
- LIS[] = ;
- for(int i = ; i <= n; ++i) {
- int p = upper_bound(LIS, LIS + len, pos[i]) - LIS - ;
- LIS[p + ] = pos[i];
- ans[i] = p + ;
- if(p + == len) len++;
- }
- }
- int main() {
- // freopen("in.txt", "r", stdin);
- int _, cas = ; scanf("%d", &_);
- while(_ --) {
- scanf("%d", &n);
- build(, , n);
- // puts("-----BUG-----");
- for(int i = ; i <= n; ++i) { scanf("%d", a + i); a[i]++; }
- for(int i = n; i >= ; --i) update(, , n, a[i], i);
- solve();
- for(int i = ; i <= n; ++i) res[ pos[i] ] = ans[i];
- for(int i = ; i <= n; ++i) res[i] = max(res[i], res[i - ]);
- printf("Case #%d:\n", cas++);
- for(int i = ; i <= n; ++i) printf("%d\n", res[i]);
- puts("");
- }
- }
Hdu 3564 Another LIS 线段树+LIS的更多相关文章
- hdu_3564_Another LIS(线段树+LIS)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3564 题意:给你N个数的位置.数i的位置为第i个数,比如 0 0 2,表示1插在第0个位置,此时数列为 ...
- hdu 5700区间交(线段树)
区间交 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
- Snacks HDU 5692 dfs序列+线段树
Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...
- HDU - 3564 Another LIS(LIS+线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=3564 题意 给出1~n的插入顺序,要求每次插入之后的LIS 分析 首先用线段树还原出最终序列.因为插入的顺序是按 ...
- 2015合肥网络赛 HDU 5489 Removed Interval LIS+线段树(树状数组)
HDU 5489 Removed Interval 题意: 求序列中切掉连续的L长度后的最长上升序列 思路: 从前到后求一遍LIS,从后往前求一遍LDS,然后枚举切开的位置i,用线段树维护区间最大值, ...
- POJ 3903 Stock Exchange(LIS || 线段树)题解
题意:求最大上升子序列 思路:才发现自己不会LIS,用线段树写的,也没说数据范围就写了个离散化,每次查找以1~a[i]-1结尾的最大序列答案,然后更新,这样遍历一遍就行了.最近代码总是写残啊... 刚 ...
- Codeforces 486E LIS of Sequence(线段树+LIS)
题目链接:Codeforces 486E LIS of Sequence 题目大意:给定一个数组.如今要确定每一个位置上的数属于哪一种类型. 解题思路:先求出每一个位置选的情况下的最长LIS,由于開始 ...
- D. Babaei and Birthday Cake---cf629D(LIS线段树优化)
题目链接:http://codeforces.com/problemset/problem/629/D 题意就是现有n个蛋糕,蛋糕的形状是圆柱体,每个蛋糕的体积就是圆柱体的体积,每个蛋糕的编号是1-- ...
- HDU 5091---Beam Cannon(线段树+扫描线)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5091 Problem Description Recently, the γ galaxies bro ...
随机推荐
- 你所不了解的float(滥用float的怪异现象)
float设计初衷就是为了实现文字环绕效果 原本页面流布局显示如上图所示,运用了float属性后就显示为如下图所示,这就是浮动的设计初衷 float的一些特性:包裹性.破坏性. 包裹的特性其实主要有三 ...
- for循环递归树
protected string _menu = string.Empty; public void FirstAnsyData() { try { // List<object> lsN ...
- 第六章 大数据,6.3 突破传统,4k大屏的沉浸式体验(作者: 彦川、小丛)
6.3 突破传统,4k大屏的沉浸式体验 前言 能够在 4K 的页面上表演,对设计师和前端开发来说,即是机会也是挑战,我们可以有更大的空间设计宏观的场景,炫酷的转场,让观众感受影院式视觉体验,但是,又必 ...
- 20145212&20145204信息安全系统实验五
一.实验步骤 1.阅读理解源码 进入/arm2410cl/exp/basic/07_httpd目录,使用 vim编辑器或其他编辑器阅读理解源代码. 2.编译应用程序 运行 make 产生可执行文件 h ...
- Unity3D 之脚本架构,优雅地管理你的代码
本文参考雨松MOMO大神的帖子: 图片全部来自他的帖子(请允许我偷懒下) --------------------------------------------------------------- ...
- nyoj 448 寻找最大数(贪心专题)
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- 解释序列号关键字的形象说法[Serializable]
举个栗子,你在qq中发送一段文字加图片混合的信息给某人的时候,qq不会提供多个方法分别接收文字和图片,而是将这段内容信息赋值给一个对象,然后序列化这个对象为 byte[],然后对这个数组编码,加密,压 ...
- thinkphp一对多HAS_MANY
关联关系通常我们所说的关联关系包括下面三种:一对一关联 :ONE_TO_ONE,包括HAS_ONE 和 BELONGS_TO 一对多关联 :ONE_TO_MANY,包括HAS_MANY 和 BELON ...
- AJAX + WebService 实现文件上传
1. 界面HTML <p >上传文件: <input id="zfiles" type="file" name="file" ...
- sql语句,多个表之间,通过相同内容字段的联合查询
1 , select j.id, jt.Name, j.ApproveType , j.ProductCode, j.CustomerCo ...