poj1925

来源:互联网 发布:淘宝网打折耐克女鞋 编辑:程序博客网 时间:2024/06/16 13:14

【题意】

给定n个塔的横坐标和高度,保证高度各不相同且横坐标递增,蜘蛛侠可以向一个塔射蛛丝然后荡到当前的相对位置,求最少要用多少次蛛丝

【输入】

多组数据,第一行一个t表示数据组数

每组数据第一行一个n

接下来n行为塔的横坐标和高度

【输出】

对于每组数据,输出一个数字表示最少要用多少次蛛丝


读英文题比较有难度,对于这道题来说,荡一次会到对于塔的轴对称位置,所以横坐标是不变的

所以dp,f[i]表示荡到横坐标为i所需蛛丝最小次数


program poj1925;var  ans,n,i,j,k:longint;  x,y:array [0..5001] of int64;  f:array [0..1000001] of longint;function max (a,b:longint):longint;begin  if a>b then exit(a)         else exit(b);end;function min (a,b:longint):longint;begin  if a<b then exit(a)         else exit(b);end;begin  read(k);  while k>0 do    begin      dec(k);      read(n);      for i:=1 to n do        read(x[i],y[i]);      fillchar(f,sizeof(f),63);      f[0]:=0;      ans:=f[1000001];      for i:=1 to n-1 do        for j:=1 to trunc(sqrt(y[i]*y[i]-(y[i]-y[1])*(y[i]-y[1]))) do          if x[i]-j>=0 then            if x[i]+j>=x[n] then ans:=min(ans,f[x[i]-j]+1)                            else f[x[i]+j]:=min(f[x[i]+j],f[x[i]-j]+1);      for i:=1 to trunc(sqrt(y[n]*y[n]-(y[n]-y[1])*(y[n]-y[1]))) do        ans:=min(ans,f[x[n]-i]+1);      if ans=f[1000001] then writeln(-1)                        else writeln(ans);    end;end.


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 玩游戏头疼想吐怎么办 游戏玩久了头疼怎么办 有3d眩晕症怎么办 玩游戏晕3d怎么办 梦幻西游亏的钱怎么办 普惠卡销户了钱存进去了怎么办 梦幻西游现金变储备了怎么办 孩子挣了钱存不下怎么办 电脑显示副本不是正版怎么办 斗战神师徒一个人删除角色怎么办 起业kx5防盗器不响怎么办 灌浆记录仪存盘满了怎么办 自首后发现无罪证据怎么办 中国劲酒过期了怎么办 玻尿酸流到眼皮怎么办 手指被胶带缠紫了怎么办 打玻尿酸不平整怎么办 孩子被老师体罚我该怎么办 孩子妈妈入狱了我该怎么办 机顶盒电视收不到台怎么办 跳芭蕾舞下面硬起来了怎么办 深情密码结局赵深深怎么办 宝宝头着地摔了怎么办 小孩头着地摔了怎么办 头朝下墩了脖子怎么办 两岁摔倒头着地怎么办 马桶大便冲不下去怎么办 脚丫吧里起泡痒怎么办 脚受伤后肿了怎么办 摔到了腿受伤了怎么办 骑车摔倒了肿了怎么办 生活大冒险老婆失踪了怎么办 手机qq图裂了怎么办 qq发的图裂了怎么办 抖音账号搬运多怎么办 别人搜不到我QQ怎么办 qq号被限制解封怎么办 买的桌子会晃怎么办 车子座椅皮坏了怎么办 裤子被椅子刮了怎么办 脚麻了被别人动怎么办