原创 Codeforces Round #723 (Div. 2)C1+C2. Potions(dp/貪心)

傳送門 題目大意:n瓶藥水,從左到右開始喝,喝完一瓶健康值+a[i],(a[i]有可能是負數),要保證每喝完一瓶藥水後健康值不能爲負數。 問最多喝幾瓶。 題解: 解法一:DP O(n^2) dp[i][j]表示前i瓶藥水喝j瓶的最大健康值,

原创 AcWing 252. 樹(點分治)

題目大意:給定n個點的樹,求樹上路徑長度不大於k的路徑條數 題解:點分治模板 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using

原创 AcWing 145. 超市(優先隊列)

題目大意:有n個商品,每個商品有pi利潤和di過期時間,每天只能賣一件商品,求最大利潤。 題解: 將商品按過期時間從小到大排序。 建一個堆,裏面存可以賣的商品,每加入一個商品後,如果heap.size()>di,說明已經超出該商品的保質期,

原创 AcWing 146. 序列(優先隊列)

(這排版我真搞不懂,明明我這邊是OK的) 題目大意: 給定 m 個序列 每個包含 n個非負整數。 現在我們可以從每個序列中選擇一個數字以形成具有 m個整數的序列。 很明顯,我們一共可以得到 n^m 個這種序列,然後我們可以計算每個序列中的數

原创 AcWing 144. 最長異或值路徑(Trie)

題目大意:一棵樹,邊有權值。現在定義路徑的值爲路徑中邊的權值的異或值,求異或值最大的路徑。 題解: 從a到b路徑的異或值=a到根結點的異或值^b到根結點的異或值。 這樣求出每個點到根結點的異或值,然後從n個數中選出異或值最大的數就可以。 把

原创 AcWing 142. 前綴統計(Trie)

題目大意:給定n個字符串,然後給出m次詢問,問n個字符串中有多少串是當前串的前綴?   題解:Trie樹模板題   #include<iostream> #include<cstdio> #include<cstring> #includ

原创 AcWing 143. 最大異或對(Trie)

題目大意:從n個數中選出兩個數異或,求最大的異或值。 1≤N≤10^50≤Ai<2^ 31 題解: 首先考慮暴力的寫法 for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) {

原创 acwing 137. 雪花雪花雪花(hash暴力/最小表示法)

題目大意:給N個串,問有無兩個字符串有相同的循環同構串 題解: 方法一:hash+暴力判重 令每個字符的和與所有字符的積的和爲字符串哈希值,相同同構串的哈希值一定相等。 然後哈希值相同串暴力判重。 方法二:兩個字符串的循環同構則最小表示法

原创 Acwing 138. 兔子與兔子(hash)

題目大意:字符串hash模板題 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define

原创 Acwing139. 迴文子串的最大長度(hash+二分)

題目大意:n個字符串,求每個字符串的最長子迴文串。 迴文串:正着讀和反着讀是相同。 題解:二分最長迴文串的長度,hash判斷是否是迴文串。 #include<iostream> #include<cstdio> #include<cstr

原创 【學習筆記】最小表示法

一、最小表示法解決的問題:找到一個字符串的循環同構串中字典序最小的那個串。 二、字符串的循環同構: 比如長度爲5字符串“abcde”,它的5個循環同構串有: abcde,bcdea,cdeab,deabc,eabcd;其中字典序最小的串爲

原创 AcWing 140. 後綴數組(hash+二分)

  題目大意:給一個字符串,假設長度爲n,那麼它就有n個後綴,求排名爲i的字典序,並求出排序中相鄰串的最長公共前綴。   題解:hash+二分(假設字符串從1開始) 如果將n個後綴字符串用sort排序,需要比較nlogn次,每次比較最差需要

原创 E Sort String(字符串hash)

Eddy likes to play with string which is a sequence of characters. One day, Eddy has played with a string S for a long

原创 P2114 [NOI2014] 起牀困難綜合症(貪心+位運算)

鏈接 題目大意: 要求在0--m之間的數,經過n次位運算後,最大是多少? 題解: 位運算的特點是,每一位是獨立的,不存在進位和借位。 假設x∈[0,m],經過位運算後得到的結果最大,爲z 位運算的特點 各個位互不影響先用各位都爲0和各位都爲

原创 Acwing 90. 64位整數乘法(O(1)快速乘)

求 a 乘 b 對 p 取模的值。 輸入格式 第一行輸入整數a,第二行輸入整數b,第三行輸入整數p。 輸出格式 輸出一個整數,表示a*b mod p的值。 數據範圍 1≤a,b,p≤1018 輸入樣例: 3 4 5 輸出樣例: 2