編寫類vector,用於表示乙個向量。顯然:它有三個資料成員,假定均為int型別的量,表示3個方向上的分量。
定義其無參建構函式,初始化三個分量為0。
3.定義帶參建構函式,用於初始化向量。
過載+、-、、《和》運算子。其中「+」和「-」不改變運算元的值,只是返回運算結果;「」實現兩種乘法,包括數乘及叉積。
輸入有多行,第一行m>0,表示有m個測試用例,之後有m行。每行包括7個部分:前3個表示乙個向量的三個分量,中間3個表示另乙個向量的三個分量,最後乙個為乙個int型別的數。
分量的順序按照i、j、k給出。
輸出見樣例。其中:如果某個分量為0,則不輸出該數量,除非所有分量均為0,則輸出0。如果某個分量為負數,則不應輸出其前面的「+」號。
711
1111
3123
3214
-1-2
-3-3
-2-1
10123
-123
5123
1-23
6123
12-3
9123
-1-2
-35
vect+vec2 n*vec1 vec1*vec2
2i+2j+
2k 3i+
3j+3k 0
4i+4j+
4k 4i+
8j+12k -
4i+8j-4k-
4i-4j-
4k -
10i-
20j-
30k -
4i+8j-
4k4j+
6k 5i+
10j+
15k -
6j+4k
2i+6k 6i+
12j+
18k 12i-
4k2i+
4j 9i+
18j+
27k -
12i+6j0
5i+10j+
15k 0
int
main()
return0;
}
/**
* oj 作業九
* 2023年6月5日07:55:51
*/#include
#include
#include
#include
#include
using
namespace std;
class
vector
friend istream &
operator
>>
(istream &is, vector &v)
friend ostream &
operator
<<
(ostream &os,
const vector &v)
if(v.z)
if(v.x ==
0&& v.y ==
0&& v.z ==
0) cout <<
"0";
return os;
}friend vector operator+(
const vector&v1,
const vector&v2)
friend vector operator-(
const vector&v1,
const vector&v2)
vector operator*(
const vector& v)
vector operator*(
const
int f)
};
bzoj1787 緊急集合
對於三個點x y和 z,設a lca x,y b lca x,z 不妨假設a的深度比 b大,則b是 a的祖先 因為a是 x的祖先,b也是 x的祖先 首先將集合點定在a,考慮 a向每乙個方向調整,a向父親調整會讓x和 y答案加一,a向靠近 x y同理 的兒子調整,會讓y和 z答案加一,向其他兒子調整,...
尤拉路徑 HDU1787 詳解)
給定乙個無向圖 g,一條路徑經過圖 g的每一條邊 且僅經過一次 這條路徑稱為尤拉路徑 eulerian tour 如果尤拉路徑的起始頂點和終點是同一頂點 則稱為尤拉迴路 eulerian circuit 尤拉路徑演算法 無向圖g 存在尤拉路徑的充要條件 圖 g是連通的 且至多除兩個點外 可以為0個 ...
bzoj 1787 Meet 緊急集合
給出bzoj鏈結。這個題還是求最近公共祖先的問題。而該題不同於別的題,它是需要求三個點的最近公共祖先。我們就需要求出三個點兩兩之間的lca。而這三個lca之間,必有兩個是相同的。如果兩個點相同,那另一點就是那三個點的lca。如果三個點都相同,那麼該點就是那三個點的lca。最後還需要統計走過的邊的長度...