zoukankan      html  css  js  c++  java
  • 模考题line

    题目描述(哈哈哈我把题改的面目全非)

    sln和zx是坐标轴上两个有位置的点,她们手拉手连成了一条线。已知坐标,ypq线的一端,她想跳过这条线只有一种跳法,就是跳到自己关于线的对称点上,请问她应该骗rax站在哪里,才能刚好跳到她头上。哈哈哈哈哈哈哈我要笑疯了,rax看到了千万别打我

    输入1 

    0 0 1 1

    1

    1 0

    输出1

    0.000 1.000

    输入2

    0 1 2 5

    2

    1 1

    3 10

    输出2

    -0.600 1.800

    5.400 8.800

    这是正经的题解:我用了相似,然后导呀导呀就导出来了用了

    正解好像用了向量集合?其他人好像用了解析集合·

    大家不要相信下面这些代码,在洛谷至今上只过了一个点......

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
        freopen("line.in","r",stdin);
        freopen("line.out","w",stdout);
        double ax,ay,bx,by,cx,cy;
        int n;
        scanf("%lf%lf%lf%lf",&ax,&ay,&bx,&by);
        double a = (ay - by) / (bx - ax),b = 0 - ay - a * ax;//求解析式 
        double x = abs(ax - bx),y = abs(ay - by),xie = sqrt(x * x + y * y);    //各边长度比 
        scanf("%d",&n);
        for(int i = 1;i <= n;i++)
        {
            scanf("%lf%lf",&cx,&cy);
            double dx,dy,juli;
            juli = abs(a * cx + cy + b) / sqrt(a * a + 1);//点到直线距离 
            double xx = (0 - b - cy) / a,yy = 0 - b - a * cx;//决定横纵坐标是增大还是减小 
            if(xx > cx){
                dx = cx + 2 * juli * (y / xie);
            }
            else{
                dx = cx - 2 * juli * (y / xie);
            }
            if(yy > cy){
                dy = cy + 2 * juli * (x / xie);
            }
            else{
                dy = cy - 2 * juli * (x / xie);
            }
            printf("%0.3f %0.3f",dx,dy);
        }
        return 0;
    }

    想我考试时竟然没删freopen前的斜杠,然后就爆零了......

  • 相关阅读:
    高性能网站优化——兼容
    高性能网站优化——开发
    leetcode刷题日记: 19.删除链表的倒数第k个节点
    大数据处理技术学习
    <java复习>返回可变对象引用的get方法要点
    <C++网络编程随笔>常用Socket函数总结
    <leetcode每日一题>数组中的第K个最大元素
    <leetcode每日一题>二叉树的LCA查找
    codeforce round615 div3 B
    暑假作业竟然如此芳香(hdu4145枚举+贪心)
  • 原文地址:https://www.cnblogs.com/yupeiqi/p/8463322.html
Copyright © 2011-2022 走看看