原创 [BZOJ 3585]mex

外面一定要套一層莫隊的不用說QAQ 學會分析時間複雜度OTZ 按照權值來說,我們需要維護一些數據結構 比如樹狀數組(查詢時二分??)  -----O(msqrt(n)logn) 比如分塊(修改O(1)查詢(sqrt(n)))-----O(

原创 [BZOJ 3689]異或之

Description 給定n個非負整數A[1], A[2], ……, A[n]。 對於每對(i, j)滿足1 <= i < j <= n,得到一個新的數A[i] xor A[j],這樣共有n*(n-1)/2個新的數。求這些數(

原创 [2016-3-17 Test]

Problem4:題意:有n個人站隊,個子高的會擋住格子矮(或者和他一樣高的)的,問有多少種站隊方式使得從隊頭看去恰好能看到k個人? 今天的題目感覺是水題集合OTZ,可惜木有人屠場。。 dp 我們發現如果一個一個把個子高的添加進去會出

原创 [BZOJ 2142]禮物

OTZ Po姐姐 題目的意思是求C(n, m1) * C(n-m1, m2) * C(n-m1-m2, m2)….(mod P) 感覺是小學數學。。 化簡一下就是 n! / πmi=1 w[i]! 但是mod的數不一定

原创 [BZOJ 4184]shallot

http://www.lydsy.com/JudgeOnline/problem.php?id=4184 將一個元素入隊和出隊看成時間軸上的一個區間。 每次進行區間覆蓋,不用打標記,dfs時向下傳遞即可 #include <b

原创 [2016-3-23 Test]

目錄 [BZOJ 4361] isn [BZOJ 4358] permu [BZOJ 3522][Poi2014] Hotel 考試三道神題a 填坑ing 目測只改了第一題 isn 題意 給出一個長度爲n的序列A(A1

原创 [BZOJ 3996][TJOI2015]線性代數

被某神犇吐槽: 你自己寫的題解太少了! 跪。。蒟蒻怎麼能想出來辣麼神的題目OTZ 但還是要認認(len)真真寫題解了=-=。。 話說這道題的題面好不着調=-= 神犇告訴我: 1 2 3 4 5 6 7 8 9 的轉置是 1 4 7

原创 [高斯消元與線性基]

[BZOJ 2115][WC 2011]Xor 題意 給定一個n個點m條邊的無向圖,求一條路徑使得路徑的異或和最大 分析 隨便搞出一條路徑 考慮環,路徑^環=路徑,相當於我們從環的另一側走過去,考慮兩條路徑,路徑^路徑=環

原创 [BZOJ 1975][Sdoi2010]魔法豬學院

K短路,左偏樹,A* 其中st是用來比較的估價函數,此估價函數是完全準確的,ed是實際走過的路程 #include <iostream> #include <cstdio> #include <cstring> #include

原创 [BZOJ 3439]Kpm的MC密碼

Kpm當年設下的問題是這樣的:     現在定義這麼一個概念,如果字符串s是字符串c的一個後綴,那麼我們稱c是s的一個kpm串。     系統將隨機生成n個由a…z組成的字符串,由1…n編號(s1,s2…,sn),然後將它們按序告訴你,

原创 [BZOJ 3112][ZJOI 2013]防守戰線

題目戳[這]http://blog.csdn.net/PoPoQQQ/article/details/44312949 單純形法 #include <bits/stdc++.h> #define maxn 1010 using n

原创 [BZOJ 1798][Ahoi2009]Seq 維護序列seq

先乘後加線段樹 就是pushdown的時候要在訪問之前進行 推薦自己寫plus和mul 這樣就不用爲%m困擾了 %%% 不管爲什麼放在前面就好啦 #include #include #include #include #def

原创 [論樹剖與DFS序的正確姿勢]

[BZOJ 2243]染色 裸樹剖 因爲沒有賦size[u]=1寫T了T^T 這個東西有區間可並性QAQ #include #include #include #include #define maxn 100010 using

原创 [BZOJ 4416][Shoi2013]階乘字符串

不過話說我需要一些嚴謹的證明 證明n≤20吧QAQ 其實蒙一蒙也沒有關係啦 應該是|S|≤450限制了一下 利用序列自動機,計算出出現狀態集合爲i的最短前綴的最後一個位置 然後判斷dp[S - 1] ≤ |S|就可以啦QAQ。。 不要問我

原创 [BZOJ4037][HAOI2015]Str

Description 你有一個長度爲n的數字串。 定義f(S)爲將S拆分成若干個1~m的數的和的方案數,比如m=2時,f(4)=5,分別爲 4=1+1+1+1 你可以將這個數字串分割成若干個數字(允許前導0),將他們加起來