POJ 1925 Spiderman G++动态规划没掌握

xiaoxiao2021-02-28  87

#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; //英语 看博友分析 抄博友程序 动态规划 没掌握 struct nod{ long long x; long long y; }da[5010]; int dp[2000010]; int main() { int T; cin>>T; while(T--) { int n; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d",&da[i].x,&da[i].y); } memset(dp,0x3f,sizeof(dp)); dp[da[0].x]=0;// for(int i=1;i<n;i++) { for(int j=da[i].x-1;j>=da[0].x;j--)//抄博友分析 从横坐标 j 能跳过建筑物 i { long long dis=(da[i].x-j )*(da[i].x-j )+(da[i].y-da[0].y)*(da[i].y-da[0].y); if(dis>da[i].y*da[i].y) { break;//重要 不然超时 } dp[2*da[i].x-j]=min(dp[2*da[i].x-j],dp[j]+1);//抄博友程序 } } int ans=0x3f3f3f3f; for(int i=da[n-1].x;i<=da[n-1].x*2;i++)//抄博友程序 { ans=min(ans,dp[i]); } if(ans==0x3f3f3f3f) { cout<<-1<<endl; }else { cout<<ans<<endl; } } return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-51777.html

最新回复(0)