原创 Two Triangles FZU - 2270

通過叉積判斷邊的相對位置,(類似極角排序),就可以判斷兩個三角形是否可以通過旋轉重合。 https://blog.csdn.net/w326159487/articl #include<iostream> #include<stdio.

原创 後綴數組+主席樹

https://vjudge.net/problem/Gym-102302K 後綴數組去重,主席樹查詢區間內在l,r之間的數的個數 #include<iostream> #include<stack> #include<algorith

原创 區間異或最大值 線性基+貪心

題意:在l,r之間的元素中選擇任意,使異或和最大。 #include<bits/stdc++.h> #include <cstdio> #include <vector> #include <algorithm> using names

原创 組合數取模

模數大於n時直接用階乘逆元求就行,否則可以用Lucas求。 模數較小時預處理階乘優化。 #include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f #defin

原创 FFT模板 [ZJOI2014]力

多項式有多種表示方法,比如係數表示,點值表示。FFT就是實現快速在這兩種表示法之間轉換。多項式在點值時進行多項式乘法是o(n)的,在係數表示法中,多項式相乘中兩個係數序列會進行卷積,但是n^2的,所以轉化成點值進行計算可以優化卷積。 #

原创 Split The Tree HDU - 6504

題意:給你一顆樹,每個點有權值,每個樹的的價值是這顆樹上點權不同的個數,現在你可以去掉一條邊變成兩棵樹,問這兩顆樹的價值和最大是多少。 思路:去掉一條邊相當於選取了整顆樹的一個子樹,子樹所有節點dfs序是連續的,就是求連續區間不同數的個數

原创 distance on the tree 樹上主席樹

題意:求樹上兩點之間邊權不超過k的邊的個數。 思路:樹剖之後建主席樹,或者直接利用父子關係直接建樹。 #include<bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std

原创 三分查找

類似於二分查找,三分搜索法也是比較常用的基於分治思想的高效查找方法。但是和二分不同,二分只適用於單調函數,比如常用的對單調遞增或單調遞減的一個序列中的某一個元素進行查找,三分卻突破了這種限制,可以用於左邊遞增右邊遞減或者相反的,這麼一類函

原创 P2530 [SHOI2001]化工廠裝箱員

狀態:f[i][j][k][m] : 前i個物品 當前手中有j個"A" k個"B" m個"C"時的最小卸貨次數 很明顯對於第i個物品可以 1:)只取出來 暫時不裝進去 前提就是當前手中貨物數量<10 2:)取出來後 裝進去 沒有前提 所以

原创 Codeforces Round #533 (Div. 2)E. Helping Hiasat

題意:求一個無向圖的最大獨立集,就是求其補圖的最大團。 最大獨立集 = 補圖的最大團 #include<iostream> #include<queue> #include<map> #include<string.h> #includ

原创 A - Aragorn's Story 樹剖

樹上區間更新和查詢,原理就是把樹拆成幾條鏈,dfs序是連續的,所以就把他們強加到線段樹上,進行更新和查詢。 進行兩遍dfs,第一遍把深度,重兒子,父節點等一些信息找出,然後第二遍dfs時記錄每個節點的鏈頭,遍歷時先走重兒子,把樹上的每個節

原创 Codeforces Round #532 (Div. 2)E. Andrew and Taxi

題意:給一個有向圖,反轉某些邊讓這個圖無環,反轉的花費是反轉的所有邊中權值最大的,求花費最小的方式,輸出花費和需要反轉的邊。 思路:把某個邊反轉其實就相當於把這條邊刪除,二分答案,用拓撲排序判斷是否又環,最後刪完了之後是ACG,求每個點的

原创 D. GCD Counting 樹形dp

題意:一棵樹,每個節點有權值,找一條gcd不唯一的最長路,輸出長度。 思路:gcd不唯1,即兩個數有相同的素因子,dp[i][j]就表示以i個節點通過這個數的第j個素因子最長的子鏈,然後路的長度就是在遍歷的時候選兩個最長的相加,dfs遍歷

原创 String painter HDU - 2476

題意:給兩個字符串,通過塗色把第一個串構造成第二個串,每次將一個連續區間塗成一種顏色,後塗會覆蓋之前的。 思路:之前做過類似的是相當於在空串上構造第二個串,現在類似的可以同樣進行那個操作,然後再一次區間dp,去求最小次數。 在得到了一個s

原创 筱瑪的字符串

https://ac.nowcoder.com/acm/contest/342/E 題意:給一個匹配的括號串,首先選擇一個區間(可以不選),讓字符反轉,然後隱藏其中一些位置,變成?,讓你還原,問可以還原多少種情況。 思路:dp[i][j]