HDU 1155 Bungee Jumping 物理
题目大意:给出k:绳子的劲度系数,l:绳长,s:桥高,w:邦德的质量,g取9.81。绳子弹力=形变量*劲度系数。如果落地速度大于10 则摔死,小于0则飘着空中。
题目思路:根据能量守恒得知:落地的动能=重力势能减少量-绳子弹力做功。如果l>s,则绳子不做功。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<cstdio> #include<stdio.h> #include<cstdlib> #include<cmath> #include<iostream> #include<algorithm> #include<cstring> #include<vector> #include<queue> #define INF 0x3f3f3f3f #define MAX 1000005 using namespace std; int main() { double k,l,s,w,we,g=9.81,v;//we为落地式的动能 while(scanf("%lf%lf%lf%lf",&k,&l,&s,&w),k+l+s+w) { if(l > s)//如果绳子大于桥的高度绳子的弹力不会做功,落地时动能增量等于重力势能的减少量 { v=sqrt(2*g*s); } else//否则,落地时的动能等于重力势能的减少量-绳子弹力做功。绳子的平均弹力=平均形变量*k { we=w*g*s - ((s-l)/2.0)*(s-l)*k; if(we < 0)//若果落地动能小于0,肯定在落地前速度就为0了,也就飘着了半空中 { printf("Stuck in the air.\n"); continue; } v=sqrt((we*2)/w); } if(v > 10) printf("Killed by the impact.\n"); else printf("James Bond survives.\n"); } return 0; }