zoukankan      html  css  js  c++  java
  • 【CodeForces】713 C. Sonya and Problem Wihtout a Legend

    【题目】C. Sonya and Problem Wihtout a Legend

    【题意】给定n个数字,每次操作可以对一个数字±1,求最少操作次数使数列递增。n<=10^5。

    【算法】动态规划+前缀和优化

    【题解】★令b[i]=a[i]-i,则a[i]递增等价于b[i]不递减

    这样做之后,显然数字加减只能到b[i]中出现的数字,而不会出现其它数字。

    令f[i][j]表示前i个数,第i个数字大小为c[j](第j大的数字)的最少操作次数。

    f[i][j]=abs(b[i]-c[j])+min{f[i-1][k]},k<=j

    令g[i][j]表示min{f[i][k]},k<=j,则有:

    g[i][j]=min{ g[i][j-1],abs(b[i]-c[j])+g[i-1][j] }

    初始g[0][i]=0。

    复杂度O(n^2)。

    #include<cstdio>
    #include<cstring>
    #include<cctype>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<set>
    #include<vector>
    #include<algorithm>
    #define ll long long
    #define lowbit(x) x&-x
    using namespace std;
    int read(){
        char c;int s=0,t=1;
        while(!isdigit(c=getchar()))if(c=='-')t=-1;
        do{s=s*10+c-'0';}while(isdigit(c=getchar()));
        return s*t;
    }
    int min(int a,int b){return a<b?a:b;}
    int max(int a,int b){return a<b?b:a;}
    int ab(int x){return x>0?x:-x;}
    //int MO(int x){return x>=MOD?x-MOD:x;}
    //void insert(int u,int v){tot++;e[tot].v=v;e[tot].from=first[u];first[u]=tot;}
    /*------------------------------------------------------------*/
    const int inf=0x3f3f3f3f,maxn=3010;
    
    int n,a[maxn],b[maxn];
    ll f[maxn][maxn];
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)a[i]=read()-i,b[i]=a[i];
        sort(b+1,b+n+1);
        int x=0;
        for(int i=1;i<=n;i++)f[x][i]=0;
        for(int i=1;i<=n;i++){
            x=1-x;f[x][0]=1ll<<60;
            for(int j=1;j<=n;j++)f[x][j]=min(f[x][j-1],ab(b[j]-a[i])+f[1-x][j]);
        }
        printf("%lld",f[x][n]);
        return 0;
    }
    View Code
  • 相关阅读:
    17种正则表达式
    网页滚动条的处理
    My GIS 2012
    spring 的mvc项目启动报错:java.util.zip.ZipException
    ASP.NET读取XML文件的方法
    urlrewritingnet重写的几点
    ASP.NET 伪静态页面的实现
    URL重写组件UrlRewriter 在Windows XP下的运用
    我们搞web开发,总结一些常用功能源码
    图片二进制存取
  • 原文地址:https://www.cnblogs.com/onioncyc/p/8305090.html
Copyright © 2011-2022 走看看