原创 KM算法及一道例題

這道題乍一看沒有什麼性質,但是我們衆所周知也很容易推出來的有一個性質 這種矩陣的每一項a[i][j]是可以表示成a[i]+b[j]的 也就是說我們可以構建一個二分圖 對於a[i][j],左邊的點i向右邊的點j建一條權值爲a[i][j]

原创 電影(movie)

這個就是我思想出現了一點偏差。。。 反正B序列放過去的都是可以固定有序的,那麼現在我們只需要考慮把A中原來的變爲有序即可 以每個數的值爲下標,位置爲值,重新建一個數組並離散 那麼現在我們只需要一段連續的單調上升區間了,而要去掉區間外的值

原创 毒瘤(指題目名)

首先如果我們不考慮複雜度的話,直接主席樹二分就能輕鬆解決了 但是3e5的數據範圍會讓的算法跑得很慢,而且常數也比較大 所以我們考慮換一個思路 假如我們從小到大把點按權值排序,然後開始用並查集合並,記錄下合併時的位置的值,最左邊的位置,以

原创 數字重排

很容易就能發現當最小值只有一個時的貪心策略 剩下的可以用dp解決,很容易就能發現就是要選出一些數使得在模最小值的情況下最大 那麼就可以有一個很簡單的O(N*C)的DP了,用bitset優化一下就可以了 而且這個手寫bitset的板子也很

原创 關於FMT以及子集卷積

zjp_shadow的博客 講的很詳細了 其實主要是學習子集卷積 因爲已經有FMT的基礎在前面了,現在操作跟以前一樣,只是再加一位作爲1的個數 當且僅當1的個數和等於最後或出來的個數和,才能夠表示成子集卷積 所以就把不滿足條件的改成0就行

原创 省選準備

省選前要學習的一些知識點 Miskcoo’s Space神仙博客二次剩餘 SFN1036講的Cipolla算法 sunshine講的三維凸包的題目 西域狂豬講的半平面交 斯特林數的衆多性質–百度百科 萬能的一天更新不知道多少題的yyb

原创 神O和神牛

這是一道狀壓dp題 dp[i]表示狀態爲i時最小的時間 那麼我們考慮什麼時候可以辦護照 就是下機和登機的那個時間,那麼我們枚舉這一次辦哪個簽證,再找一下他能放的最靠前的位置就可以了 如果我們能夠把簽證辦理時間排序,可以發現最優

原创 神O的法法序列

很簡單的一道題(雖然我沒有做出來) 我們可以大致分一下塊,dp[i][j]表示在對於i這個位置假設詢問的狀態爲j,只考慮後面2^8位,那麼答案是多少 利用lucas定理可以發現如果位置用i+k表示的話,k爲j的子集時這個數纔有貢獻 那

原创 常係數齊次線性遞推學習

這是一種對於矩陣快速冪的優化方式 因爲我很菜不會正常的證明,只能用同學教我的比較清真的證明了 我們通過舉例來說明,假設有一個遞推公式是f[i]=2*f[i-1]+f[i-2]; 我們考慮把的過程與把遞推公式往下化的過程 可以發現取模的每一

原创 咋肥似呀(joke)--發了一堆tarjan論文...

一道十分巧妙的分治題,很明顯是需要離線的 那麼我們看看時間軸分了類後,一條邊有貢獻當且僅當連接的兩個點在左邊沒有形成環 如果前半部分在左邊能夠形成環,我們就把他們加入下一層的左邊,否則就加入右邊 然後遞歸tarjan處理,已經成環的

原创 幾何高手(geometry)

我們發現0這個位置肯定是0 剩下來的n個位置如果確定了,那麼整個序列就可以確定了 那麼這些位置決定的根據是什麼呢,當然是最後輸出的字典序了 所以我們先隨便賦值,sort時直接改一下cmp就可以得出最後的答案了 比較時如果相同那麼交不交換

原创 繩子(rope)

繩子(rope) 有一根繩子,從左到右分爲 n 段,每一段長度相同,厚度爲 1。共有 m 種顏色,第 i 段的顏色爲 ai。 有兩種操作: (1)將繩子從某相鄰兩段的交點處摺疊,將對應的段擰在一起。必須保證對應的段顏色相同,擰在一起之後的

原创 掃雷大師

表面上看是一道交互題,但是實際上可以把所有數據存下來 比較看一下它的種子是哪一個就可以了,找的辦法非常簡單 #include <bits/stdc++.h> #include "minesweeper.h" using names

原创 序列

最近真的該好好反思一下,今天的題思路都是對的 但是不是寫錯了,就是看錯了,或者想的偏了,沒有看到題的重點 這道題如果沒有單調遞增的限制,不過就是一道簡單的斜率優化 那麼有了過後呢,用樹狀數組來滿足這個限制,我們現在就是一個單點修改區間查

原创 BJ80中集訓--踢罐子

   真實計算幾何題目 首先三個點的點對我們是可以直接計算貢獻的 那麼剩下的貢獻我們分爲四邊形來考慮 對於每一個凸四邊形,可以發現貢獻都是2,凹四邊形則沒有貢獻 所以這道題其實是統計圖中凸四邊形的個數 我們考慮枚舉每條線段,如果是一個凸四