2017 08 13涉獵題集

2022-08-14 00:03:18 字數 1166 閱讀 4741

找出有多少個序列滿足,和為n(n<=1e18),每個元素mod m(m<=100)都不同。

結果mod大質數。

我們可以先求出每個元素mod m後,序列得到某個和的方案數。然後可以一直+m達到n。

設f[i][j]表示序列中每個元素mod m後,得到的和為i,並且序列中有j個數,保證這j個數互不相同

for k:=0 to m-1 do

for i:=1 to m do

for j:=i*m downto 1 do

f[j][i]+=f[j-k][k-1]

列舉i,j後,給序列中的任意元素加上若干個m,使得和為n。

首先序列排序有j!,然後設還要加x=(n-i)/m個m,就要給這j個數分配x個m。

那麼就是乙個隔板問題。

所以i,j的貢獻就是$$f[i][j]i!c_^$$

然後c可以遞推求。

給出m個修改操作和詢問操作,和n個辦公室。每個辦公室在乙個修改操作後會有一條直線(起始位置(x,y),斜率)

詢問操作問[l,r]的直線與x=x交點的y座標最大值。保證修改操作和詢問操作中的x遞增。

n,m<=1e5

容易發現我們可以做到o(1)修改,o(n)查詢。

考慮分塊,平衡複雜度。

給每個塊維護乙個單調佇列,按斜率排序,表示乙個下凸殼。

修改操作就直接暴力重構單調佇列。

詢問操作就暴力查詢每個單調佇列,和落單的元素。

一張由10^17個結點組成的樹,2是根節點。

編號i的父親為j,其中滿足i是1~j-1中任意乙個數的倍數,但不是j的倍數。詢問區間a~b,算出其中每個節點到根節點的距離和。

j是i的父親,當且僅當\(g[j-1]|i,g[j]!|i\),其中\(g[i]=lcm(1..i)\)。

那麼處理出g後,發現大於41的父親都小於41,所以暴力出前41的ans,那麼ans[i]=ans[fa[i]]+1,i>41。

列舉父親i,要求出有多少個數是g[i-1]的倍數,而不是g[i]的倍數,設為h[i]。

由於g[i]是g[i-1]的倍數,所以不是g[i-1]的倍數,則一定不是g[i]的倍數。

用樹狀陣列套動態開點的線段樹。

然後每顆線段樹就獨立開來,用樹狀陣列做差分。

ACM各類題集

基礎演算法 列舉 poj1573 flip game ac poj2965 the pilots brothers refrigerator 貪心 遞推 模擬 分治 二分 三分 搜尋 動態規劃 dp題集 數學 博弈類 poj1067ac hdu2516ac 斐波那契數列 acdream 無恥的出題人...

寒假水題集

2月1日 1 uvalive 4864 很水的數字dp 2 cf81d 隨便構造 好像我用的那個構造本來是錯的,但是ac了 3 uvalive 5058 似乎涉及到拓撲序,組合數之類,但是要先構造一棵樹 4 cf486e 正反兩遍nlogn的lis得到的資訊 2月2日 1 cfgym 100016d...

JS原型題集

1 題目如下 var fun function fun.prototype var a new fun var b new fun console.log a.name,b.name peter peter fun.prototype.name jack console.log a.name,b.n...