zoukankan      html  css  js  c++  java
  • CodeForces 652C Foe Pairs

    只要计算每个位置最多能到哪个位置,累加即可,DP从后往前预处理一下每个位置到达的最远位置。

    有坑点:输入的时候如果同一个点出发的,需要保存最小值。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    const int maxn=4*100000+10;
    
    int n,m;
    int a[maxn],b[maxn];
    int p[maxn];
    
    int dp[maxn];
    
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            p[a[i]]=i;
        }
    
        for(int i=1;i<=n;i++) b[i]=0x7FFFFFFF;
    
        for(int i=1;i<=m;i++)
        {
            int li,ri;scanf("%d%d",&li,&ri);
            int fx=p[li];
            int fy=p[ri];
            if(fx>fy) swap(fx,fy);
            b[fx]=min(b[fx],fy);
        }
    
        dp[n]=b[n];
        for(int i=n-1;i>=1;i--)
        {
            if(b[i]==0x7FFFFFFF) dp[i]=min(dp[i+1],b[i]);
            else dp[i]=min(dp[i+1],b[i]-1);
        }
    
        long long ans=0;
    
        for(int i=1;i<=n;i++)
        {
            if(dp[i]==0x7FFFFFFF) ans=ans+(long long)(n-i+1);
            else ans=ans+(long long)(dp[i]-i+1);
        }
        printf("%lld
    ",ans);
    
        return 0;
    }
  • 相关阅读:
    语句
    1101 事务存储引擎触发器函数
    1029 作业
    1029 数据库表以及行的基本操作
    1023 笔记
    1022 作业
    1022 笔记
    1021 笔记
    查看pip已经安装过的包
    查看Python支持的.whl文件版本
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5322297.html
Copyright © 2011-2022 走看看