#include<iostream> #include<vector> #include<algorithm> #define x first #define y second #define pll pair<int,int> using namespace std; int main() { vector<pll>v; //n为跳板的个数 int n=0; //m为终点的位置 int m=0; //ans是到终点要步行的最短路程 int ans=0; //dis保存当前位置可以到达的最的位置 int dis=0; int i=0; cin>>n>>m; v.resize(n); pll temp; for(int i=0;i<n;++i) { cin>>temp.x; cin>>temp.y; v[i]=temp; } for( i=0;i<v.size();++i) { if(dis>=m) //通过跳板跳出终点了 { cout<<ans<<endl; exit(0); } else if(dis<v[i].x) //跳不到这一个跳板了,必须走路了QAQ { ans+=v[i].x-dis; dis=v[i].x+v[i].y; //走了一点路,现在我可以到这么远了啦 } else { if(v[i].x+v[i].y>dis) //偶哟,跳到这个跳板再起跳可以更远! { dis=v[i].x+v[i].y; } } } if(i==v.size()&&dis<m) //(lll¬ω¬),没有跳板了还没到终点,得走会儿了。 { ans+=m-dis; cout<<ans<<endl; exit(0); } cout<<ans<<endl; return 0; }
标签:跳板,temp,int,胡同,define,include,P1779,dis From: https://www.cnblogs.com/lhf123/p/17425249.html