bob有\(n(1 \leq n \leq10000)\)個點的樹,每條邊有乙個邊權\(d(0\leq d \leq 233)\),現在定義\(dis(i,j)\)代表第\(i\)個點到第\(j\)個點的距離模2。問有多少\((i,j,k)\)滿足\(dis(i,j) = dis(i,k) = dis(j,k)\)。
首先,一棵樹中不存在\((i,j,k)\),使得\(dis(i,j) = dis(i,k) = dis(j,k) = 1\)。隨便選乙個點為根,記\(dis(root, u) = 0\)的個數為\(cnt_x\),\(dis(root, u) = 1\)的個數為\(cnt_y\),那麼滿足\(dis(i,j) = dis(i,k) = dis(j,k) = 0\)的\((i, j,k)\)個數為\(cnt_x^3 + cnt_y^3\)。注意\(i = j = k\)是合法的!
const int n = 10005;
int n, x, y;
vectorg[n];
void dfs(int u, int p, int deep)
void addedge(int u, int v, int w)
int main()
dfs(1, 1, 0);
cout << 1ll * x * x * x + 1ll * y * y * y << endl;
return 0;
}
牛客 小凱的疑惑(a b a b)
小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意 輸入資料保證存在小凱無法準確支付的商品。輸入描述 輸入資料僅一行,包含兩個正整數 a 和 b...
牛客 小y的盒子
稍加觀察就會發現,4n 1就是題目要的答案。至於為什麼,看官方的題解。不過這個n非常的大,用正常快速冪解決不了。這道題我學到的就是解決冪非常大的情況。sol1 之前好像做過一道類似的題目,想不出來,在群裡看到發了乙個名詞叫十進位制快速冪。然後根據這個名字自己意淫通了。一般的快速冪是把冪當成二進位製用...
牛客網 最小的k個數
輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,解法1 利用最大堆,o nlogk vectorgetleastnumbers solution vectorinput,int k vectorheap input input....