賽後 1 21 寒假模擬1

2022-09-19 18:03:13 字數 2851 閱讀 2053

就……挺暴力的模擬賽。

題意:求乙個單詞串的最大單詞長度,空格用下劃線代替。

暴力跑一遍,每次掃到下劃線都更新最大值 \(ans\) 並重置 \(cnt\),注意最後乙個單詞也要在迴圈之後更新最大值。

乙個標準的 \(bfs\),無腦搜就可以了。

對於傳送門,可以發現,有傳送門一定要傳送,設一組傳送門 \(d_1,d_2\),不難發現,當 \(d_2\) 周圍有空地可以去時,是能夠回到 \(d_1\) 的,所以標記時,只標記進入傳送門的點,不標記離開傳送門的點。

int n,m;

char mp[305][305];

bool vis[305][305];

struct gategt[30];

struct node

};int sx,sy,ex,ey;

queueq;

int ans=0x3f3f3f3f;

int dx[4]=,dy[4]=;

inline void bfs()

for(int i=0;i<4;i++)

else

}else}}

}if(ans==0x3f3f3f3f)

else

return;

}int main()

for(int i=1;i<=n;i++)

else

}else if(mp[i][j]=='@')

else if(mp[i][j]=='=')}}

bfs();

return 0;

}

賽時的另乙個想法通過大力模擬可以發現,從一點去傳送門且仍留在傳送門當地的代價為 \(3\),即進入傳送門——離開另一傳送門——進入另一傳送門,綜上,可以把兩個地點都放入佇列並且都標記上。

然而,實際是錯誤的,還需要去特判是否能傳回來。

其實是有動態規劃的影子的,不過核心演算法是差分

先考慮乙個問題,最終一致的紙牌個數有影響嗎?有,但不完全有,因為如果我們以任意乙個牌堆初始紙牌個數為基準,其方案數是不會改變的,因為相對增加減少是可以抵消的,例如 \(\) 這一組數,以 \(1\) 為基準和以 \(2\) 為基準是等價的。

那麼以 \(3\) 為基準呢?不難發現還需要在整體上加上 \(1\) 或 \(2\),因此得出本題的第乙個結論:最終形成的紙牌數量必須是初始數量中的任意乙個。那就讓其都為 \(a_1\) 吧。

接著我們考慮差分陣列 \(b\),令 \(b_i=a_i-a_\),特別地 \(b_1=0\),之後我們讓所有的 \(a_i\) 都等於原數與 \(a_1\) 之差。

不難發現的是,如果出現牌數多於基準的,單調不上公升序列 \([i,j]\),其需要的運算元就是最多牌堆此時的 \(a_i\),同理也有如果出現少於基準的,單調不下降序列 \([i,j]\),其需要的地運算元為最少牌堆此時的 \(a_i\)。

既然如此就可以在 \(o(n)\) 的複雜度內更新答案。方案如下:

這裡大家可以發現,我們實際上每次更新到 \(a_i\) 時,是保證前 \(i\) 個都為基準的方案數。

int n;

int a[maxn],b[maxn];

int ans;

int main()

b[1]=0;

for(int i=2;i<=n;i++)

for(int i=2;i<=n;i++)

a[1]=0;

for(int i=2;i<=n;i++)

}else

}else if(a[i]<0)

}else}}

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

return 0;

}

然而,有乙個更好的解法。

考慮如下的乙個陣列 \(a=\\),差分之後就有 \(b=\\),我們可以發現,如果修改乙個區間 \([l,r]\),差分陣列是在 \(l\) 與 \(r+1\) 的數值會改變。例如我們在 \([2,3]\) 位置 \(-1\),得到的陣列 \(a'=\\),差分陣列 \(b'=\\)。若將 \(4\) 單點 \(+1\),同理差分陣列變作 \(b''=\\)。

總結一下上述操作得出的結論:一次修改可以將任意一正一負的差分數值分別 \(-1\)、\(+1\)。也就是說,實際上修改次數實際為正數之和與負數之和的絕對值較大值,我們設 \(cnt1=\sum_^n [b_i>0],cnt2=\sum_^n [b_i<0]\)。這樣我們操作的次數 \(ans1\) 應當為:

\[\operatorname=\max(cnt1,cnt2)

\]

int n;

int a[maxn],b[maxn];

int cnt1,cnt2;

int main()

for(int i=2;i<=n;i++)

else

}printf("%d %d\n",max(cnt1,cnt2),abs(cnt1-cnt2)+1);

return 0;

}

20181010模擬賽 賽後處刑

黃題第五套 問題描述 ufo 在樓下的花園裡種了棵樹,這棵樹上有 k 朵花。他還在樹上的某節點 上藏了封密信。有n只 lzl從密信的位置出發,經過不超過 d 段樹枝,可 以到達的範圍內包含所有的花。可以到達的範圍 如果從 a 出發,經過不超過 d 段樹枝,可以到達 b,則 b 屬於到達的範圍,否則不...

2 8模擬賽 賽後題解

難度排序 t4最高得分 前5名 t4由題意不難知道,每次選擇拔高的區間的右端點一定是 n 具體證明大家意會一下.考慮 f i j 表示當前選擇的左區間最右不超過 i 且拔高了 j 次的答案 則 f i j max 1 x二位樹狀陣列維護一下即可 看!樹套樹!時間複雜度 o nk cdot lognl...

2021 5 23模擬賽賽後總結

其實這次考試題目還是很水的 首先這次考試題目的資料範圍都很不對勁,動不動就 1e9 1e8 的,看著嚇人極了。可是沒想到,這題非常不講武德 上來直接給 1e9 套個 log 我全都防出去了啊,直接 給 1e9 的 log 來個三次方,也卡過去了啊 可是沒想到,他這 t2 又給我來乙個 1e9 我大意...