原创 BZOJ.PA2009 Cakes(三元環)

BZOJ.PA2009 Cakes(三元環) 思路:三元環的裸題。第一次寫還是稍微整理一下求三元環的思路。 1.無向圖(無重邊,無自環)轉化爲有向無環圖。 轉化的方法:對於任意邊edge(u,v),edge(u,v),edge(

原创 P1989 無向圖三元環計數

P1989 無向圖三元環計數 傳送門 思路:三元環模板題。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5,

原创 AtCoder Beginner Contest 172.F - Unfair Nim

AtCoder Beginner Contest 172.F - Unfair Nim 傳送門 思路:異或的性質+構造。 顯然題目背景是NimNimNim遊戲,我們目的是讓後手勝,顯然nnn堆石子異或爲000時,後手必勝。接下我們

原创 E1. Reading Books (easy version)(貪心)

E1. Reading Books (easy version)(貪心) 傳送門 思路:貪心。 有四種類型物品: 1.兩個人都能拿。 2.只有AAA能拿。 3.只有BBB能拿。 4.都不能拿。 顯然第4種不用考慮。 顯然根據貪心思

原创 F. Cyclic Shifts Sorting(模擬&排序)

F. Cyclic Shifts Sorting(模擬&排序) 傳送門 思路: 模擬冒泡排序,只不過兩個數交換,變成了三個數進行位置轉換。 顯然三個數可以順時針走,也可以逆時針走(順時針操作兩次等價於逆時針操作一次)(順時針操作兩

原创 LC.209. 長度最小的子數組

LC.209. 長度最小的子數組 方法0:O(n2)O(n^2)O(n2)的純暴力,這裏不講。 方法1:前綴和+二分。 考慮將其轉化爲具有單調性的前綴和數組,然後枚舉區間左端點進行二分找答案即可。 時間複雜度:O(nlogn)O(

原创 P1637 三元上升子序列(DP+離散化權值樹狀數組)

P1637 三元上升子序列(DP+離散化權值樹狀數組) 傳送門 思路:dp+dp+dp+離散化轉權值樹狀數組。 顯然可以設dp[i][j]dp[i][j]dp[i][j]爲長度爲iii以a[j]a[j]a[j]結尾的子序列的個數。

原创 公因子(gcd性質)

公因子(gcd性質) 傳送門 思路: gcdgcdgcd性質:gcd(a,b)=gcd(a,b−a)gcd(a,b)=gcd(a,b-a)gcd(a,b)=gcd(a,b−a) 推廣:gcd(a1,a2,…,an)=gcd(a1,

原创 E - NEQ(容斥原理&組合數學)

E - NEQ(容斥原理&組合數學) 傳送門 思路:容斥原理+組合數學。 顯然要求Ai≠BiA_i\neq B_iAi​​=Bi​且數組中元素互異。 所以對於數組AAA,我們要從mmm個數選nnn個數來全排列。 即個數爲AmnA

原创 LC.41. 缺失的第一個正數

LC.41. 缺失的第一個正數 因爲要求時間複雜度O(n),O(n),O(n),且不額外開空間。所以考慮在原數組上操作。 1.原地哈希:將原數組的下標作爲一個桶nums[i]nums[i]nums[i]表示是否裝有i+1i+1i+

原创 異或圖

異或圖 傳送門 思路: 簡單推一下: 當len=1len=1len=1時: 要滿足a[u]⊕a[v]=ka[u]\oplus a[v]=ka[u]⊕a[v]=k 當len>1len>1len>1時: ep:len=2ep:len=

原创 UVA1428 Ping pong(樹狀數組)

UVA1428 Ping pong(樹狀數組) 傳送門 思路:權值樹狀數組。 考慮枚舉每個位置作爲裁判對答案的貢獻。 顯然有兩種情況: 1.a[l]<a[i]<a[r],l<i<r1.a[l]<a[i]<a[r],l<i<r1.a

原创 P2408 不同子串個數(SA-LCP)

P2408 不同子串個數(SA-LCP) 傳送門 經典的SA−LCPSA-LCPSA−LCP題目。 顯然所有子串數目爲n(n+1)2\dfrac{n(n+1)}{2}2n(n+1)​。 因此我們只需知道重複的子串有多少個。 根據L

原创 51nod.1916 購物

51nod.1916 購物 傳送門 此題唯一需要主要的地方就是當角度大於180∘180^{\circ}180∘時,要用360∘−360^{\circ}-360∘−角度,選擇更短的路徑走。 #include<bits/stdc++.

原创 LeetCode.139. 單詞拆分

LeetCode.139. 單詞拆分 傳送門 思路:1.dpdpdp。設dp[i]dp[i]dp[i]前iii個字符的子串能否滿足條件。用setsetset儲存單詞,然後枚舉末尾的子串查找是否爲單詞。時間複雜度:O(n2)O(n^