【Acwing1010】拦截导弹(LIS+贪心)题解

这篇具有很好参考价值的文章主要介绍了【Acwing1010】拦截导弹(LIS+贪心)题解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

【Acwing1010】拦截导弹(LIS+贪心)题解,算法综合,Acwing,动态规划,算法,c++,acwing

看本文需要准备的知识

1.最长上升子序列(lis)的算法思想和算法模板

2.简单了解贪心算法的思想

思路分析

本题有两问,第一问直接用lis的模板即可,下面重点看第二问

思路是贪心:

贪心流程:

从前往后扫描每一个数,对于每个数:

情况一:如果现有的子序列的结尾都小于当前的数,则创建子序列

情况二:将当前的数放到结尾大于等于它的最小的子序列后面

举个例子:

360 322 555 222.....

从左到右遍历上面序列,当遍历到222的时候,此时已经存在了两个子序列“360 322”和“555”,两个子序列的结尾分别是322和555,其中322是大于等于222且是“322和555”中最小的数,所以把222放在序列“360 322”的后边!

贪心证明:

A表示贪心算法得到的序列个数,B表示最优解

B<=A   显然

如何证明B>=A?利用调整法:

【Acwing1010】拦截导弹(LIS+贪心)题解,算法综合,Acwing,动态规划,算法,c++,acwing

如上图所示,假设a的后面是利用贪心算法插入的一个数,b的后面是最优解插入的一个数

在这两个序列后面补齐之后:

【Acwing1010】拦截导弹(LIS+贪心)题解,算法综合,Acwing,动态规划,算法,c++,acwing

因为a是最优解的插法,所以b>=a

可以把x及后面的序列做交换,导致最优解变成了贪心解,并且总序列个数不变,所以B>=A

完整代码:文章来源地址https://www.toymoban.com/news/detail-727691.html

#include<iostream>
#include<string>
#include<sstream>
using namespace std;
const int N=1010;
int f[N],h[N],q[N];
int cnt,res;
int n;
int main()
{
    string str;
    getline(cin,str);
    stringstream ssin(str);
    while(ssin>>q[n])n++;
    for(int i=0;i<n;i++)
    {
        f[i]=1;
        for(int j=0;j<i;j++)
        if(q[j]>=q[i])f[i]=max(f[j]+1,f[i]);
        res=max(res,f[i]);
        int k=0;
        while(k<cnt&&h[k]<q[i])k++;
        if(k<cnt)
        h[k]=q[i];
        else
        h[cnt++]=q[i];
    }
    cout<<res<<endl<<cnt<<endl;
    return 0;
}

到了这里,关于【Acwing1010】拦截导弹(LIS+贪心)题解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【洛谷 P1003】[NOIP2011 提高组] 铺地毯 题解(数组+贪心算法)

    为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n n n 张地毯,编号从 1 1 1 到 n n n 。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上

    2023年04月24日
    浏览(47)
  • python - leetcode - 424. 替换后的最长重复字符【经典题解 - 贪心滑动窗口算法】

    描述: 给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。 在执行上述操作后,返回包含相同字母的最长子字符串的长度。 示例 1: 示例 2: 提示: 1 = s.length = 105 s 仅由大写英文字母组成 0 =

    2024年02月16日
    浏览(46)
  • acwing198反素数(题解)

    对于任何正整数 x,其约数的个数记作 g(x),例如 g(1)=1、g(6)=4�(1)=1、�(6)=4。 如果某个正整数 x满足:对于任意的小于 x 的正整数 i,都有 g(x)g(i),则称 x为反素数。 例如,整数 1,2,4,61,2,4,6 等都是反素数。 现在给定一个数 N,请求出不超过 N 的最大的反素数

    2024年02月07日
    浏览(33)
  • Acwing166 数独题解 - DFS剪枝优化

    166. 数独 - AcWing题库 数独 是一种传统益智游戏,你需要把一个 9×9 的数独补充完整,使得数独中每行、每列、每个 3×3 的九宫格内数字 1∼9 均恰好出现一次。 请编写一个程序填写数独。 搜索+剪枝(优化搜索顺序、位运算) 优化搜索顺序:很明显,我们肯定是从当前能填合法数字

    2024年03月10日
    浏览(47)
  • P1417 烹调方案 题解&贪心杂谈

    目录 Description Solution Code 一共有 (n) 个食物,每个食物有3个属性,分别为 (a,b,c) ,其中 (c) 表示做这道菜的耗时。 一个食物的贡献为 (a-btimes t) ,其中 (t) 表示做完这道菜的总耗时,求在 (T) 个单位时间内,最多能产生多少贡献。 首先,通过 (T) 的限制, (a-btimes

    2024年02月08日
    浏览(24)
  • 【洛谷 P1106】删数问题 题解(贪心+字符串)

    键盘输入一个高精度的正整数 N N N (不超过 250 250 250 位),去掉其中任意 k k k 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 N N N 和 k k k ,寻找一种方案使得剩下的数字组成的新数最小。 输入两行正整数。 第一行输入一个高精度的正整数 n n

    2024年02月07日
    浏览(42)
  • CF1881F Minimum Maximum Distance 题解 贪心+DFS

    You have a tree with n n n vertices, some of which are marked. A tree is a connected undirected graph without cycles. Let f i f_i f i ​ denote the maximum distance from vertex i i i to any of the marked vertices. Your task is to find the minimum value of f i f_i f i ​ among all vertices. For example, in the tree shown in the example, vertices 2 2 2 , 6 6

    2024年02月22日
    浏览(37)
  • 算法实验二 矩阵最小路径和 LIS

    leetcode裸题 最小路径和 给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明: 每次只能向下或者向右移动一步。 示例 1: 示例 2: 提示: m == grid.length n == grid[i].length 1 = m, n = 200 0 = grid[i][j] = 200 完整实现 题

    2024年04月15日
    浏览(27)
  • 模拟.NET应用场景,综合应用反编译、第三方库调试、拦截、一库多版本兼容方案

    免责声明 使用者本人对于传播和利用本公众号提供的信息所造成的任何直接或间接的后果和损失负全部责任。公众号及作者对于这些后果不承担任何责任。如果造成后果,请自行承担责任。谢谢! 大家好,我是沙漠尽头的狼。 本文首发于Dotnet9,结合前面两篇(如何在没有第

    2024年02月08日
    浏览(39)
  • LIS3DHTR三轴加速度计——倾斜位移检测算法

       三轴加速度传感器通过检测x,y,z轴的三个方向的加速度,当传感器处于静止时,x、y的加速度均为0,z轴的加速度为g,如图所示。当井盖处于倾斜状态是如图所示,传感器x轴的加速度为Ax,与水平方向的夹角为 α 1 {alpha _1} α 1 ​ ,与重力加速度g的夹角为α,;同理可知

    2024年02月22日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包