题目大意:

给出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)相关推荐

  1. POJ 1947 Rebuilding Roads (树dp + 背包思想)

    题目链接:http://poj.org/problem?id=1947 一共有n个节点,要求减去最少的边,行号剩下p个节点.问你去掉的最少边数. dp[u][j]表示u为子树根,且得到j个节点最少减去 ...

  2. R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis

    R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis 目录 R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:d

  3. semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...

    Q1:matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢 多个纵轴数组分别是y1,y2,y3,横轴数组为x 命令为: semilogx(x,y1,x,y2,x,y3) 完了 Q2: ...

  4. 【学习笔记】有向无环图上的DP

    [学习笔记]有向无环图上的DP 手动博客搬家: 本文发表于20180716 10:49:04, 原地址https://blog.csdn.net/suncongbo/article/details/8 ...

  5. MATLAB中如何删除坐标上已画出的内容

    在某些坐标显示设计中,需要删除坐标系上已画出的内容,使得显示效果不显得冗余. 代码: %-------------------------------------------------------- ...

  6. 台式机dp接口_涨知识丨笔记本上Mini DP小接口大用途

    之前的文章我们向大家分别介绍了Type-C.HDMI的用途,今天我们继续为大家讲解笔记本另一个常见接口--Mini DP,究竟代表什么意思,有什么用处分别向大家一一说明. DP(DisplayPort ...

  7. poj 1925 Spiderman (dp)(疯狂TLE)

    题目链接:http://poj.org/problem?id=1925 题意:给出N个点,每个点都有两个数x.y,其中x表示点的横坐标,y表示纵坐标(建筑物的高度):给出的每个点都满足y值是大于等于起 ...

  8. poj 1088 滑雪(线性DP)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 81553   Accepted: 30437 Description ...

  9. 【状态dp】poj 1185 炮兵阵地(三维dp)

    poj 1185 炮兵阵地 http://poj.org/problem?id=1185 问题描述:给你一个n行m列的P-H矩阵,H表示不能安置炮兵,1可以安置炮兵,要求炮兵攻击管辖内不能在安置其他炮 ...

最新文章

  1. 调查:台湾上班族讨厌5种年会状况 最怕老板致词长
  2. 说实话,你的API接口在高并发面前不堪一击!
  3. ITK:将RGB图像转换为灰度图像
  4. c语言掌上通,计算机二级C语言掌上通在哪下载安装?计算机掌上通好用吗?
  5. ExtAspNet学习-利用AppBox框架快速创建项目(五)—完成项目含源代码
  6. 微信官方回应iOS 13.2频繁杀后台问题:建议先不升级
  7. 你知道云计算,但是你知道“云工作”吗?
  8. matlab变量全局化,matlab全局变量global
  9. 如何向PD充电器取电9V12V15V20V给电池或者智能家居供电快充?
  10. 第七次网页前端培训笔记(内置对象 对象 JS事件 输出)
  11. 设计模式之旅(三)--观察者模式
  12. Python Socket联机自动匹配双人五子棋(含登录注册系统与界面,数据库连接,可作结课作业,可用于学习)
  13. MCM/ICM(美国大学生数学建模竞赛)报名指南
  14. 如何找到脑电中眼电伪迹/EEG伪迹寻找/eeglab使用
  15. JavaSE有关String的一些API:charAt、indexOf、length、replaceAll、split、subString、trim、toUpLocase、valueOf......
  16. 【JavaScript】用户代理检测的局限性
  17. 大数据技术之 Hadoop概念讲解
  18. 数据结构总结---------非线性表(多叉平衡树)
  19. 2022-2027年中国电焊机行业市场全景评估及发展战略规划报告
  20. 新Apple TV透视

热门文章

  1. 视频 + PPT 下载 | 在线教育行业如何制定用户分层运营策略?
  2. 没有思路?一个数据案例,拯救你的产品优化切入点
  3. spring 监听器 IntrospectorCleanupListener简介
  4. ArcGIS 空间查询一例
  5. Powershell管理系列(十一)Exchange完全访问权限邮箱的设置
  6. POJ 3635 Full Tank?
  7. 苹果笔记本电脑电池保养细则
  8. 我现在编程方面的特别大的问题
  9. 纪念一下我画的第一个印刷电路板!
  10. SpringBoot 后台管理系统