P1020 导弹拦截
P1020 导弹拦截 思路: 首先想到的转移方程就是: d p [ i ] = m a x ( d p [ j ] j = 高 度 大 于 i ) + 1 dp[i] = max(dp[j]_{j=高度大于i})+1 d p [ i ] = m a x ( d p [ j ] j = 高 度 大 于 i ) + 1 就是说当考虑第i个导弹的状态时,应当是从前面所有比它高的导弹中取值最大的+1, emmm O ( n 2 ) O(n^2) O ( n 2 ) 吧,但是第二题就不会了,难道要我重复求,直到求完?看了题解才知道(膜题解大佬)第二题是求最长上升序列长度,这个也好办,至于维护最长,最短序列什么的,我是没看懂和dp有什么关系,果断不做. code # include <algorithm> # include <bits/stdc++.h> # include <stdlib.h> # include <stdio.h> # include <iostream> using namespace std ; const int maxn = 1005 ; int missle [ 100000 + 5 ] ; int dp [ 50000 + 5 ] ; int main ( ) { # ifdef LOCAL freopen ( "C:\\Users\\hsxny\