1. 程式人生 > >hdu-5206(判斷空間正方形)

hdu-5206(判斷空間正方形)

題意:判斷空間四點是否構成正方形。

思路:判斷空間上4個點是否形成一個正方形方法有很多,這裡給出一種方法,在p2,p3,p4中列舉兩個點作為p1的鄰點,不妨設為pi,pj,然後判斷p1pi與p1pj是否相等、互相垂直,然後由向量法,最後一個點座標應該為pi+pj−p1,判斷是否相等就好了。

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
#define ll long long
int x[5],y[5],z[5];
int f(int a){
    return a*a;
}
bool f(int x,int y,int z,int a,int b,int c){
    if(x*a+y*b+z*c==0) return true;
    return false;
}
bool eq(int a,int b) {
    return a==b;
}
int main()
{
    int t,T;
    scanf("%d",&T);
    for(int t=1;t<=T;t++)
    {
        for(int i=1;i<=4;i++)
            scanf("%d%d%d",&x[i],&y[i],&z[i]);
        bool b=false;
        for(int i=2;i<4;i++)
        for(int j=i+1;j<=4;j++)
        {
            if(b) break;
            int k;
            for(int kk=2;kk<=4;kk++)
            if(kk!=i&&kk!=j) k=kk;
            int l1=f(x[i]-x[1])+f(y[i]-y[1])+f(z[i]-z[1]);
            int l2=f(x[j]-x[1])+f(y[j]-y[1])+f(z[j]-z[1]);
            if(l1!=l2) continue;
            if(!f(x[i]-x[1],y[i]-y[1],z[i]-z[1],x[j]-x[1],y[j]-y[1],z[j]-z[1])) continue;
            if(!eq(x[i]+x[j]-x[1],x[k])) continue;
            if(!eq(y[i]+y[j]-y[1],y[k])) continue;
            if(!eq(z[i]+z[j]-z[1],z[k])) continue;
            b=true;
        }
        if(b) printf("Case #%d: Yes\n",t);
        else printf("Case #%d: No\n",t);
    }
    return 0;
}


相關推薦

hdu-5206判斷空間正方形

題意:判斷空間四點是否構成正方形。 思路:判斷空間上4個點是否形成一個正方形方法有很多,這裡給出一種方法,在p2,p3,p4中列舉兩個點作為p1的鄰點,不妨設為pi,pj,然後判斷p1pi與p1pj是否相等、互相垂直,然後由向量法,最後一個點座標應該為pi+pj−p1,判斷

HDU-2108 判斷多邊形的凹凸

Problem Description 話說上回講到海東集團推選老總的事情,最終的結果是XHD以微弱優勢當選,從此以後,“徐隊”的稱呼逐漸被“徐總”所取代,海東集團(HDU)也算是名副其實了。 創業是需要地盤的,HDU向錢江肉絲高新技術開發區申請一塊

hdu 3478 Catch判斷奇數環

題目大意: 判斷任意時刻,任意一個點是否都可以到達。 解題思路:要讓從起點到任何點,那麼就要判斷是否存在奇數環,如果不存在奇數環,那麼偶數步數的才能到達的點就不符合題目要求,即無解。因此就可以轉變成判斷是否存在奇數環,而如果所有點組成一個奇數環,那麼所有

HDU 2112 HDU TodaySTL MAP + Djistra

stl eof dji int ble mes tin std n) 題目鏈接:HDU Today 立即集訓要開始,抓緊時間練練手,最短路的基礎題,第一次用STL的map 題目非常水,可是錯了N遍。手賤了。本題不優點理的就是把地名轉化為數字 #include

Railway HDU - 3394 點雙連通

struct bre bool cnblogs n) pri vector namespace origin Railway HDU - 3394 題意:一個無向圖,1求不在任何一個環裏的邊數;2求在不止一個環裏的邊數。 第一問明顯就是求橋,第二問,如果求出的某個點雙連

HDU 3001狀態壓縮DP

