物理题 很简单的 当时网络赛的时候却却没有出。。 水得不行了
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
const int MAXN = 1005;
struct peak
{
double x, y;
}p[MAXN];
struct potato
{
double x ;
double y;
double v, w;
}po[MAXN];
int n , m , w;
int main()
{
int Case;
scanf("%d" , & Case );
for ( int k = 1 ; k <= Case; k ++ )
{
scanf("%d%d%d" , &n , &m , &w );
for ( int i = 0 ; i < n; i ++ )
scanf("%lf%lf",&p[i].x , &p[i].y );
for ( int i = 0 ; i < m ;i ++ )
scanf("%lf%lf%lf", &po[i].x,&po[i].v, &po[i].w );
for ( int i = 0 ; i < m ;i ++ )
{
int j = 0 ;
while ( p[j].x < po[i].x && j < n )
j++;
if ( po[i].x == p[j].x )
po[i].y = p[j].y;
else
po[i].y = p[j].y + ( p[j-1].y - p[j].y ) * (po[i]. x - p[j].x ) / (p[j-1].x - p[j].x);
//cout << po[i] .y << endl;
}
double ans = 0.0;
for ( int i = 0 ; i < m; i ++ )
{
double temp = 2*20*(-p[0].y + po[i].y) +po[i].v * po[i].v;
if ( temp > 0 )
{
temp = sqrt(temp);
if ( ans < temp )
ans = temp;
}
}
for ( int i = 0 ; i < n; i ++ )
{
double temp = 2*20*( p[i].y - p[0].y );
if ( temp > 0 )
temp = sqrt ( temp );
//cout << temp << endl;
if ( ans < temp )
ans = temp;
}
printf("Case %d: ",k);
printf("%.2lf\n", ans );
}
return 0;
}