原创 BZOJ 3751 [NOIP2014]解方程 百年老坑填坑計劃QAQ--Hash

題意: 已知多項式方程: a0+a1∗x+a2∗x2+a3∗x3+....+an∗xn 求這個方程在[1,m]內的整數解(n和m均爲正整數)。 解析: 記得我在去年的考場上看完這道題的表情是這樣的-> 好像騙到了一元二

原创 BZOJ 4300 絕世好題 遞推

題意: 給定一個長度爲n的數列ai,求ai的子序列bi的最長長度,滿足bi&bi-1!=0 (2<=i<=n)。 解析: 真…好題….. 記錄每一位最長的長度,每次讀一個數更新即可。 代碼: #include <cstd

原创 BZOJ 1875 [SDOI2009]HH去散步 矩陣乘法

題意: 給定一張無向圖,每條路的長度都是1,沒有自環,可能有重邊,給定起點與終點,求從起點走t步到達終點的方案數。 每一步走的時候要求不能走上一條剛剛走的路。 解析: 顯然需要搞出個矩陣之後矩乘。 然而這題的要求就很煩,

原创 BZOJ 1195 [HNOI2006]最短母串 狀壓DP

題意: 給定n個串,尋找一個最短的串使得所有的串都是這個串的子串,如果存在多條最短的串,則輸出字典序最小的。 解析: n<=12所以我們可以考慮狀壓壓縮一下。 f[i][j]表示狀態爲i,最後一次選取j的最小長度。 (第

原创 BZOJ 3992 [SDOI2015]序列統計 NTT

題意: 存在一個集合S,求長度爲N,每一個元素都是S中的元素(可重複),並且該序列所有數的乘積mod M = x 的序列個數。 M是質數,且集合中的所有元素的範圍都在[0,M-1]內。 並且x!=0 解析: 因爲有M是質

原创 BZOJ 1924 [Sdoi2010]所駝門王的寶藏 tarjan縮點+拓撲DP

題意: 一個r*c的圖中,有n個宮殿。 每個宮殿有一個類型。 類型1:可以到達他所在的行的任意宮殿。 類型2:可以到達他所在的列的任意宮殿。 類型3:可以到達他四周八個格子的任意宮殿。 現在你從任意一個宮殿開始,詢問你

原创 BZOJ 1512 [POI2006]Pro-Professor Szu Tarjan縮點+拓撲DP

題意: n個別墅以及一個主建築樓,從每個別墅都有很多種不同方式走到主建築樓,其中不同的定義是(每條邊可以走多次,如果走邊的順序有一條不同即稱兩方式不同)。 詢問最多的不同方式是多少,以及有多少個別墅有這麼多方式,按照順序輸出別

原创 BZOJ 3993 [SDOI2015]星際戰爭 二分+最大流

題意: 有n個怪獸,m個武器,每個武器能打哪些怪獸的關係已給出,每個武器在1s內可以打多少血量已給出,每個怪獸有多少血量已給出。 求怪獸團滅的最小時間。 解析: 同樣是一道答案存在單調性的題目。 所以我們可以考慮二分答案

原创 BZOJ 1191 [HNOI2006]超級英雄Hero 二分圖最大匹配

題意: sb題 解析: 這篇題解的意義只是紀念我第一次封裝的二分圖=w= 代碼: #include <cstdio> #include <cstring> #include <iostream> #include <alg

原创 BZOJ 1271 [BeiJingWc2008]秦騰與教學評估 百年老坑填坑計劃QAQ--二分

題意: 太長啦敘述不起QAQ 解析: 因爲題中說了,最多隻有一個位置有奇數個人。 所以我們可以先check一下,如果總人數是偶數那麼顯然就是 Poor Qin Teng 接下來的話我們只需要二分出那個奇數的

原创 BZOJ 1189 [HNOI2007]緊急疏散evacuate 二分+最大流

題意: 給定一張網格圖,圖上的點有三種狀態 ‘X’不可走,’.’空地,’D’門 初始之時每個空地存在一個人,每個時刻每個人都可以走向四個方向中的任意一個方向,並且空地可以停留多個人,然而門所在的地方在某個時刻最多有一個人存在

原创 BZOJ 1517 [POI2006]Met 貪心

題意: 給定一棵樹,選擇l條路徑覆蓋最多的點的個數是多少。 解析: 選擇路徑的代價相同顯然考慮貪心。 首先我們可以按照拓撲關係把原圖分層。 接下來我們考慮,對於每一層來說,我們顯然最多選取2*l個點。 我們最終選的路徑

原创 BZOJ 2588 Count on a tree 主席樹

題意: 給定一棵樹,多次詢問x到y的路徑上的第k小的點權。 強制在線。 解析: COT1 顯然我們可以開權值線段樹來維護這個事情,但是又因爲涉及到多版本線段樹,所以容易考慮到可持久化。 對於每一個點來說,在這個點的權值

原创 BZOJ 2734 [HNOI2012]集合選數 狀壓+思路

前言: 總覺得幾天沒寫博客了。 感覺自己被sb題以及sb錯誤包圍了… 那今天就精挑細選幾個題寫寫博客吧。 題意: 在{1,2,3,…..,n}的集合中選出一個子集。 該子集滿足一條約束條件:若x在該集合中,那麼2*x以及3

原创 BZOJ 1109 [POI2007]堆積木Klo DP

題意: 給定一個序列A,刪除任意個數的數,使得生成的新序列B={a,b,c,d….}與序列C={1,2,3,4…..}一一對應的數的個數最多,求最多能對應多少個數。 解析: 不妨列一下樸素的DP方程 f[i]=max(f[j]