zoukankan      html  css  js  c++  java
  • CodeForces 623B【预处理+DP】

    题意:
    给出n,a,b以及n个整数a1,a2…an, 可以对数组进行以下两种操作;
    (1)花费len*a的代价删除连续的len个数,len<|S|
    (2)花费b的代价将某一个a[i]加一或减一,每个数最多执行一次这样的操作;
    使得这个数组所有数的GCD>1;
    求最小花费
    思路:
    因为删除操作不能一下子删完,所以肯定会剩下一个,那么就会是头一个或者最后一个。所以剩下的数可能有a[1]-1,a[1]+1,a[1],a[n],a[n]-1,a[n]+1。预处理出所有数的质因子,枚举每个质因子之间默认就是整个数组的公约数,DP的时候(思路来自大哥):如果不用删,dp[i] = dp[i - 1];否则如果+1或-1可以的话,dp[i] = min(min(dp[i], dp[i - 1] + b), dp[i - 1] + a);

  • 相关阅读:
    Intern Day7
    Intern Day7
    Intern Day7
    Intern Day6
    Intern Day6
    Intern Day6
    Intern Day6
    Intern Day6
    萧萧远树疏林外,一半秋山带夕阳
    飞线
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934761.html
Copyright © 2011-2022 走看看