首页 > 代码库 > poj1737~poj1744——ltc男人八题
poj1737~poj1744——ltc男人八题
准备开刷这充满神秘感的八道题,虽然我不是男的。。。
完成度:3/8
2016.7.~? poj1742 Coins
题意:给你n种面值的硬币和每种硬币的数量。求1~m中有多少个可以用这些硬币组成。
算法:dp
解析:dp[i][j]表示用前i中硬币组成j时第i种硬币剩余的枚数(若不能组成j则为-1)
考虑以下四种情况:
(1)若dp[i-1][j]>=0,则无需第i种硬币,为c[i]
(2)若val[i]>j,面值太大,则为-1
(3)若dp[i][j-val[i]]<=0,无法组成j,则为-1
(4)若(1)(2)(3)均不满足,为dp[i][j-val[i]]-1
另外,此题n*m较大,因为dp[i][]只与dp[i-1][]有关,所以用滚动数组即可
2016.8.30 poj1743 Musical Theme
题意:给你一串数,求其中最大的不连续的子数串长度,若ans<5,则输出-1。两个数串相似当且仅当,其中一个数串加上相同的数后等于另一个数串。
算法:后缀数组
解析://十几天前刷的后缀数组入门题,现在有些模糊了==
首先,先把数串转化成相邻两数差的形式,然后将height[]分类,用h[i]>=h[i-1]-1的公式。
时间复杂度为O(n*logn)
2016.9.11 poj1740 A New Stone Game
题意:有n堆石子,每次每人从其中一堆中取走若干石子,在将这些石子分配到其他堆中(不用全分完),不能取则输。A先B后,问A的输赢情况。
算法:博弈论
解析:根据对称性,若石子两两配对,则后取者胜;否则,先取者胜。
证明:若堆数为奇数,将石子从小到大排序,并(1,2),(3,4)...配对。取完最多石子的那堆,并将石子分配在1,3,5...堆中。若堆数为偶数,取最多石子的那一堆使得石子数等于最少的那一堆,并作相同操作。
poj1737~poj1744——ltc男人八题