TOJ1004 防御导弹问题

原创 2005年05月30日 18:36:00

/*


防御导弹

http://acm.tongji.edu.cn/people/ps/showproblem.php?problem_id=1004


Time Limit:1s Memory Limit:1000k
Total Submit:4585 Accepted:1439


Time Limit:1s Memory Limit:1000k
Total Submit:4585 Accepted:1439


Time Limit:1s Memory Limit:1000k
Total Submit:4585 Accepted:1439

--------------------------------------------------------------------------------

Problem
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在使用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

Input
最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)

Output
两个整数M和N。表示:这套系统最多能拦截 M 枚导弹,如果要拦截所有导弹最少要配备 N 套这种导弹系统。

Sample Input
300 250 275 252 200 138 245

Sample Output
5 2

*/

#include <stdio.h>

int main()
{
 int decv[20], decx[20];
 int height[20], mask[20];
 int i, j, M, N, count, left, max, idx;
 
 count = 0;
 while (scanf("%d", &height[count]) != EOF)
  count++;
  
 for (i=0; i<count; i++)
  mask[i] = 1;
  
 left = count;
 M = N = 0;
 while (left > 0)
 {
  max = 0;
  for (i=count-1; i>=0; i--)
   if (mask[i])
   {
    decv[i] = 1;
    decx[i] = -1;
    for (j=i+1; j<count; j++)
     if (mask[j])
     {
      if (height[i] >= height[j] && decv[i] < 1+decv[j])
      {
       decv[i] = 1+decv[j];
       decx[i] = j;
      }
     }
    if (max < decv[i])
    {
     max = decv[i];
     idx = i;
    }
   }
   
  if (M < max)
   M = max;
   
  left -= max;
  N++;
  i = idx;
  while (i != -1)
  {
   mask[i] = 0;
   i = decx[i];
  }
 }
 printf("%d %d/n", M, N);

 return 0;
}

导弹防御问题 动态规划 java

Description 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,...
  • ianmseveruslee
  • ianmseveruslee
  • 2013年10月04日 01:29
  • 782

Acm 导弹拦截

拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺...
  • Aceysx
  • Aceysx
  • 2016年08月20日 14:29
  • 789

acm79拦截导弹

拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮...
  • u010953266
  • u010953266
  • 2015年05月20日 14:31
  • 536

算法训练 拦截导弹(动态规划)

算法训练 拦截导弹   时间限制:1.0s   内存限制:256.0MB        锦囊1 贪心和动态规划算法。 问题描述   某国为了防御敌国的导弹袭击,发展出一种导弹拦截系...
  • yinghui_yht
  • yinghui_yht
  • 2017年02月24日 16:17
  • 726

SDNU 1040.导弹拦截【NOIP1999】【8月9】

导弹拦截 Description 某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都...
  • a995549572
  • a995549572
  • 2015年08月09日 19:10
  • 431

【bzoj3035】【codevs2490】导弹防御塔 二分+匈牙利 || 二分+dinic

题目描述 Description  Freda的城堡——   “Freda,城堡外发现了一些入侵者!”   “喵…刚刚探究完了城堡建设的方案数,我要歇一会儿嘛lala~”   “可是入侵者已经接...
  • LOI_DQS
  • LOI_DQS
  • 2016年03月02日 11:20
  • 782

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

/* 动态规划之路第二题; 求最长非递增数列条数; */ #include int main() { int n,i,j,x,m,dp[1005]; while(sca...
  • i_fuqiang
  • i_fuqiang
  • 2013年03月30日 20:46
  • 3211

动态规划的一个入门问题:导弹防御

动态规划入门,导弹防御问题。实际上就是求一个最长的非递增序列。我的解答如下: #define _CRT_SECURE_NO_DEPRECATE/*keep away the warning for s...
  • MayBeeMaybe
  • MayBeeMaybe
  • 2009年12月06日 11:04
  • 515

导弹拦截<DP><贪心><C++>

程序#include #include using namespace std; int main(){ int i=-1,a[1001],f[1000],max,min,tot=0; ...
  • YoDReAMfY
  • YoDReAMfY
  • 2015年11月02日 22:00
  • 1136

HDOJ 1257 最少拦截系统 贪心算法

最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S...
  • LiuJiuXiaoShiTou
  • LiuJiuXiaoShiTou
  • 2016年08月10日 10:06
  • 784
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TOJ1004 防御导弹问题
举报原因:
原因补充:

(最多只允许输入30个字)