[二分图]导弹拦截

来源:互联网 发布:淘宝手机端卖家中心 编辑:程序博客网 时间:2024/06/07 14:51

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

  输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

分析
鬼畜题目*2
这题用n^3的二分图算法无法完成,但是答案正确
大概,这就是大佬的题纲吧?

#include <iostream>#include <cstdio>#include <cmath>#include <memory.h>using namespace std;int n,m,t,ans;int f[1001],a[1001];bool map[1001][1001],r[1001];int i,j,x,y;char c;bool fin(int a){    int i,d;    if (a==0) return true;    for (i=1;i<=n;i++)    if (map[a][i]&&!r[i])    {        d=f[i];f[i]=a;r[i]=1;        if (d==0||fin(d)) return true;        f[i]=d;    }    return false;}int main(){    while (1)    {        i++;        scanf("%d%c",&a[i],&c);        if (c=='\n') break;    }    n=i;    f[1]=1;    for (i=2;i<=n;i++)    {        f[i]=1;        x=1;        for (j=i-1;j>=1;j--)        if (a[i]<=a[j]&&x<=f[j])        x=f[j]+1;        f[i]=x;        m=max(m,f[i]);    }    printf("%d\n",m);    memset(f,0,sizeof(f));    ans=0;    for (i=1;i<=n-1;i++)    for (j=i+1;j<=n;j++)    if (a[i]>=a[j])    map[i][j]=1;    ans=n;    for (i=1;i<=n;i++)    {         memset(r,0,sizeof(r));        if (fin(i)) ans--;    }    printf("%d\n",ans);}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 复代文缬沙坦氢氯噻嗪片 依伦平厄贝沙坦氢氯噻嗪片 三嘉乡 三围 三围是哪三围 三围对照表 标准三围 女生三围 三围怎么量 女性三围 女人三围 三围标准 三围立体图 三围指什么 什么是三围 三围是指 三围尺寸 160标准三围 三围比例 女生的三围 标准三围女 三围女人 正常三围 三围指的是哪三围 三围是什么 沈卓盈三围 三围标准对照表 三围是指哪里 女生标准三围 关婷娜三围图片 女士三围标准量法图 魔鬼身材三围 胡梦媛胸围三围私房照 三围指什么意思 女性三围测量正确图解 三围黄金比例 三围比例多少算完美 惠若琪三围真大 女生三围黄金比例 三围比例怎样才算好 宁静三围图片