swun 1184

解题思路:这题其实还是有点麻烦的,思路要清晰,关键是要找出中间的那个点。

已知不共线的三点:A(x1,y1),B(x2,y2),C(x3,y3),
平行四边形ABCD的点D的坐标由对角线AC与BD互相平分得D(x1+x3-x2,y1+y3-y2).
注意;当顺序未定时有3种不同的情况.(此题已经找出中间点,顺序就已经确定)

#include<cstdio>
int main()
{
    double x1, x2, x3, x4, x, y1, y2, y3, y4, y;
    while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4))
    {
        int cnt = 0; //cnt用来标记出重复出现的点。
        //说明第三个点是重复出现的点。
        if((x1 == x3 && y1 == y3) || (x2 == x3 && y2 == y3)) x = x3, y = y3, cnt = 3;
        //说明第四个点是重复出现的点。
        if((x1 == x4 && y1 == y4) || (x2 == x4 && y2 == y4)) x = x4, y = y4, cnt = 4;

        if(cnt == 3)    //第三个点是重复出现的点。
        {
            //第一个点是重复出现的点,则执行这一步。
            if(x == x1 && y == y1) printf("%.3lf %.3lf\n", x2+x4-x, y2+y4-y);
            //第二个点是重复出现的点。
            else printf("%.3lf %.3lf\n", x1+x4-x, y1+y4-y);
        }
        else
        {
            if(x == x1 && y == y1) printf("%.3lf %.3lf\n", x2+x3-x, y2+y3-y);
            else printf("%.3lf %.3lf\n", x1+x3-x, y1+y3-y);
        }
    }
    return 0;
}

时间: 2024-11-03 05:37:13

swun 1184的相关文章

JNUOJ 1184 - 科学计数法

题目链接:http://jnuacm.club:8080/oj/problem_show.php?pid=1184 花了半个小时,强行拗出一长串又臭又长的代码,把所有情况都分了(该分的,不该分的--都分了--) 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #define MAX 120 5 char num[MAX],d[MAX],b_[10],b; 6 int main() 7 { 8 int

九度oj 题目1184 二叉树遍历

原题链接:http://ac.jobdu.com/problem.php?pid=1184 简单的二叉树重建,遍历. 如下: 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<vector> 5 struct node{ 6 char key; 7 node *ch[2]; 8 node(char d) : key(d) { ch[0] = ch[1] = NULL;

LightOJ 1184 - Marriage Media 【二分图最大匹配】

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1184 根据一些要求建图即可 代码: #include <iostream> #include <algorithm> #include <set> #include <map> #include <string.h> #include <queue> #include <sstream> #includ

POJ 1184 聪明的打字员

简直难到没朋友. 双向bfs + 剪枝. 剪枝策略: 对于2--5位置上的数,只有当光标在对应位置时通过swap ,up,down来改变,那么当当前位置没有达到目标状态时,left和right无意义. 好了,只剪掉这里就过掉了... 还有比较炫酷的方法实现枚举720种排列...然后状压什么的...功力不够完全看不懂.... #include <algorithm> #include <iostream> #include <cstring> #include <c

SWUN OJ 1749(DP + 线段树)

SWUN 1749 题目链接 思路:lis一样的状态转移方程,不过要利用线段树去维护,每次更新到i,相应的维护i - d之后的区间的最大值,不断转移即可 代码: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define lson(x) ((x<<1)+1) #define rson(x) ((x<<1)+2) const int N

SWUN 1763

SWUN 1763 题目链接 思路:先把序列排序,然后对于某个最佳答案,肯定有一个位置值是不用变的,那么只要能高效维护每个位置的答案即可,这个只需要从左往右和从右往左各扫一遍,记录下左边和右边答案即可,第二遍扫的时候更新一下最大值即可 代码: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; const int N =

hihoCoder #1184 : 连通性二&#183;边的双连通分量(边的双连通分量模板)

#1184 : 连通性二·边的双连通分量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老师找到了小Hi和小Ho,希望他俩帮忙. 老师告诉小Hi和小Ho:根据现在网络的情况,我们要将服务器进行分组,对于同一个组的服务器,应当满足:当组内任意一个连接断开之后,不会影响组内服务器的连通性.在满足以上条件下,每个组内的服务器数量越多越好. 比如下面这个例子,一共有6个服务器和7条连接: 其中包

#1184 : 连通性二&#183;边的双连通分量

贴板子.求割边.将>改为>=即可判断u是否为割点. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int INF=0x3f3f3f3f; const int maxn=20008; const int maxm=100008; struct fuck{ int u,v,next; bool ban; }edge[maxm<<1];

九度oj 二叉树遍历 题目1184

 题目描述: 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的先序遍历字符串: ABC##DE#G##F### 其中"#"表示的是空格,空格字符代表空树.建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果. 输入: 输入包括1行字符串,长度不超过100. 输出: 可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格. 每个输出结果占一行. 样例输入: abc##de#g