OJ 1787 Problem F 向量的運算

2021-10-06 20:37:08 字數 1960 閱讀 9480

編寫類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。最後還需要統計走過的邊的長度...