poj 1925(坐标上的dp)
题目大意:
给出n个建筑,每个建筑以两个数x,y表示,x代表它在横轴上的位置,y代表这个建筑的高度。所有建筑的高度都大于等于第一个建筑的高度。所有建筑输入顺序按照x,y从小到达的顺序排列。
蜘蛛侠在第一个建筑上,他要去最后一个建筑救女朋友。一直他每一次摇摆都会到关于建筑对称的位置。求到最后一个建筑的最小摇摆次数。
解题思路:一开始以为很容易,dp[i]表示到达第i个建筑的最小摇摆次数,dp[i] = max(dp[k]+1),结果WA。。看了别人的思路才明白,这道题我想的太简单了。WA原因:未能解决后效性问题,假设有k和j,都满足dp[j] + 1 == dp[k] + 1,但两个位置摆动的幅度不同,对之后的状态会有影响。
所以这道题正解是dp[i]表示在x轴的i位置时的最小摆动次数。状态方程不变。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;const int maxn = 5005;
struct Node
{__int64 x,y;
}building[maxn];
int n,dp[1000005];int main()
{int t;scanf("%d",&t);while(t--){scanf("%d",&n);for(int i = 1; i <= n; i++)scanf("%I64d%I64d",&building[i].x,&building[i].y);memset(dp,-1,sizeof(dp));dp[building[1].x] = 0;for(int i = 2; i <= n; i++){int dis = sqrt(building[i].y * building[i].y - (building[i].y - building[1].y) * (building[i].y - building[1].y) + 0.5);for(int j = 1; j <= dis; j++) //dis表示离建筑i最远的距离。{if(building[i].x - j < building[1].x) break;if(dp[building[i].x - j] == -1) continue;int tmp = min(building[i].x + j,building[n].x);if(dp[tmp] == -1) dp[tmp] = dp[building[i].x - j] + 1;else dp[tmp] = min(dp[tmp],dp[building[i].x - j] + 1);}}printf("%d\n",dp[building[n].x]);}return 0;
}
poj 1925(坐标上的dp)相关推荐
- POJ 1947 Rebuilding Roads (树dp + 背包思想)
题目链接:http://poj.org/problem?id=1947 一共有n个节点,要求减去最少的边,行号剩下p个节点.问你去掉的最少边数. dp[u][j]表示u为子树根,且得到j个节点最少减去 ...
- R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis
R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis 目录 R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:d
- semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...
Q1:matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢 多个纵轴数组分别是y1,y2,y3,横轴数组为x 命令为: semilogx(x,y1,x,y2,x,y3) 完了 Q2: ...
- 【学习笔记】有向无环图上的DP
[学习笔记]有向无环图上的DP 手动博客搬家: 本文发表于20180716 10:49:04, 原地址https://blog.csdn.net/suncongbo/article/details/8 ...
- MATLAB中如何删除坐标上已画出的内容
在某些坐标显示设计中,需要删除坐标系上已画出的内容,使得显示效果不显得冗余. 代码: %-------------------------------------------------------- ...
- 台式机dp接口_涨知识丨笔记本上Mini DP小接口大用途
之前的文章我们向大家分别介绍了Type-C.HDMI的用途,今天我们继续为大家讲解笔记本另一个常见接口--Mini DP,究竟代表什么意思,有什么用处分别向大家一一说明. DP(DisplayPort ...
- poj 1925 Spiderman (dp)(疯狂TLE)
题目链接:http://poj.org/problem?id=1925 题意:给出N个点,每个点都有两个数x.y,其中x表示点的横坐标,y表示纵坐标(建筑物的高度):给出的每个点都满足y值是大于等于起 ...
- poj 1088 滑雪(线性DP)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 81553 Accepted: 30437 Description ...
- 【状态dp】poj 1185 炮兵阵地(三维dp)
poj 1185 炮兵阵地 http://poj.org/problem?id=1185 问题描述:给你一个n行m列的P-H矩阵,H表示不能安置炮兵,1可以安置炮兵,要求炮兵攻击管辖内不能在安置其他炮 ...
最新文章
- 调查:台湾上班族讨厌5种年会状况 最怕老板致词长
- 说实话,你的API接口在高并发面前不堪一击!
- ITK:将RGB图像转换为灰度图像
- c语言掌上通,计算机二级C语言掌上通在哪下载安装?计算机掌上通好用吗?
- ExtAspNet学习-利用AppBox框架快速创建项目(五)—完成项目含源代码
- 微信官方回应iOS 13.2频繁杀后台问题:建议先不升级
- 你知道云计算,但是你知道“云工作”吗?
- matlab变量全局化,matlab全局变量global
- 如何向PD充电器取电9V12V15V20V给电池或者智能家居供电快充?
- 第七次网页前端培训笔记(内置对象 对象 JS事件 输出)
- 设计模式之旅(三)--观察者模式
- Python Socket联机自动匹配双人五子棋(含登录注册系统与界面,数据库连接,可作结课作业,可用于学习)
- MCM/ICM(美国大学生数学建模竞赛)报名指南
- 如何找到脑电中眼电伪迹/EEG伪迹寻找/eeglab使用
- JavaSE有关String的一些API:charAt、indexOf、length、replaceAll、split、subString、trim、toUpLocase、valueOf......
- 【JavaScript】用户代理检测的局限性
- 大数据技术之 Hadoop概念讲解
- 数据结构总结---------非线性表(多叉平衡树)
- 2022-2027年中国电焊机行业市场全景评估及发展战略规划报告
- 新Apple TV透视