多校第二場 E MAZE

2021-09-26 15:28:03 字數 1196 閱讀 5325

首先,這題的列數非常的小,很像矩陣快速冪加速dp。這題實際上也是維護了一段區間矩陣乘積的結果。

查詢 o(1) 修改 o( logn * k^3 )

這裡有乙個需要注意的點是左乘和右乘的區別。矩陣快速冪還是 (1,n) *( n,n )這種形式比較好。

#include #define lc l,mid,x<<1

#define rc mid+1,r,x<<1|1

using namespace std;

typedef long long ll;

typedef int lint;

const lint mod = 1000000007;

const int maxn = 50005;

ll mul( ll a,ll b )

ll ad( ll a,ll b )

struct matrix}}

return c;

}};matrix tree[4*maxn];

int m,b[maxn][11];

matrix calc( int l )

f = 1;

for( int j = i;j >= 1;j-- )

}return c;

}void push_up( int x )

void build( int l,int r,int x )

int mid = l+r >>1;

build(lc);

build(rc);

push_up(x);

}void update( int left,int right,const matrix& v,int l,int r,int x )

int mid = l+r>>1;

if( left <= mid )

if( right > mid )

push_up(x);

}matrix fi;

int main()

}build( 1,n,1 );

for( int i = 1;i <= q;i++ )else

fi.ma[1][x] = 1;

matrix c = fi * tree[1];

int ans = c.ma[1][y];

printf("%d\n",ans);}}

return 0;

}

2016多校聯合第二場

1002 樹上每個點都有乙個點權w w 2 16 點數n 2 16 已知dp方程 dp i max 將w分成前8位和後8位,設w i 前8位和後8位為x和y,w j 前8位和後8位為a和b,如圖所示 前8位 後8位 w i x y w j a b 方程形式變為 dp i max 維護ds a y m...

HDU 多校聯合第二場

不是在為這次比賽找藉口。我真的想吐嘈一下這道題。尼嘛!明明是狀態dp!非得搞得資料隨便貪心都能過!過你妹啊!埋頭想dp的時候,大約開始十幾分鐘,重新整理了一下。我了個去!快上百了!純屬噁心人嗎?吐嘈完畢 狀態dp 1 n 20,最多20位,完全可以位壓縮。預處理一下hp sum i i 010111...

牛客多校第二場 J farm

輸入描述 the first line of input contains 3 integers n,m,t n m 1000000,t 1000000 for the next n lines,each line contains m integers in range 1,n m denotin...