首页 > 其他分享 >导弹拦截

导弹拦截

时间:2024-03-24 20:33:25浏览次数:24  
标签:cnt ch dp2 dp1 bound 导弹 序列 拦截

一、问题描述

P1020 [NOIP1999 提高组] 导弹拦截

二、问题简析

该题要我们求两个问题:

  • 1、不上升子序列的最大长度
  • 2、不上升子序列的最少个数

利用 \(Dilworth\) 定理,我们得到不上升子序列的最少个数等于上升子序列的最大长度

现在,就是求这两个问题:

  • 1、不上升子序列的最大长度
  • 2、上升子序列的最大长度

类比最长上升子序列,我们可以得到求最长不上升子序列的方法。与最长上升子序列不同点:

  • 1、\(dp[i]\) 都初始化为 \(0\)
  • 2、\(dp[i]\) 是非升序,所以要用 *upper_bound(dp1, dp1 + cnt, A[i], greater<int>()) = A[i] 更新
  • 3、最终结果为 lower_bound(dp1, dp1 + cnt, 0, greater<int>()) - dp1

AC代码

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int quickin(void)
{
	int ret = 0;
	bool flag = false;
	char ch = getchar();
	while (ch < '0' || ch > '9')
	{
		if (ch == '-')    flag = true;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9' && ch != EOF)
	{
		ret = ret * 10 + ch - '0';
		ch = getchar();
	}
	if (flag)    ret = -ret;
	return ret;
}

const int MAX = 1e5 + 3;
const int INF = 1e8;
int dp1[MAX], dp2[MAX], A[MAX];

int main()
{
	#ifdef LOCAL
	freopen("test.in", "r", stdin);
	#endif
	
	int num, cnt = 0;
	while (cin >> num)
		A[cnt++] = num;
		
	fill(dp2, dp2 + cnt, INF);
	for (int i = 0; i < cnt; i++)
	{
		*upper_bound(dp1, dp1 + cnt, A[i], greater<int>()) = A[i];
		
		*lower_bound(dp2, dp2 + cnt, A[i]) = A[i];
	}
	cout << lower_bound(dp1, dp1 + cnt, 0, greater<int>()) - dp1 << endl;
	cout << lower_bound(dp2, dp2 + cnt, INF) - dp2 << endl;
	
	return 0;
}

标签:cnt,ch,dp2,dp1,bound,导弹,序列,拦截
From: https://www.cnblogs.com/hoyd/p/18092975

相关文章

  • Struts2中type类型有哪些?Struts2默认能解决get和post提交方式的乱码问题吗?Struts2中如
    Struts2中type类型有哪些?Struts2中type类型指的是结果类型,用于指定Action执行完成后如何返回结果给客户端。Struts2框架提供了多种结果类型,以满足不同的业务需求和页面跳转方式。以下是一些常见的Struts2结果类型:dispatcher:这是默认的结果类型,相当于servlet的forward,即服......
  • 配置跨域和拦截器仍会显示跨域
    问题复现我的项目是前后端分离的项目,后端配置了跨域以及拦截器跨域代码@ConfigurationpublicclassWebConfigimplementsWebMvcConfigurer{@ResourceprivateJwtFilterjwtFilter;/***不需要拦截地址*/publicstaticfinalStr......
  • SpringMVC中的拦截器Interceptor实现
    之前的文章介绍过两个拦截器(分别参考MyBatis功能点之二(2):从责任链设计模式的角度理解插件实现技术和SpringAOP之源码分析)。本文介绍的拦截器实现与它们有何异同呢?在SpringMVC拦截器(Interceptor)使用中已知实现了HandlerInterceptor接口,MVC会自动拦截。如何实现的呢?改造......
  • HandlerInterceptor - 自定义拦截器
    自定义一个类实现HandlerInterceptor接口,加上@Component注解。根据需要重写方法publicinterfaceHandlerInterceptor{defaultbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{returntrue;......
  • springboot实现拦截器
    在springboot中实现拦截器分为两步:1、创建普通拦截器,需要实现HandlerInterceptor并重写接口中相关方法;2、将上一步创建的拦截器加入到springboot配置中,配置拦截规则下面是相关代码和demo请求:定义一个普通拦截器:importorg.springframework.stereotype.Component;importorg......
  • fiddler 拦截抓包 安卓10
    https://blog.csdn.net/freeking101/article/details/118914275https://blog.51cto.com/u_13690151/5603754opensslx509-informder-subject_hash_old-inFiddlerRoot.cer -nooutopensslx509-informder-inFiddlerRoot.cer-oute5c3944b.0 mt管理器移到/system/e......
  • C# 12 拦截器 Interceptors
    拦截器Interceptors是一种可以在编译时以声明方式替换原有应用的方法。这种替换是通过让Interceptors声明它拦截的调用的源位置来实现的。您可以使用拦截器作为源生成器的一部分进行修改,而不是向现有源编译添加代码。 演示使用.NET8创建一个控制台应用程序。并在Property......
  • feigni请求添加拦截器
    @FeignClient的configuration属性:Feign注解@FeignClient的configuration属性,可以对feign的请求进行配置。包括配置Feign的Encoder、Decoder、Interceptor等。feign请求添加拦截器,也可以通过这个configuration属性来指定。feign请求拦截器RequestIntercept......
  • SpringBoot拦截器
    目录拦截器概念拦截器的作用应用场景SpringBoot中的拦截器实现实现HandlerInterceptor接口注册拦截器到InterceptorRegistry配置拦截器的拦截规则拦截器的执行顺序和生命周期拦截器的执行顺序拦截器的生命周期多个拦截器的执行流程拦截器的性能优化和常见问题拦截器的常见问题和解......
  • 导弹追击问题
    问题描述:  导弹基地发现正北方向120km处海面上有一艘敌舰以90km/h的速度向正东方向行驶。该基地立即发射导弹追踪追击敌舰,导弹速度为450km/h,自动导航系统使导弹在任一时刻都能对准敌舰。试问导弹在何时何处击中敌舰?问题分析: 由于自动导航系统的存在,导弹始终对准了敌舰,......