給定一張含有 \(n\) 個點的無向完全圖,其中 \(m\) 條邊是白邊,其餘是黑邊。
現在需要你求出同色的三元環(或者說,三角形)的個數。
同色三元環?不認識?
就是讓你求這個圖裡面有幾個三條邊是同色的三角形
1 \(o(nm)\) 暴力,然鵝t了
2 數學法(逃)
同色三角形其實難算,那麼我們可以算異色三角形,用三角形的總個數減去它的一半
如果乙個點可以連出白色邊\(x\)條就可以連出黑色邊\(n-x-1\)條
所以不同色三角形的個數就是\(x*(n-1-x)\)
用乙個 vector 儲存白色邊上點的資訊
之後1-n列舉,套上公式:
sum+=(v[i].size()*(n-v[i].size()-1));
n個點可以構成的三角形個數就是 \(c^n_3\)
它的值就是\(n*(n-1)*(n-2)/(1*2*3)\)
再減去\(sum\)的一半即可
ac code:
#includeusing namespace std;
#define long long ll;
vectorv[323333];
int n,m,a,b;
ll sum;
int main()
for(int i=1;i<=n;i++)
sum+=(v[i].size()*(n-v[i].size()-1));
cout<<(ll)(n*(n-1)*(n-2)/6-sum/2);
return 0;
}
最後要注意的是開 longlong 洛谷 P1101 題解
這道題可以用深搜 回溯 來寫,相信大部分人都是這麼想的,但是有些人可能在一些地方饒了半天,所以這裡就貼一下我的思路,個人覺得自己的很好懂,除了tx和ty那裡,但是tx和ty的那種用法對於輸出路徑的題目一般很實用 這個算是比較簡單的吧,題目裡給出了具體要找的字串,我們要做的就是對它進行8個方向的搜尋,...
洛谷 P1169 題解
請你在乙個黑白矩陣中選出乙個長方形 含正方形 和正方形的子矩陣,使得所有相鄰的點顏色不一樣。矩陣大小 兩條邊都 2000 2000 2 000輸入 3 31 0 1 0 1 0 1 0 0輸出4 6解釋給定矩陣 正方形 長方形 我的控制台是萌萌噠 ffc0cb粉色 乙個小技巧 如果您的控制台是像我的...
題解 洛谷 P3332
題目描述 權值線段樹套線段樹板子題 首先觀察題目,判斷為二維偏序問題 操作1為區間修改,所以一定是外部線段樹維護權值,內部線段樹維護所在區間,否則時間複雜度 qwq 為方便查詢,雜湊時我採用雜湊每個數的相反數的方法將求第k大轉換為求第k小 詢問可以直接想到的做法就是二分答案,查詢1 ans在區間內的...