(序列)(贪心)(LIS)(区间dp)最少拦截系统

简介: (序列)(贪心)(LIS)(区间dp)最少拦截系统

2023年4月2日

https://vjudge.csgrandeur.cn/contest/550913#problem/G
注意到网上没有什么贪心做法的证明,就发一篇出来

我的思路

没看出来是个dp,就想想贪心。
扫描数组,找到第一个没出现过的,设为最大值,cnt++,以其为起点,再一重循环往下扫描,比最
大值小的就标记,然后更新最大值,
n方复杂度,和dp差不多

卡壳点

一个是多组输入没有初始化,再就是在第二重的j指针扫描里,伪代码的描述有缺漏,应该要扫到比最大值小且没标记过的

贪心证明

主要要证明的就是拦截系统拦截第一个导弹能得到最优方案的问题
不需要考虑哪个拦截系统系统的高度亏损,高的拦截中的,中的拦截小的 ,和高的拦截小的,中的拦截中的最终结果都是得到一个中一个小的拦截系统,位置也是相同的,所以两种方案等价,
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1e3 + 10;
int a[N];
bool st[N];
int main(){
    int n;
    while(~scanf("%d",&n)){
        int cnt = 0;
        for(int i = 1;i <= n;i++){
            cin >> a[i];   
        }
        memset(st,0,sizeof st);
        for(int i = 1;i <= n;i++){
            int maxn ;
            if(!st[i]){
                maxn = a[i];
                cnt++;
                for(int j = i+1;j <= n;j++){
                    if(maxn >= a[j] && !st[j]) {st[j] = true,maxn = a[j];
                        // cout << a[j]<< endl;/
                    }
                }
            }
        }
        cout << cnt << endl;
    }
    return 0;
}
目录
相关文章
|
10月前
|
存储 C语言
牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)
牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)
93 0
|
10月前
|
C语言
c语言编程练习题:7-51 求奇数分之一序列前N项和
c语言编程练习题:7-51 求奇数分之一序列前N项和
93 0
|
10月前
【编程题-错题集】连续子数组最大和(动态规划 - 线性 dp)
【编程题-错题集】连续子数组最大和(动态规划 - 线性 dp)
|
10月前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
10月前
|
vr&ar
【每日一题Day166】LC1053交换一次的先前排列 | 贪心
【每日一题Day166】LC1053交换一次的先前排列 | 贪心
90 1
|
10月前
【每日一题Day239】LC1494并行课程 II | 状态压缩 dp 位运算 子集
【每日一题Day239】LC1494并行课程 II | 状态压缩 dp 位运算 子集
55 0
|
C++
(排列,选择类dp)(数论同余定理,同余运算)(以背包为母题)1214. 波动数列
(排列,选择类dp)(数论同余定理,同余运算)(以背包为母题)1214. 波动数列
112 0
|
存储 机器学习/深度学习 人工智能
【Python 百练成钢】DNA、蛇形矩阵、Huffuman树、K-进制数、K倍区间、交换瓶子、第几个幸运数、四平方和、The 3n + 1 problem、大数乘法
【Python 百练成钢】DNA、蛇形矩阵、Huffuman树、K-进制数、K倍区间、交换瓶子、第几个幸运数、四平方和、The 3n + 1 problem、大数乘法
【Python 百练成钢】DNA、蛇形矩阵、Huffuman树、K-进制数、K倍区间、交换瓶子、第几个幸运数、四平方和、The 3n + 1 problem、大数乘法
|
算法 Java vr&ar
【差分数组】还不懂差分数组?蓝桥杯算法模板题小明的彩灯解析
文章目录 1.算法背景 2.差分数组 2.1 什么是差分数组? 2.2 差分数组的性质 3 例题——小明的彩灯 3.1 题目分析 3.2 参考代码(Java) 3.3 实现结果
【差分数组】还不懂差分数组?蓝桥杯算法模板题小明的彩灯解析