赞
踩
给你
n
n
n个卡片,第
i
i
i个卡片能够让你可以跨步为
l
i
l_i
li,选择的花费的是
c
i
c_i
ci.
然后你现在在坐标
0
0
0点,问你最小的花费使得你能够到达格子里的每个坐标。
就是选择一个子集 S S S满足 g c d ( l i ) = 1 , i ∈ S gcd(l_i)=1,i \in S gcd(li)=1,i∈S 使得 得到最小 ∑ S c i \sum_{S}c_i ∑Sci.
可以利用类似同于最短路的思路做。令 d p [ i ] dp[i] dp[i]为当前选择的子集 g c d = i gcd=i gcd=i的最小花费。再用一个桶装当前可能 g c d gcd gcd.每次新增一个物品时与所有可能的 g c d gcd gcd求个 g c d gcd gcd即可然后刷表 d p dp dp即可。
给你n个数
a
i
a_i
ai,有多少种选择方法使得选出的数的gcd=1.
n
,
a
i
≤
3000
n,a_i \leq 3000
n,ai≤3000
这题比上面那题还容易点,可以直接令 d p [ i ] [ j ] dp[i][j] dp[i][j]为前 i i i个数,且选择出的子集 g c d = = j gcd==j gcd==j的方案。第 i i i个数选或不选计数转移即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。