zoukankan      html  css  js  c++  java
  • wenbao与cf最大上升序列3(改变给定序列的值变为严格递增序列)

    1 如果 a[i] < a[i+1];  那么a[i] <= a[i+1] +1; 
    2 也可以写为 a[i] - i <= a[i+1] - (i + 1); 
    3 令 b[i] = a[i] - i;  则 b[i] <= b[i+1];

    http://codeforces.com/contest/714/problem/E

    通过加减变为严格单调递增序列,求最小值

    大神代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 long long f[12345],a[12345],b[12345],n;
     4 int main()
     5 {
     6     cin>>n;
     7     for(int i=0;i<n;i++)
     8     {
     9         cin>>a[i];
    10         a[i]-=i;
    11         b[i]=a[i];
    12     }
    13  
    14     sort(b,b+n);
    15  
    16     for(int i=0;i<n;i++)
    17     {
    18         for(int j=0;j<n;j++)
    19         {
    20             f[j]+=abs(a[i]-b[j]);
    21             f[j]=(j && f[j-1]<f[j]) ?f[j-1]:f[j];
    22         }
    23     }
    24     cout<<f[n-1]<<endl;
    25 }

    只有不断学习才能进步!

  • 相关阅读:
    Linux进程管理
    GitHub
    MySQL存储过程
    MySQL自定义函数
    MySQL运算符和内置函数
    js类型检测
    防止SQL注入的方法
    PDO数据库抽象层
    PHP操作MySQL的常用函数
    第二周
  • 原文地址:https://www.cnblogs.com/wenbao/p/5873675.html
Copyright © 2011-2022 走看看