zoukankan      html  css  js  c++  java
  • POJ 1380 坐标旋转

    题意:

    问第二个矩形能不能放进第一个矩形中。

    题解:

    暴力旋转第二个矩形,判断左右、上下是否同时小于第一个矩形

    当然,数学推导也可以,挺简单的相似神马的胡搞就行~

    View Code
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <algorithm>
     6 #include <cmath>
     7 
     8 #define PI 3.141592653589793
     9 #define EPS 1e-7
    10 
    11 using namespace std;
    12 
    13 struct PO
    14 {
    15     double x,y;
    16 }sma,big;
    17 
    18 inline int doublecmp(double x)
    19 {
    20     if(x>EPS) return 1;
    21     else if(x<-EPS) return -1;
    22     return 0;
    23 }
    24 
    25 inline PO rotate(PO &a,double hd)
    26 {
    27     PO c;
    28     c.x=a.x*sin(hd)-a.y*cos(hd);
    29     c.y=a.x*cos(hd)+a.y*sin(hd);
    30     return c;
    31 }
    32 
    33 inline bool go()
    34 {
    35     scanf("%lf%lf%lf%lf",&big.x,&big.y,&sma.x,&sma.y);
    36     double du=0.0;PO c;
    37     while(du*2<PI)
    38     {
    39         c=rotate(sma,du);
    40         c.x+=2.0*sma.y*cos(du);
    41         if(doublecmp(big.x-c.x)>=0&&doublecmp(big.y-c.y)>=0) return true;
    42         if(doublecmp(big.y-c.x)>=0&&doublecmp(big.x-c.y)>=0) return true;
    43         du+=0.002;
    44     }
    45     return false;
    46 }
    47 
    48 int main()
    49 {
    50     int cas; scanf("%d",&cas);
    51     while(cas--)
    52     {
    53         if(go()) printf("Escape is possible.\n");
    54         else  printf("Box cannot be dropped.\n");
    55     }
    56     return 0;
    57 }
  • 相关阅读:
    GROK解析正则表达式
    夜神模拟器和Hbuilder连接
    使用notepad++批量在每行首尾添加内容
    mybatis-plus
    laravel controller 层---数据库操作
    laravel controller 层---请求参数传递
    laravel controller 层---数据验证
    laravel model 层
    laravel 博客收藏,转载篇
    laravel 用法大全开始
  • 原文地址:https://www.cnblogs.com/proverbs/p/2924591.html
Copyright © 2011-2022 走看看