「暑期训练」「基础DP」免费馅饼(HDU-1176)
题意与分析
中文题就不讲题意了。我是真的菜,菜出声。
不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置;二,所在的时间。还有吗?没有了,所以设dp[i][j]" role="presentation">dp[i][j]dp[i][j]为第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;
}
「暑期训练」「基础DP」免费馅饼(HDU-1176)的更多相关文章
- 免费馅饼 HDU - 1176 基础dp
/*题都是有一个状态转移方程式 , 只要推出方程式就问题不大了,首 先对于gameboy来说他下一秒只能 在0~10这十一个位置移动, 而对于1~9这九个位置来说他可以移动(假设他现在的位置为x)到x ...
- dp之免费馅饼
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 「暑期训练」「基础DP」 Common Subsequence (POJ-1458)
题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态 ...
- 「暑期训练」「基础DP」FATE(HDU-2159)
题意与分析 学习本题的时候遇到了一定的困难.看了题解才知道这是二重背包.本题的实质是二重完全背包.二维费用的背包问题是指:对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这两种代价:对于每种 ...
- 「暑期训练」「基础DP」 Monkey and Banana (HDU-1069)
题意与分析 给定立方体(个数不限),求最多能堆叠(堆叠要求上方的方块严格小于下方方块)的高度. 表面上个数不限,问题是堆叠的要求决定了每个方块最多可以使用三次.然后就是对3n" role=& ...
- 「暑期训练」「基础DP」 Piggy-Bank (HDU-1114)
题意与分析 完全背包问题. 算法背包九讲里面都有提到过,我自己再说下对完全背包的理解. 为什么01背包中遍历状态从VV到00?考虑一下基本方程$dp[i][j]=max(dp[i-1][j-w[i]] ...
- 「暑期训练」「Brute Force」 Bitonix' Patrol (CFR134D1D)
题意 有n" role="presentation">nn个站点,排成圆形,每站间距m" role="presentation"> ...
- 「暑期训练」「Brute Force」 Multiplication Table (CFR256D2D)
题意 给定一矩阵M" role="presentation">MM,Mij=ij" role="presentation">Mi ...
- 「暑期训练」「Brute Force」 Optimal Point on a Line (Educational Codeforces Round 16, B)
题意 You are given n points on a line with their coordinates $x_i$. Find the point x so the sum of dis ...
随机推荐
- EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】
传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...
- 2spring注解:@Lazy,@Conditional,@import,FactoryBean接口
大致的工程内容也来源于上一篇博文! https://www.cnblogs.com/Mrchengs/p/10108603.html 1.@Lazy懒加载 懒加载:针对单实例的 单实例bean,默认在 ...
- HIDU 2094
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2094 产生冠军 Time Limit: 1000/1000 MS (Java/Others) M ...
- shrio的rememberMe不起作用
在移植项目.每次重启服务器需要登录.比较麻烦.于是研究下shrio的功能. rememberMe大概可以满足我的需求.但是跟着网上配置了.不起作用...... 于是乎查看源代码拉.java的好处... ...
- JasperReport4.6生成PDF中文
Web项目中PDF显示中文 本人无奈使用JasperReport4.6,因为这本书(好像也是唯一的一本国内的介绍JasperReport的书), 选择"文件"→New命令,弹出一个 ...
- React Native从零到一搭建开发环境
React Native从零到一搭建开发环境 ReactNative环境搭建 安装Homebrew 安装rvm 安装nvm 安装node 安装react-native-cli 安装watchman i ...
- Swift_类和结构体
Swift_类和结构体 点击查看源码 struct Resolution { var width = 0 var height = 0 } class VideoMode { var resoluti ...
- Mac 字典扩充包 包括 app
https://pan.baidu.com/s/1htKUaiWZFZJGO6w9azsbsg
- Linux 学习第三天
一.常用命令 1.diff A.diff -q 源文件 目标文件 (快速比较文件是否相同) 2.ifconfig.nmcli (查看配置信息) 命令输入注意: Windows 查看网卡配置信息输入命 ...
- 关于iconfont symbol引入字体的方式
1,下载想要使用的图标集合 2,下载的压缩包解压到将要使用的目录下: 3,使用: 4,效果