poj 1925 Spiderman
来源:互联网 发布:网络直播受众人群分析 编辑:程序博客网 时间:2024/06/04 03:56
题目大意:
给出n个建筑,每个建筑以两个数x,y表示,x代表它在横轴上的位置,y代表这个建筑的高度。所有建筑的高度都大于等于第一个建筑的高度。所有建筑输入顺序按照x,y从小到达的顺序排列。
蜘蛛侠在第一个建筑上,他要去最后一个建筑救女朋友。一直他每一次摇摆都会到关于建筑对称的位置。求到最后一个建筑的最小摇摆次数。
简单dp最重要的就是递推,后面的由前面推出来,首先找到要递推的数组,在进行递推。
//#include<bits/stdc++.h>#include <stdio.h>#include <string.h>#include <iostream>#include <math.h>using namespace std;int dp[1000009];struct node{ long long x,y;//注意这里是long long因为1e12会超过int}a[5005];int main(){int t;scanf("%d",&t);while(t--){ int n; scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%lld%lld",&a[i].x,&a[i].y); memset(dp,-1,sizeof(dp)); dp[a[1].x]=0; for(int i=2;i<=n;i++) { int dis=sqrt(a[i].y*a[i].y-(a[i].y-a[1].y)*(a[i].y-a[1].y)); for(int j=1;j<=dis;j++) { if(a[i].x-j<a[1].x)break; if(dp[a[i].x-j]==-1)continue; else {int tmp=min(a[i].x+j,a[n].x); if(dp[tmp]==-1)dp[tmp]=dp[a[i].x-j]+1; else dp[tmp]=min(dp[tmp],dp[a[i].x-j]+1);} } } printf("%d\n",dp[a[n].x]);} return 0;}
阅读全文
0 0
- poj 1925 spiderman
- poj 1925 spiderman
- POJ 1925 Spiderman
- POJ 1925 Spiderman
- POJ 1925 Spiderman
- poj 1925 Spiderman
- poj 1925 Spiderman dp
- POJ 1925 Spiderman 笔记
- poj 1925 Spiderman
- poj 1925 Spiderman
- [poj 1925] Spiderman 简单dp
- 【POJ 1925】 Spiderman(dp)
- POJ 1925 Spiderman (DP)
- POJ 1925 Spiderman(线性dp)
- 【poj 1925】Spiderman 题意&题解&代码(C++)
- POJ 3003 Spiderman’s workout
- pku 1925 Spiderman(换个循环嵌套顺序)
- 2397 Spiderman
- SSH免密码登录原理和配置
- 计算两个时间的差值
- AndroidPicker时间类的选择器
- 纯虚函数与抽象类
- 第一课记录 Java编程基础+Linux基础+行业前景
- poj 1925 Spiderman
- 解决调用api的response 中文乱码
- ReactiveSwift源码解析(九) SignalProducerProtocol延展中的Start、Lift系列方法的代码实现
- TencentSOTER总结
- 给Linux系统管理员准备的Nmap命令的29个实用范例
- 使用Log4j时,为什么要写if (log.isDebugEnabled()) 或 if (log.isInfoEnabled())
- 使用Spring PropertiesLoaderUtils读取properties属性文件
- 剑指offer:二叉树中和为某一值的路径
- 谷歌开源DeepLearn.js:可在网页上实现硬件加速的机器学习