首页 > 其他分享 >P1020 [NOIP1999 提高组] 导弹拦截

P1020 [NOIP1999 提高组] 导弹拦截

时间:2024-04-05 11:44:20浏览次数:37  
标签:rr num2 int ll P1020 NOIP1999 拦截 include

链接:https://www.luogu.com.cn/problem/P1020
这个题目一分为二:
首先就是LIS:改下,改成最长不升子序列,复杂度:nlogn;然后用vector的贪心,复杂度:n^2(这里似乎可以二分降到nlogn,不过反正过了OwO!)
被这个输入卡的好难受,建议用getline读取不确定的数
题目:

代码:

#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
typedef unsigned long long ll;
using namespace std;

const int N = 1e5 + 5;
ll v[N];
ll jd[N];
int binarysearch(int l, int r, int val)
{
	int ll = l, rr = r, mid;
	while (ll < rr)
	{
		mid = ll + (rr - ll) / 2;
		if (val <= jd[mid])ll = mid + 1;
		else rr = mid;
	}
	return ll;
}
int toa(string s)//getline配套
{
	int ans = 0;
	for (int i = 0; i < s.length(); i++)ans = ans * 10 + s[i] - '0';
	return ans;
}
int main()
{
	string s;
	int n = 0;
	getline(cin, s);
	int lef = 0, righ = 1;
	while (righ < s.length())
	{
		while (righ < s.length() and s[righ] != ' ')righ++;
		v[++n] = toa(s.substr(lef, righ-lef));
		lef = righ + 1;
		righ = lef;
		
	}
	for (int i = 1; i <= n; i++)jd[i] = LLONG_MAX;
	jd[1] = v[1];
	ll ans = 1;
    //标准的LIS模板
	for (int i = 2; i <= n; i++)
	{
		if (v[i] <= jd[ans])
		{
			ans++; jd[ans] = v[i];
		}
		else jd[binarysearch(1, ans, v[i])] = v[i];
	}
	cout << ans << endl;
	vector<int>num2;
	num2.push_back(v[1]);
    //标准的贪心,求第二问
	for (int i = 2; i <= n; i++)
	{
		if (num2.back() < v[i])num2.push_back(v[i]);
		else
			for(int j=0;j<num2.size();j++)
				if (num2[j] >= v[i])
				{
					num2[j] = v[i];
					break;
				}
	}
	cout << num2.size();
	return 0;
}

标签:rr,num2,int,ll,P1020,NOIP1999,拦截,include
From: https://www.cnblogs.com/zzzsacmblog/p/18115602

相关文章

  • 题解:P3903 导弹拦截III
    第一步:确定子任务因为当前拦截的导弹可能在奇数位上,也可能在偶数位上,所以以这两种状态为子任务。第二步:确定状态设$dp[i][0/1]$为作为第(偶数/奇数)个被拦截的导弹,最大可以拦截多少个导弹第三步:推出转移方程$dp[i][0]=max(dp[j][1])+1(1\lej<i且h[i]<h[j])$$dp[i][1]=max(......
  • 七、使用jsPlumb实现流程图功能--Connection事件和拦截器
    在一个交互式的流程图配置中,连线可能是最高频的操作。jsPlumb也提供了相对应的事件和拦截器可以让开发人员做一些符合需求的功能。一、Connection事件Connection事件是在行为发生之后的一个通知,Connection常用的一些事件有:EVENT_CONNECTION:连线创建之后触发的事件。EVENT_CON......
  • Spring AOP 和 拦截器 获取类上与方法上的注解
    在做一个获取目标注解的鉴权功能时,想到了AOP与拦截器两种方式,其中@HasPermission是我自定义的注解,以下分别为AOP与拦截器获取访问目标类与方法上的注解的方法。由于我的系统在拦截器上配置了拦截过则,所以我选的是拦截器的方式,读者可根据自己的需求来。一、SpringAOP方式获取......
  • 网页Hook 拦截,修改,请求数据
    不多BB,直接上代码在控制台直接敲此代码进行hook当网页有触发XMLHttpRequest请求时,可以进行重写数据,拦截,修改获取数据等操作。这个只是hookXMLHttpRequest的,fetchApi的代码在下面(functionhookXMLHttpRequest(){//保存原始的XMLHttpRequest.open和send方法constrea......
  • 拦截器和过滤器的区别
            在平常使用中,对于某些功能的实现,可能既可以用拦截器完成,又可以用监听器完成。这样使我们对于这两个概念有一定程度上的混淆。 拦截器和过滤器的区别过滤器和拦截器的区别:①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与serv......
  • 高德地图内网部署,通过拦截请求实现
    一、安装npm库   npm地址:ajax-hook-npm(npmjs.com)NPM引入npminstallajax-hook二、实现代码,放到mainjs里面import{proxy}from"ajax-hook";proxy({//请求发起前进入onRequest:(config,handler)=>{//console.log(config.url)if(......
  • 【WEEK5】 【DAY1】拦截器【中文版】
    2024.3.25Monday目录9.拦截器9.1.概述9.2.自定义拦截器9.2.1.如何实现拦截器9.2.2.新建module9.2.2.1.新建springmvc-07-interceptor模块9.2.2.2.添加web支持9.2.2.3.添加applicationContext.mxl,新建controller文件夹9.2.2.4.添加jar包9.2.2.5.配置tomcat9.2.3.新建Te......
  • 拦截器不生效的问题处理
    拦截器没有注册到容器中,不能被容器管理 主要由以下两个步骤:自定义拦截器类实现HandlerInterceptor接口自定义WebMvc配置类实现WebMvcConfigurer接口,添加自定义拦截器类主要是第二步缺少。第一步:自定义拦截器UserInterceptor:publicclassUserInterceptorimplemen......
  • 导弹拦截
    一、问题描述P1020[NOIP1999提高组]导弹拦截二、问题简析该题要我们求两个问题:1、不上升子序列的最大长度2、不上升子序列的最少个数利用\(Dilworth\)定理,我们得到不上升子序列的最少个数等于上升子序列的最大长度。现在,就是求这两个问题:1、不上升子序列的最大长......
  • Struts2中type类型有哪些?Struts2默认能解决get和post提交方式的乱码问题吗?Struts2中如
    Struts2中type类型有哪些?Struts2中type类型指的是结果类型,用于指定Action执行完成后如何返回结果给客户端。Struts2框架提供了多种结果类型,以满足不同的业务需求和页面跳转方式。以下是一些常见的Struts2结果类型:dispatcher:这是默认的结果类型,相当于servlet的forward,即服......