首页 > 其他分享 >最少拦截系统 1257 (动态规划)

最少拦截系统 1257 (动态规划)

时间:2023-04-20 12:09:35浏览次数:39  
标签:int max 导弹 1257 最少 拦截 include dp


最少拦截系统

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 27022    Accepted Submission(s): 10667



Problem Description


某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.




Input


输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)




Output


对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.




Sample Input


8 389 207 155 300 299 170 158 65



Sample Output


2


 


#include<stdio.h>
#include<string.h>
int dp[1010];
int main()
{
	int n,m,i,j;
	while(scanf("%d",&n)!=EOF)
	{
		m=0;
		int flag=0;
		int max;
		scanf("%d",&max);
		dp[0]=max;
		m++;
		for(i=1;i<n;i++)
		{
			flag=0;
			scanf("%d",&max);
			for(j=0;j<m;j++)
			{
				if(dp[j]>max)
				{
					dp[j]=max;
					flag=1;
					break;
				}
			}
			if(!flag)
				dp[m++]=max;
		}
		printf("%d\n",m);
	}
	return 0;
}


//另一种方法,虽然短,但不易理解



 


#include<stdio.h>
#include<string.h>
int a[1010],b[1010];
int main()
{
	int n,m,i,j;
	while(scanf("%d",&n)!=EOF)
	{
		m=0;
		for(i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			b[i]=1;
		}
		for(i=1;i<n;i++)
		{
			for(j=0;j<i;j++)
			{
				if(a[j]<=a[i]&&b[j]+1>b[i])
					b[i]=b[j]+1;
				if(m<b[i])
					m=b[i];
			}
		}
		printf("%d\n",m);
	}
	return 0;
}


标签:int,max,导弹,1257,最少,拦截,include,dp
From: https://blog.51cto.com/u_16079508/6209374

相关文章

  • 拦截器,过滤器,监听器区别
    1:本处讨论和语言无关 2:监听器一般是内部target对象触发event事件,常见设计上使用EventManger,event,eventAction三个对象封装处理,原则上使用观察者模式 3:拦截器和过滤器一般都是外部触发, 拦截器是拦截行为,过滤器是过滤数据,原则上使用代理模式......
  • 接口幂等性设计-拦截器+过滤器+redis
    接口幂等性设计-拦截器+过滤器+redis所需依赖:<!--redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>......
  • 基于拦截器去实现数据长度等校验
    因为之前基于了HandlerInterceptorAdapter去实现过我们数据的拦截。后来一想这个都可以用来对传递的数据做拦截那么这个时候我们就可以用它来加上自定义注解去实现一个入参的数据校验这样就避免了大量的逻辑。可以去实现每个入参进来的时候数据的校验等等。packagecom.cyi.Inte......
  • SpringMVC-JSR303和拦截器
    1.JSR3031.1.什么是JSR303JSR是JavaSpecificationRequests的缩写,意思是Java规范提案。是指向JCP(JavaCommunityProcess)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。JSR-303是JAVAEE6......
  • Android开发,使用的是OkHttp和Reftrofit,用的是Kotlin协程,用Kotlin写一个网络拦截器,模拟
    首先,我们需要定义一个网络拦截器类,继承自OkHttp的Interceptor接口:classLoginInterceptor:Interceptor{overridefunintercept(chain:Interceptor.Chain):Response{//模拟登录请求,这里可以根据具体情况进行修改valrequest=chain.request().ne......
  • mvc多拦截器配置
        ......
  • mvc拦截器配置与方法参数
          ......
  • 通过UIApplicationMain实现应用内多种事件拦截
    简介UIApplicationMain大家并不陌生,因为在通过XCode建立iOS的Ojective-C工程时肯定会看到。新建的main.m文件长这样:intmain(intargc,char*argv[]){NSString*appDelegateClassName;@autoreleasepool{appDelegateClassName=NSStringFromClas......
  • 【springboot中使用拦截器】
    1.拦截器原理1.定义拦截器:2.配置拦截器3.解决静态资源被拦截2.拦截器使用实例2.1判断用户有没有登录2.2取消拦截操作1.拦截器原理拦截器的原理很简单,是AOP的一种实现,专门拦截对动态资源的后台请求,即拦截对控制层的请求。使用场景比较多的是判断用户是否有权限请求后台,更拔高一层的......
  • 2612. 最少翻转操作数
    题目链接:2612.最少翻转操作数方法:BFS+AVLTree解题思路先不考虑被\(ban\)的位置:假设当前\(1\)的位置在下标\(i\)上,那么将其按照包含\(i\)且长度为\(k\)的数组反转一次所能得到的对应下标的可能结果是一个从\(i-k+1\)起始到\(i+k-1\)结束的公差为\(2......