原创 HDU 4821 字符串hash

點擊打開鏈接 題意:給定M和L,然後一個字符串,問你連續的一段M*L,使得這M個長度爲L的串兩兩不相同,問所有的不同的結果,即不同位置的兩個串都滿足情況,但是串相同則視爲一種,即去重 思路:因爲是連續的字符串,可以計算每一段串的hash值

原创 HDU 4280 網絡流SAP版

點擊打開鏈接 題意:給一個二維座標,然後問你從最左邊的點走到最右邊的點的最大流量 思路:題意簡單明瞭的就是最大流,但是注意挑戰程序設計的模版會超時,不知道爲什麼,也不會改模版,只能換kuangbin大神的SAP版網絡流了#include

原创 HDU 5875 RMQ-ST

點擊打開鏈接 題意:給n個數,然後m個詢問,詢問是L R,問從L開始一直向後取餘的結果 思路:比賽的時候就有個想法,就是因爲每個數取餘的話只有比它小的纔有影響,那麼我們就找到比當前位置小的那個數的位置就可以了,中間略過的元素是沒有影響的,

原创 UESTC 250 數位DP

點擊打開鏈接 題意:中文 思路:加個flag標記一下是不是前導爲0就可以了#include <math.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #incl

原创 POJ 3600 dfs

點擊打開鏈接 題意:給一個小矩陣和一個大矩陣,問你將大矩陣的一些行和一些列去掉後能後變成小矩陣 思路:因爲列數只有20,所以dfs爆搜即可,然後行就可以直接判斷一下刪除一些列後是否還可以滿足#include <stdio.h> #incl

原创 POJ 2104&2761 主席樹模版

點擊打開鏈接 題意:給一個數列然後有多次詢問,問l到r中第K大的數 思路:模版題,模版來自點擊打開鏈接    PS:數獨不如劃分樹快,但是用途比劃分樹要廣#include <vector> #include <stdio.h> #incl

原创 HDU 4436 後綴數組

點擊打開鏈接 題意:給n個串,求所有的子串去重後相加對2012取餘的值 思路:思路借鑑這篇博客,其中有一個求一段串可以形成的和有點類似與字符串hash的想法,用的很巧,要用後綴數組的話不同兩個串的連接需要用一個其他的數字,然後正常計算sa

原创 POJ 3678 2-sat模板

點擊打開鏈接 題意:給定一些關係,然後結果給出,問你是否可以給0到n-1分配0或1使得所有關係成立 思路:2-sat的模板題,理論不多說了,然後就是根據給定的關係建邊即可#include <vector> #include <stdio.

原创 51nod 1686 想法

點擊打開鏈接 題意:中文 思路:我們可以二分要求的那個次數,然後對於每次判斷遍歷整個數組求出大於等於mid的個數即可,用vector寸一下個數即可#include <vector> #include <stdio.h> #include

原创 HDU 3729 二分圖匹配

點擊打開鏈接 題意:每個學生說自己的排名在一個區間,然後老師想知道說真話的學生最多是多少,並將說實話的學生按字典序最大輸出 思路:簡單的匈牙利二分圖匹配,因爲需要字典序最大,所以在匹配的時候要先滿足人的序號大的先匹配#include <v

原创 HDU 5898 數位DP

點擊打開鏈接 題意:題意有點繞嘴,不說了 思路:dfs時我們只走能過成功的狀態,即連續的奇數是偶數個並且下一個是偶數,還有就是連續的偶數是奇數個並且下一個是奇數#include <stdio.h> #include <stdlib.h>

原创 BZOJ 2330 查分約束

點擊打開鏈接 題意:中文 思路:根據條件構造模型即可#include <queue> #include <vector> #include <stdio.h> #include <stdlib.h> #include <string.h>

原创 HDU 3397 線段樹區間合併

點擊打開鏈接 題意:五種操作,0全部置0,1全部置1,2是0變1 1變0,3是詢問1的個數,4是詢問最長連續的1 思路:推薦先寫hdu 3911 ,是這題的簡單版,這題注意的地方就是一旦有置0和置1操作,那麼2操作的標記就要被覆蓋,剩下的

原创 HDU 3709 數位DP

點擊打開鏈接 題意:類似天平,若一個數以某一位當支點,兩邊的數以題目中那樣計算的和相等,這這個數使我們要的,問區間共有多少個 思路:操作是一樣的,只是我們需要枚舉一下支點的位置即可,但是注意因爲0是可以的,所以我們最後加的結果要減去1,因

原创 HDU 4725 最短路

點擊打開鏈接 題意:給定n個數,m條邊,c是每一層的連接費用,n個數代表n層,每一個數字在一層中,從一層只能走到下一層或上一層的一個節點,費用爲c,現在有m條邊連接點,問你從1走到n的最小費用 思路:以兩層爲例,前邊一堆的話代表第一層的每