zoukankan      html  css  js  c++  java
  • 战争

    【题目描述】
    X国现在在与y国交战,x国有n个炮兵部队,y国有n个步兵部队。x国的司令想让炮兵部队用大炮轰y国的步兵部队。每个炮兵部队只能轰与这个部队编号相同的步兵部队。由于炮弹的轨道交叉很危险,所以司令不想让炮弹的轨道交叉。
    【输入格式】
    第1行一个数:n;
    第2行n个数:x国炮兵部队的编号。
    第3行n个数:y国步兵部队的编号。
    【输出格式】
    一个数:最多能轰到的步兵部队的数量。
    【样例输入】
    5
    3 1 5 8 6
    1 5 7 3 6
    【样例输出】
    3
    【样例解释】
    2号炮兵部队轰1号步兵部队;
    3号炮兵部队轰2号步兵部队;
    5号炮兵部队轰5号步兵部队;
    【数据范围】
    对于20%的数据:1≤n≤10;
    对于60%的数据:1≤n≤5000;
    对于80%的数据:所有炮兵部队的编号都不相同;所有步兵部队的编号都不相同;
    对于100%的数据:1≤n≤100000;所有的部队编号≤n;
    代码

    include<bits/stdc++.h>

    using namespace std;
    int n;
    int x[100001],y[100001],f[100001],d[100001];
    int main()
    {
    freopen("war.in","r",stdin);
    freopen("war.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    scanf("%d",&x[i]);
    for(int i=1;i<=n;i++)
    scanf("%d",&y[i]);
    for(int i=1;i<=n;i++)
    d[x[i]]=i;
    for(int i=1;i<=n;i++)
    {
    f[i]=max(f[i],f[i-1]);
    if(i>=d[x[i]])
    f[i]=max(f[i],f[d[x[i]]]+1);
    else
    f[d[x[i]]]=max(f[i]+1,f[d[x[i]]]);
    }
    printf("%d ",f[n]);
    }

  • 相关阅读:
    staticmethod classmethod
    Cache Buffer 区别
    Apache 各启动方式的差别
    网段,掩码
    容器镜像国内下载加速----借助阿里
    import 本质
    数字签名证书的事儿
    java中的sql语句中如果有like怎么写
    VMware+centos7克隆多个虚拟机
    使用Ajax轮询模拟简单的站内信箱(消息管理)功能
  • 原文地址:https://www.cnblogs.com/LJA001162/p/13398322.html
Copyright © 2011-2022 走看看