狀態壓縮 printf pri names urn 壓縮 puts -1 路徑 題意:遍歷所有的城市的最短路徑,每個城市最多去兩遍。將城市的狀態用3進制表示。 狀態轉移方程為 dp[NewS][i]=min( dp[NewS][i],dp[S][j]+dis[i][j])

Farm Irrigation HDU - 1198 並查集

i++ 灌溉 pan isp hdu color img 二進制表示 clu Farm Irrigation HDU - 1198 題意:給11種管道,問草地最少需要打多少個井才可以全部灌溉。 把每種管道的狀態用二進制表示一下,然後對每一塊草地,判斷能否和上面或者左面

Building Block HDU - 2818 並查集

freopen return 記錄 scanf splay else 一次 == gif Building Block HDU - 2818 題意:搬磚。。。每一次可以把a所在的那一堆放到b所在的那一堆上面,問第x號磚下面有幾塊磚。 記錄一下到根節點的距離(dw),以

hdu 6198矩陣快速冪

text cto http tdi mis nbsp style hdu mil number number number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav

keyspace notification空間通知

註冊 class 狀態壓縮 計劃 通知 會有 需求 消息 clas 一、需求分析: 設置了生存時間的Key,在過期時能不能有所提示? 如果能對過期Key有個監聽,如何對過期Key進行一個回調處理? 如何使用 Redis 來實現定時任務? 二、序言: 本文所

hdu 2544最短路徑

cst cstring while span code 最短路徑 bre sha nbsp 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #inclu

Monkey King HDU - 1512 左偏樹

for i++ 技術分享 void scanf ide lose pro %d Monkey King HDU - 1512 忽然看到左偏樹,挺簡單的,抄了個模板題練練 1 //左偏樹 2 #include <bits/stdc++.h>

hdu-4738tarjan割邊

CP bridge Go names iostream OS urn truct algo 題意:給你n個點,m條邊,邊有權值,問你最小的花費使圖不連通; 解題思路:就是求邊權最小的割邊,但這道題有坑點: 1、有重邊(橋的兩個點有重邊時,你去掉一條邊並沒什麽d用); 2、當

Can you answer these queries? HDU - 4027線段樹+技巧

fin 題意 ios fff PE sqrt += 長度 scan 題意:給一個數組序列, 數組長度為100000 兩種操作: 一種操作是將某一個固定區間所有數開方(向下取整) 另一種操作是詢問某個區間的所有數字之和。 由於數不超過263,因此開個七八次就變成1,由於只有

Oil Skimming HDU - 4185匹配板題

win back memory ogr printf source efi maximum ger Oil Skimming Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav

HDU 2050折線分割平面

des print 分享 several def while 要求 earch sele 傳送門: http://acm.hdu.edu.cn/showproblem.php?pid=2050 折線分割平面 Time Limit: 2000/1000 MS (Java/Ot

Theme Section HDU - 4763些許暴力

using map sin 匹配 mes sign lse ctype theme 題意:   求出最長公共前後綴 不能重疊 而且 這個前後綴 在串的中間也要出現一次 解析:   再明確一次next數組的意思:完全匹配的最長前後綴長度   求一遍next 然後暴力枚舉就

GCD HDU - 1695容斥原理

stdin false print ont 分享 typedef vector swa sed 要求從滿足gcd(x, y) = k的對數,其中x屬於[1, n], y屬於[1, m] gcd(x, y) = k ==>gcd(x/k, y/k) =1 x/k

hdu-1036格式題+精確度

color %d span string return show pre 鏈接 精確 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1036 心得:註意,要進行四舍五入的精確可以用+0.5實現。 #include<io

HDU - 5532Almost Sorted Array最長上升子序列

題意: 給出一個長度為n的數列,問刪除一個數後,剩下的數列能否成為一個非遞增或非遞減數列,可以輸出“YES”,否則輸出“NO”。 題解: 使用兩次最長上升子序列(LIS)。(抄了抄板子) 第一次,求非遞減序列的最大長度,不用做任何處理。 第二次,