28分求助
查看原帖
28分求助
122700
TAUZERO鬼楼主2020/9/19 20:29
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
const int NR = 105;
const int MR = 2e4 + 10; 
int f[NR][3];
int n;
int l[NR],r[NR];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&l[i],&r[i]);
    f[1][0]=1e9,f[1][1] = r[1]-1;
    for(int i=2;i<=n;i++){//f[i][0]表示停在左侧f[i][1]表示停在右侧
        f[i][0]=min(f[i-1][0]+abs(l[i-1]-r[i]),f[i-1][1]+abs(r[i-1]-r[i]))+r[i]-l[i]+1;
        f[i][1]=min(f[i-1][1]+abs(l[i-1]-l[i]),f[i-1][1]+abs(r[i-1]-l[i]))+r[i]-l[i]+1;

    }
    for(int i=1;i<=n;i++){
        for(int j=0;j<=1;j++)
        {
            printf("%d ",f[i][j]);
        }
        puts("");
    }
    printf("%d",min(f[n][0]+n-l[n],f[n][1]+n-r[n]));


    return 0;
}
2020/9/19 20:29
加载中...