code forces 404B Marathon 题目链接:http://codeforces.com/problemset/problem/404/B
题目大意:跑马拉松,有人给递水。场地是一个边长为a米的正方形(逆时针跑),每隔k米就喝一瓶水,总共有n瓶水。问每次喝水的位置坐标。
题目分析:先把k减到一圈以下,然后就能保证不TLE了。随意模拟即可。
code:
#include<stdio.h> int main() { double a,d,posx,posy,dd; int n,con; while(scanf("%lf%lf%d",&a,&dd,&n)!=EOF) {//1右2上3左4下 con=1; posx=posy=0; while(dd>=4*a)dd-=4*a; d=dd; while(n--) { switch(con) { case 1: { if(posx+d<=a) { posx+=d; printf("%.10f %.10f\n",posx,posy); d=dd; } else { d-=a-posx; posx=a; n++; con++; } break; } case 2: { if(posy+d<=a) { posy+=d; printf("%.10f %.10f\n",posx,posy); d=dd; } else { d-=a-posy; posy=a; n++; con++; } break; } case 3: { if(posx-d>=0) { posx-=d; printf("%.10f %.10f\n",posx,posy); d=dd; } else { d-=posx; posx=0; n++; con++; } break; } case 4: { if(posy-d>=0) { posy-=d; printf("%.10f %.10f\n",posx,posy); d=dd; } else { d-=posy; posy=0; n++; con=1; } break; } } } } return 0; }PS:第八组样例是大数,不处理k就TLE
code forces 404B Marathon,布布扣,bubuko.com
原文:http://blog.csdn.net/blogs_of_slicer/article/details/21572855