zoukankan      html  css  js  c++  java
  • 【CF713C】Sonya and Problem Wihtout a Legend(离散化,DP)

    题意:++ 
     

    思路:很久以前做过一道一模一样的

            严格递增很难处理,就转化为非严格递增处理

            设a[i]<a[j],i<j

               a[j]-a[i]>=j-i 

               a[j]-j>=a[i]-i

            即将a[i]转化为a[i]-i处理

            非严格递增情况下最终数列一定是由原先的数组成的,不可能出现某两个原数中间的值

            dp[i,j]为第i位,结尾为第j大的数,转化成这样的数列的最小费用

            dp[i,j]=min(dp[i-1,k]+abs(a[i]-b[j])) k<=j

            第一项用前缀和优化

     1 const oo=10000000000000;
     2 var dp,f:array[0..3000,0..3000]of int64;
     3     a,b:array[1..3000]of longint;
     4     n,i,j:longint;
     5     ans:int64;
     6 
     7 function min(x,y:int64):int64;
     8 begin
     9  if x<y then exit(x);
    10  exit(y);
    11 end;
    12 
    13 procedure qsort(l,r:longint);
    14 var i,j,t,mid:longint;
    15 begin
    16  i:=l; j:=r; mid:=b[(l+r)>>1];
    17  repeat
    18   while mid>b[i] do inc(i);
    19   while mid<b[j] do dec(j);
    20   if i<=j then
    21   begin
    22    t:=b[i]; b[i]:=b[j]; b[j]:=t;
    23    inc(i); dec(j);
    24   end;
    25  until i>j;
    26  if l<j then qsort(l,j);
    27  if i<r then qsort(i,r);
    28 end;
    29 
    30 begin
    31  //assign(input,'1.in'); reset(input);
    32 // assign(output,'1.out'); rewrite(output);
    33  readln(n);
    34  for i:=1 to n do
    35  begin
    36   read(a[i]);
    37   a[i]:=a[i]-i;
    38  end;
    39  b:=a;
    40  qsort(1,n);
    41  for i:=1 to n do
    42  begin
    43   for j:=0 to n do f[i,j]:=oo;
    44   for j:=1 to n do
    45   begin
    46    dp[i,j]:=abs(a[i]-b[j])+f[i-1,j];
    47    f[i,j]:=min(f[i,j-1],dp[i,j]);
    48   end;
    49  end;
    50  ans:=oo;
    51  for i:=1 to n do ans:=min(ans,dp[n,i]);
    52  writeln(ans);
    53  //close(input);
    54 // close(output);
    55 end.

             

  • 相关阅读:
    P4995 跳跳!
    P4306 [JSOI2010]连通数
    P1339 [USACO09OCT]热浪Heat Wave
    P2002 消息扩散
    P3388 【模板】割点(割顶)
    P1656 炸铁路
    P2863 [USACO06JAN]牛的舞会The Cow Prom
    P1516 青蛙的约会
    3.从尾到头打印链表
    2.替换空格
  • 原文地址:https://www.cnblogs.com/myx12345/p/6023103.html
Copyright © 2011-2022 走看看