传送门:HustOJ
传送门:CodeForce
给你个数组,允许进行两种操作各最多一次。 第一种操作,删除某一区间内所有数。注意不能删全部的数。代价是个数*a。 第二种操作,对某些数进行+1或-1。注意可以部分加1部分减1。代价是每个数b。 问你使剩下数公约数大于1所需花费的最小代价。
%%%
由于不能全删完,所以至少会有一个数留着,这个数肯定会是头一个或最后一个,最大公约数肯定是在选中的这个数最后状态中的一个约数,而我们只要先枚举这个数是多少(一共6种),然后枚举他的素因子,用dp顺推即可。
{
dp[MAXN][3];//第二位 0表示没开始删 1表示正在删 2表示结束了删
注意状态转移的方式。
新闻热点
疑难解答