题意与分析

中文题就不讲题意了。我是真的菜,菜出声。

不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置;二,所在的时间。还有吗?没有了,所以设dp[i][j]" role="presentation">dp[i][j]dp[i][j]为第i秒在j处的最大馅饼数,有:

dp[i][j]=dp[i][j]=max(dp[i−1][j−1],dp[i−1][j],dp[i−1][j+1])+f[i][j]" role="presentation">dp[i][j]=dp[i][j]=max(dp[i−1][j−1],dp[i−1][j],dp[i−1][j+1])+f[i][j]dp[i][j]=dp[i][j]=max(dp[i−1][j−1],dp[i−1][j],dp[i−1][j+1])+f[i][j]

是不是很显然?然后就去快乐做题了对不对?

你就会想:从小到大推还是从大到小推?

从大到小推。因为如果从小到大推,无法反映出一次只能移动一格的特性;相反,从大到小推只需要最后直接求dp[0][5]即可。

这题说明了对于状态转移方程的思考一定要彻底,不能想当然。

代码

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std; template<typename T>
T read()
{
T tmp; cin>>tmp;
return tmp;
} int f[100005][12],dp[100005][12],n; int main()
{
QUICKIO
while(cin>>n)
{
if(!n) break;
ZERO(f); ZERO(dp);
// dp[i][j] 第i秒在第j米处能获得的最多馅饼数目
// dp[i][j] = max(dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1])+f[i][j]
int maxsec=0;
rep(i,1,n)
{
int x,y; cin>>x>>y;
f[y][x]++;
maxsec=max(y,maxsec);
}
// cout<<maxsec<<endl;
per(i,maxsec-1,0)
{
//cout<<i<<":\n";
rep(j,0,10)
{
//if(i==1 && j<4 && j>6) continue;
int maxans=-1;
if(j-1>=0) maxans=max(f[i+1][j-1],maxans);
maxans=max(f[i+1][j],maxans);
if(j+1<=10) maxans=max(f[i+1][j+1],maxans);
f[i][j]=maxans+f[i][j];
}
/*
rep(j,0,10)
{
cout<<f[i][j]<<" ";
}
cout<<endl;
*/
}
cout<<f[0][5]<<endl;
}
return 0;
}

最新文章

  1. PJAX的实现与应用
  2. App软件开发的10个常用技巧
  3. 外联css及js的使用
  4. Java 基本数据类型长度
  5. input使用javascript限制输入带小数的数字
  6. VirtualBox是什么
  7. linux之间连接—使用SSH
  8. 分享我写的IOCP:源码+思路
  9. Ext 怎么发ajax请求
  10. Java对象序列化的使用和定制
  11. MDX Query - mdx的基本语法和概念
  12. 【QT】QApplication简介
  13. [转]Rancher 快速上手指南操作(1)
  14. 为什么要编译Linux内核?
  15. CentOS7+Nginx设置Systemctl restart nginx.service服务
  16. HDU 1203 I NEED A OFFER!(01背包+简单概率知识)
  17. JS-移动端判断上拉和下滑
  18. Leetcode模拟题篇
  19. maven 继承关系和聚合
  20. lintcode 二叉树后序遍历

热门文章

  1. MyBatis框架(6)动态sql
  2. 1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别
  3. 以EF形式操作mysql数据库
  4. Kindeditor图片上传Controller
  5. Node.js http等模块 笔记05
  6. jquery固定位置浮动
  7. python 基于udp 连接
  8. 使用nuget过程中一些问题总结
  9. 摩尔吧 FPGA培训
  10. Oracle恢复误删数据