原创 動態主席樹

一般需要離散化 無離散化模板 const int MAX_N=100100; int n,m,num=0,len; int a[MAX_N]; int root[MAX_N],root1[MAX_N],lc[MAX_N],rc[M

原创 RMQ算法求區間極值--倍增思想

int dp[MAX_N][log2(MAX_N)+2],a[MAX_N];//dp[i][j]代表從i開始長度爲2的j次方的區間的最小值 void rmq_init(){ for(int i=1;i<=N;i++)

原创 F - Removed Interval(最長上升子序列)

題意:刪去連續的長度爲L的序列,求最長上升子序列。嚴格上升。 dp[i][0]代表選擇i點在[1,i]中找最長上升子序列。 dp[i][1]代表刪去了長度爲L的連續序列之後選擇i點的在[1,i]中的最長上升子序列。 離散化加線段樹

原创 組合數學模板

第一類斯特林數 void init(){ s[0][0]=1; for(i=1;i<=n;i++){ s[i][0]=0;s[i][i]=1; for(j=1;j<i;j++){ s[i][j]=(s[i-1][

原创 2019南京ICPC網絡賽A題

二維偏序,利用二維前綴和的思想,一個矩陣(x1,y1,x2,y2)可以由(0,0,x2,y2)+(0,0,x1-1,x2-1)-(0,0,x1-1,y2)-(0,0,x2,y1-1)得出,所以按x軸排序,用樹狀數組記錄y軸的(0,

原创 P2051 [AHOI2009]中國象棋

題目描述 這次小可可想解決的難題和中國象棋有關,在一個N行M列的棋盤上,讓你放若干個炮(可以是0個),使得沒有一個炮可以攻擊到另一個炮,請問有多少种放置方法。大家肯定很清楚,在中國象棋中炮的行走方式是:一個炮攻擊到另一個炮,當且僅

原创 問題 B: 小說(二分最短路)

題目描述 由於小X是一位奆老,奆老總是忙得一刻也停不下來。他剛剛準備完食物,小X童年的摯友小S和小Z來找他幫忙了…… 小S和小Z十分喜歡看網絡寫手“25”的小說,但由於需要付費才能閱讀,而小S和小Z的零花錢有非常少,他們只能找小X

原创 P1578 奶牛浴場 求最大子矩陣(枚舉)

P1578 奶牛浴場 由於n,m很大但是障礙點的數量很小,所以可以枚舉障礙點從而找到最大子矩陣。 複雜度爲障礙點的數量的平方,一般用於處理n,m很大時的最大子矩陣問題,枚舉思想很簡單,排序,然後以第一個點爲左邊界,依次枚舉右邊界,

原创 2019南京ICPC網絡賽 D

Robots ** Given a directed graph with no loops which starts at node 11 and ends at node nn. There is a robot who st

原创 求k進制n的階乘下末尾0的個數

原文鏈接:https://blog.csdn.net/qq_45458915/article/details/101061169 #include<iostream> #include<

原创 HDU 6704 後綴數組

首先應該注意二分找前綴相同的區間時不能直接通過比較字符串,因爲字符串比較不是o(1),而是o(n),md坑死了,還有這個二分真難寫。 後綴數組+RMQ+主席樹,不難但是真的麻煩。 #include<iostream> #inclu

原创 P4568 [JLOI2011]飛行路線 (分層圖最短路 dp思想)

k次免費機會最短路。 兩種思路:1.dp;dis[to][free]代表從出發點到to點用了free次免費機會的最短路,然後dijkstra跑。 2.建分層圖;在建邊時比如a,b,c,建邊時就建(a0+a,b0+b,c)(b0+b

原创 懸線法(符合條件最大子矩陣) dp

學習鏈接:淺談用極大化思想解決最大子矩陣問題 模板: for(i=1;i<=n;i++){//初始化 for(j=1;j<=m;j++){ Right[i][j]=j; Left[i][j]=j; hei

原创 KMP模板

kmp #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int MAX_N=1010; char str[MAX_N

原创 主席樹模板

const int MAX_N=101000; int num=0; struct skt{ int l,r,sum; }f[MAX_N*40]; int root[MAX_N],b[MAX_N]; void build(