日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces 1149 题解

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces 1149 题解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

A

特判全是 \(2\),對于有 \(1\) 的情況把 \(1\) 放到第二個和最后。
時間復雜度 \(O(n)\).
代碼: 76492031

B

考慮只有一次詢問的情況,有一個 \(O(n^3)\) 的 DP,設 \(f[i][j][k]\) 表示三個串分別匹配到 \(i,j,k\),大串最短匹配到哪。轉移形如 \((i,j,k)\rightarrow (i+1,j,k),(i,j+1,k),(i,j,k+1)\).
有修改相當于給某一維 \(+1\)\(-1\),顯然影響到的 \((i,j,k)\) 只有 \(O(L^2)\) 個,直接改即可。(\(L\)\(A,B,C\) 串長度)
時間復雜度 \(O(n|\Sigma|+qL^2)\).
代碼: 76579067

C

顯然問題就相當于選擇三個數 \(i,j,k\) 滿足 \(0\le i\le j\le k\le n\),最大化 \(s_i-2s_j+s_k\) (\(s\) 為前綴和),修改的形式為區間加或減 \(2\).
線段樹經典題。直接線段樹維護 \(s_i\), \(-s_j\), \(s_i-2s_j\), \(-2s_j+s_k\), \(s_i-2s_j+s_k\)\(\max\) 即可。
時間復雜度 \(O(n+q\log n)\).
代碼: 76672305

D

由于邊權只有兩種,我們需要考察的狀態顯然是僅加入 \(a\) 邊之后的連通狀態。
考慮一條從 \(1\)\(p\) 的路徑,為了滿足最小生成樹的限制,我們僅僅需要滿足路徑上不出現“從某個連通塊出來又重新進去”這種事情。
有一個顯然的狀壓 DP,設 \(f[s][u]\) 表示經過的連通塊集合為 \(s\),現在處于點 \(u\). 其實嚴格來講這是一張圖,需要在上面跑最短路(因為需要處理 \(s\) 相同 \(u\) 在同一連通塊內的轉移)。
問題是連通塊個數太多了。一個很自然的想法是大小為 \(1\) 的連通塊可以用一些手段縮去,但這還不夠。事實上,大小不超過 \(3\) 的連通塊都是不需要記錄進 \(s\) 中的。因為如果從這個連通塊里出去再回來至少要花費 \(2b\) 的代價,而這個連通塊內任何兩點的距離不超過 \(2a\).
因此 \(s\) 只需要記錄大小 \(\ge 4\) 的連通塊是否經過過的狀態。這樣的連通塊最多只有 \(\frac{n}{4}\) 個。
時間復雜度 \(O(2^{\frac{n}{4}}m)\).
代碼: 76698798

E

結論:設 \(f(u)=\text{mex}_{v\in out[u]}f(v)\),則可以把每個點表示為 \(a_k\omega^{f_k}\),就相當于一個只有第 \(f_k\) 個位置為 \(a_i\) 其余都為 \(0\) 的數組(這里的 \(\omega\) 在博弈論里還有一些其他的神奇意義),則先手勝當且僅當對于每個位置,所有的點的異或和均為 \(0\) (即 \(\forall i,\bigoplus_{f[u]=i}=0\)).
證明詳見官方題解。
代碼: 76707873

總結

以上是生活随笔為你收集整理的Codeforces 1149 题解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。