原创 牛客網 CDMA【構造+思維】

題意:讓你構造一個n*n的矩陣,滿足任意兩行相乘爲0. 思路:當n爲2時,矩陣爲 1  1    , 然後我們考慮用m構造出2m的解                                          1  -1   #

原创 牛客網-Chessboard 【組合數】

今天CSL又來了TL。他看到TL有一個非常大的棋盤和許多玻璃球。所以他有個主意。他對TL說:“你有多大的棋盤......和我一起玩遊戲怎麼樣?我會給你,你可以在棋盤上選擇一個任意大的方形區域(假設你選擇一個方形區域)和在每個正方形上放置一

原创 牛客網 XOR【線性基】

題目鏈接:https://ac.nowcoder.com/acm/contest/881/H 題意:給你一個集合,問你所有異或和爲0的子集的大小。 思路: 首先我們可以組成一個基底大小爲r,那麼剩下n-r個數就在非基底,對這n-r個元素

原创 牛客網 KM and M 【類歐幾里得】

思路:由於n,m的範圍很大,我們考慮二進制位,通過來判斷該二進制位。 看別人的博客講的類歐幾里得打開鏈接 。 #include <bits/stdc++.h> using namespace std; typedef __int12

原创 HDU 6662 - Acesrc and Travel【樹形DP + 換根】

Acesrc和旅行   問題描述 Acesrc是南京大學着名的旅遊者之首。在這個暑假期間,他和張和劉一起將前往香港。有ñ 香港的景點,和 n - 1連接這些景點的雙向觀光巴士路線。他們決定乘公共汽車去一些景點。 然而,張和劉對這些景點有

原创 牛客網 All men are brothers【並查集+組合數】

題意:給你n個人,m次詢問,每次讓兩個人加入一個並查集,然後問你能挑出來多少對4個人都不屬於一個集合。 思路:肯定要用並查集來維護,考慮每次合併兩個人消除的影響,假設兩個集合分別爲x,y人,res爲選擇兩個陌生人的數, 那麼ans = a

原创 牛客網 xor 【線段樹+線性基】

題目鏈接:https://ac.nowcoder.com/acm/contest/884/B 題意: 給你n個集合,m次詢問,每次問你[l, r] 的集合能否表示x。  所以我們用線段樹來維護線性基的交,又多了個板子,,, #inc

原创 牛客網 Hilbert Sort 【思維】希爾伯特曲線

題目鏈接:https://ac.nowcoder.com/acm/contest/890/E 題意:第i個圖形是由4個(i-1)的圖形拼成的,左上角要經過主對角線,右上角的要經過次對角線。 第四個的話應該是這種的(拼一塊的有點亂) 所

原创 牛客網 Pair【數位DP】

思路:我們可以找出來不滿足條件的,然後用總數減去不滿足的就行。數位DP還不是太瞭解,先記錄下來。 #include <bits/stdc++.h> using namespace std; typedef long long ll;

原创 牛客網 Symmetrical Painting 【思維+枚舉】

題意:給你n個矩形,第i個矩形的左下角左邊是(i - 1, Li), 右上角是(i, Ri), 讓你找到一條對稱軸,使得能關於這條對稱軸對稱的矩形面積最大。 思路:我們考慮枚舉每個矩形的上界,下界和對稱軸作爲答案的對稱軸,那麼接下來我們

原创 牛客網 Is Today Friday? 【蔡勒公式】

不,這不是星期五:(唐唐喜歡星期五,他已經編制了n天的列表,這些都是星期五!這個列表中的每個日期都形成爲“yyyy / mm / dd”,其中“yyyy”是一個四位數代表年份的數字,“mm”是代表月份的兩位數字,“dd”是代表日期的兩位數

原创 牛客網 Knapsack Cryptosystem【思維】

題意:給你一個n個元素的數組,給你一個sum,讓你找到數組的子集使得子集元素和等於sum,保證只有一個解決方案。 n<=36, sum < 9e18 思路:爆搜肯定是不行的,有一個很巧妙的思路,就是將數組分成兩個區域,18個元素我們完全可

原创 牛客網 Find the median 【線段樹區間】

https://ac.nowcoder.com/acm/contest/887/E  題目鏈接 題意:每次給你增加一個區間[l, r] ,問你增加後新集合的中位數。 思路:對x,y離散化,右端點加一,有篇博客解釋很詳細:點開鏈接, 記錄下

原创 牛客網 Big Integer 【循環節】

 思路:本題有個巧妙的思路是在對d進行質因數分解時,我們考慮固定j,這時候只需要找到滿足條件的i就行了。並且k<=30, 所以我們只需要枚舉30以內的就行了。   #include <bits/stdc++.h> using nam

原创 HDU 6625-three arrays【01字典樹 + 思維】

題意:給你兩個數組,讓你可以任意匹配兩個數組進行異或,使得異或後的字典序最小。 思路:對兩個數組分別建樹,同時記錄各個節點出現的次數,每次挑兩個數異或並消除,那麼最終狀態一定會將兩棵樹消完。 在取兩個數的時候,取相同位優先,因爲這樣異或爲