摘要: 题意:娱乐场里面的那种打鼹鼠的游戏机。如下图。在n*n的游戏机上,每个整点都可能出现鼹鼠,鼹鼠分为m批出现。每一批鼹鼠出现的时候,如果锤子在点(i,j),则锤子可以移动到以(i,j)为圆心,d为半径的圆内任何一个整点,且移动路径(包括首尾)上的所有鼹鼠都会被打。(注意,锤子可以移动出游戏机的范围)。初始时,锤子可以在任何点,给定n,m,d和所有鼹鼠出现的时间和位置,问所有鼹鼠都出现之后,最多能打到多少鼹鼠。解法:就是一个普通的dp,设d[i][j][k]表示第i批鼹鼠出现后,锤子停留在(j,k)的情况下,能打到最多的鼹鼠数量。 状态转移方程为if(ok(j, k, x1, y1) d[i].. 阅读全文
posted @ 2013-11-22 15:14 Plumrain 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 题意:如下图所示,蜘蛛侠在某个位置,他女朋友在另一个建筑(WestTower)上,蜘蛛侠每次可以吐丝到附近的建筑顶端,然后摇摆到关于该建筑物对称的位置。只要荡到横坐标 >= X(WestTower)的位置,就能爬上WestTower。问在不碰到地的情况下,最少要吐多少次丝。解法:由于蜘蛛侠的纵坐标始终没变所以不需要记录纵坐标。对于每个建筑物,由于不能碰地所以只有一定的范围内能够吐丝到该建筑物并且移动,对每个建筑物,设这个范围为(l[i], r[i])。(l[i]和r[i]易求) 设d[j]表示到达横坐标j所需要最少次数。枚举每个建筑物i,d[j] = min(d[j-k] + 1)(l[ 阅读全文
posted @ 2013-11-22 14:15 Plumrain 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题意:如下图,有一种n*m的网格,每个格子里可能分别有两种矿物a[i][j]和b[i][j],在网格的上边和左边分别有这两种矿物的收集站。对每个网格,可以建立向上或者向左的传送带,将该格所有矿物传送。但是,传送带不能变方向,否则变方向之前的矿物会从传送带上掉落下来。比如,矿物如果从(i,j)传送到(i,j-1),再传送到(i-1,j-1),就会掉落。问最终能收集到的矿物最多为多少(两种矿物数量之和)。解法:首先,对于第(i,j)格,如果它向左传送,则应该让(i,0), (i,1)...(i,j-1)都向左传送。向上同理。 设d[i][j][0]表示第(i, j)格向左传送的情况下,矩形(0.. 阅读全文
posted @ 2013-11-22 13:52 Plumrain 阅读(250) 评论(0) 推荐(0) 编辑