首页 > 其他分享 >洛谷 P3287

洛谷 P3287

时间:2022-11-07 14:03:21浏览次数:32  
标签:le 洛谷 log int P3287 lt

不难发现一定是拔高一段后缀。

所以设 \(f_{i,j}\) 表示考虑前 \(i\) 个位置,拔高 \(j\) 次,第 \(i\) 个位置强制选的 LIS 的长度。

则有 \(f_{i,j}=\max\limits_{1\le x\lt i,0\le y\le j,a_x+y\le a_i+j}\left\{f_{x,y}+1\right\}\)。

\(x\lt i\) 天然满足,而剩下两个条件可以用二维 BIT 优化。

因为 \(j\) 可以为 \(0\) 所以要整体右移一位。

而且不难发现为了不让同一个 \(i\) 之间转移所以像背包一样 \(j\) 倒序枚举。

时间复杂度 \(\mathcal O(nk\log k\log w)\),只能说非常离谱。

Code:

#include <bits/stdc++.h>
using namespace std;
const int N = 10005, M = 5005, K = 505;

void chkmax(int &a, int b) { if (a < b) a = b; }

int n, m;
int a[N], f[N][K], c[K][K+M];

void upd(int x, int y, int v) {
	for (int i = x; i <= m + 1; i += i & -i)
		for (int j = y; j <= 5500; j += j & -j) chkmax(c[i][j], v);
}

int query(int x, int y) {
	int res = 0;
	for (int i = x; i; i -= i & -i)
		for (int j = y; j; j -= j & -j) chkmax(res, c[i][j]);
	return res;
}

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
	for (int i = 1; i <= n; ++i)
		for (int j = m; ~j; --j)
			upd(j + 1, a[i] + j, f[i][j] = query(j + 1, a[i] + j) + 1);
	printf("%d", query(m + 1, 5500));
	return 0;
}

标签:le,洛谷,log,int,P3287,lt
From: https://www.cnblogs.com/Kobe303/p/16865696.html

相关文章

  • 洛谷 P3951 [NOIP2017 提高组] 小凯的疑惑 题解
    LuoguP3951[NOIP2017提高组]小凯的疑惑题解注:设\(A,B\)是两个集合,则\(A\timesB\)表示\(A\)与\(B\)的笛卡儿积(直积)。笛卡儿积的定义为\(S\timesM:=\{(s......
  • 洛谷 P2606 [ZJOI2010]排列计数 题解
    LuoguP2606[ZJOI2010]排列计数题解题目描述称一个\(1\simn\)的排列\(p_1,p_2,\dots,p_n\)是Magic的,当且仅当\[\foralli\in[2,n],p_i>p_{\lfloori/2......
  • 【题解】洛谷P2725 [USACO3.1]邮票 Stamps
    从n种邮票中选出不超过k张邮票,使选出来的邮票可以表示1~m之间(含)的所有数。每张邮票在不超过k的前提下,都可以使用无数次,因此可以将问题看成一个完全背包问题。n种邮票就是n......
  • 洛谷P8757 [蓝桥杯 2021 省 A2] 完美序列 题解
    思路为使描述方便,先令题目描述中的“完美序列”反转(即序列单调递增且每一个数都是上一个数的倍数)。原“完美序列”与反转后的本质相同。先考虑最大长度。显然,当完美序列......
  • 洛谷P8775 [蓝桥杯 2022 省 A] 青蛙过河 题解 贪心+二分答案
    题目链接​​https://www.luogu.com.cn/problem/P8775​​题目大意小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里的石头跳到对岸。河里的石头排成了一条......
  • 洛谷-P8814 题解
    前言蒟蒻感叹!许多大佬的思路真的很复杂,于是为了部分没学过的人写了这篇题解(其实就是为了咕值),值得一看!正文♦算法:式子推导从题中可得\(\begin{cases}n_i=p_i\times......
  • 【题解】洛谷P2946 [USACO09MAR]Cow Frisbee Team S
    这题乍一看是一个朴素的01背包问题,将所有方案的集合按照能力值的和来划分成1~m,然后把m当作体积,把n当作物品数,做一个01背包的代码。于是我兴冲冲地写了代码交上去,然后十组样......
  • 矩阵树定理学习笔记 & 洛谷 P4111 [HEOI2015]小 Z 的房间 题解
    矩阵树定理拉普拉斯矩阵无边权设无向图\(G\)有\(n\)个结点,则拉普拉斯矩阵\(L\)是一个\(n\timesn\)的矩阵,满足:\(L_{i,i}(i\inG)\)的值为结点\(i\)的度数......
  • 洛谷P2730 [USACO3.2]魔板 Magic Squares
    题目链接:点这里 一般这种从某种状态转移到目标状态的最短距离,都可以使用BFS来做。从题目给定的初始状态,依次执行题目给定的三种操作,分别是交换上下两行(操作A)、将最后......
  • 【题解】洛谷 P1134 [USACO3.2]阶乘问题
     1#include<iostream>2usingnamespacestd;34intmain(){5intn;6cin>>n;7intc=1,a=0,b=0;8for(inti=1;i......