原创 hdu5117 Fluorescent DP,期望

題意:n盞燈,m個開關,每個開關控制一些燈,用1表示控制,0表示不控制,異或爲1時這盞燈亮,每個開關可開可不開,概率相同。現在問E(x^3)*(2^m),E爲期望,x爲亮燈數。 分析:如果求的是E[x]*(2^m),則可以考慮每一盞燈的狀

原创 UESTC 1712 Easy Problem With Numbers 除法對和數取模,分解,線段樹

附上神牛原版思路: 如果這個題只有乘法,那麼你肯定會做吧?線段樹更新區間查找區間。 那麼有除法呢?當一個數x和m互質的時候,除以x可以改爲乘以x的逆元。(至於互質的數求逆元用擴展歐幾里德,這個網上可以隨便找到) 但是這題並不能

原创 hdu5208 Where is Bob 數位dp

維護四個數的上下邊界條件,轉移使最小值最大即可。 數位dp有時只對dp賦一次-1,這時邊界條件滿足一定條件與後面的數是什麼無關,可以直接返回,在此題中條件太苛刻,用處不大,會tle。 也可以每次都賦一次-1,這時算出一個狀態的值就能賦給d

原创 SPOJ 694 Distinct Substrings 後綴數組 模板

題目大意:給一個字符串,問這個字符串中不同的子串一共有多少個。 思路:構建後綴數組。如樣例ABABA的5個後綴排序後分別爲: A ABA ABABA BA BABA 我們可以看作所有後綴的所有前綴構成所有的子串。 從上

原创 hdu 5187 zhx's contest 快速冪,快速乘

答案就是(2^n-2)%p,由於p很大,直接快速冪會爆掉,用個快速乘。 #include<iostream> #include<cstring> #include<cstdio> #include<ostream> #include<is

原创 hdu5226 Tom and matrix 公式,Lucas

題意:給定x1,y1,x2,y2,求和C(i,j),(x1<=i<=x2,y1<=j<=y2),結果%p。 分析:因爲\sum_{i=a}^{b}C_{i}^{k}=C_{b+1}^{k+1}-C_{a}^{k+1}∑​i=a​b​​C​

原创 hdu5052 Yaoge’s maximum profit 樹鏈剖分

一棵樹上,從u走到v,在某點買入,咋之後的某點賣出,求最大利潤。 維護正着走和反着走的最大利潤。 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm

原创 hdu 5136 Yue Fei's Battle 樹的dp計數

一棵二叉樹的最長鏈長度爲k,節點數不限,求所有形態數。 f[i]表示深度爲i的二叉樹形態數,dp[i]表示深度<=i的樹的形態數,若k爲偶數,從中間看,上面是一棵深度爲k/2的二叉樹,下面是一棵深度爲k/2的二叉樹,若k爲奇數,中間也是一

原创 hdu3874 離線樹狀數組

詢問區間內不同的數的和。 將詢問按照r排序,用last記錄每個值上次出現的位置,若重複出現,減去原來的加上現在的。 #include<iostream> #include<cstdio> #include<cmath> #include<

原创 hdu 5445 Food Problem 分組揹包,二進制拆分

題意:要得到至少p的能量,有n種甜品,每種甜品有能量值t,體積u,數量v,運送這些甜品的卡車有m種,每種有容積x,花費y,數量z。求運送的甜品至少能量達到p的最小花費。p<=50000,最小花費<=50000,n,m<=200,其他<=1

原创 hdu5171 GTY's birthday gift 矩陣快速冪求斐波那契前n項和,矩陣快速冪模板

#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<vector> #include<set

原创 數論中的一些基礎算法

1.篩素數 const int maxn=100005; int prime[maxn]; bool vis[maxn*10]; int cnt; void getPrime() { int N=1000000; int

原创 hdu5030 Rabbit's String 後綴數組

把一個字符串最多分爲k段,所有每一段的最大子串的最大值最小。 二分答案串是排名多少的字串,根據sum可以定位該串的位置,在t之後的後綴中有些串是需要切割的,這些串加上後一個字符會大於答案串,把這些串的位置求出後貪心最少切多少刀。 #inc

原创 uval1297 Palindrome 後綴數組求最長迴文字串,lcp,rmq

#include<iostream> #include<cstring> #include<cstdio> #include<ostream> #include<istream> #include<algorithm> #include<

原创 hdu5029 Relief grain 點權樹鏈剖分,線段樹

點權樹鏈剖分,求出所有更改區間,用一個類似差分前綴和的東西掃一遍。 點權與邊權的剖分在查詢上有一點小區別。 #pragma comment(linker,"/STACK:1024000000,1024000000") #include<i