首页 > 代码库 > 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男人八题