集訓Day1
雅禮集訓2017Day1的題
感覺上不可做實際上還挺簡單的吧
T1
區間加 區間除法向下取整
查詢區間和 區間最小值
大力上線段樹,把除法標記推到底,加法標記就是按照線段樹的來
先拿30
然後60的數據隨機不知道該怎麽做
開始YY
那個“向下取整”的tag並不能累加
所以考慮轉化
除法->減法
如果一個區間要減的都是一樣的數,直接減就行了,如果不一樣,就遞歸下去,反正1個數肯定減的是一樣的
本來想拿60,結果A了
T2
n*n的棋盤(n = 1000)每次把找一行,把它的顏色序列copy下來塗到一列上
問最少多少次能把整個棋盤塗黑
首先 全白肯定無解
其次 只要把一行塗黑 之後塗n次就可以了
然後 大力模擬發現並沒有比這個優的策略
於是一頓亂搞
我們枚舉第i行,假裝要把他弄成全1的。
設第i行的0的數量為cc[i],那麽考慮第i列是否含有1,如果含有1那麽就可以用含有1的那列的那行給第i行所有0的地方賦值,需要cc[i]步。
如果第i列不含有1,我們要花1次操作給第i列搞個1出來,所以答案是cc[i]+1步。
每行取個min
聽說是簽到題...數據極水 被各種對的不對的做法爆切
T3
令 s 與 w 為兩字符串,定義:
- $w[l,r]$ 表示字符串 $w$ 在區間 $[l,r]$中的子串;
- $w$ 在 $s $中出現的頻率定義為$w$ 在 $s$ 中出現的次數;
- $f(s,w,l,r)$表示 $w[l,r]$ 在 $s$ 中出現的頻率。
比如 $f(ababa,aba,1,3)=2$。
現在給定串 $s$,$m$個區間 $[l,r] $ 和長度 $k$ ,你要回答 $q$ 個詢問,每個詢問給你一個長度為 $k$ 的字符串 $w$ 和兩個整數 $a,b$,求:
$\sum\limits_{i = a} ^ b f(s, w, l_i, r_i)$
重要條件
$\sum w_i$ 是個定值
所以很eazy看了題解後想到要寫兩種做法
首先考慮k小的情況
這種情況我們可以用SAM暴力處理出right集合計算每一個子串在當前串出現的次數
k大時可以考慮在SAM的parent樹上跑一個倍增
暴力記前綴然後倍增往上跳找到後綴
這樣遍歷每個子串就可以做了
這是什麽完全不可做的毒瘤題啊媽媽帶我回家吧我不學OI了
嗯 擡頭 微笑
感覺沒看到簽到題有點虧...想T1想了2個小時有點不應該
然後1個小時迅速切T2
T3就沒時間想了只能n^3的KMP
最後100 + 100 + 30
感覺拿了個大眾分?
集訓Day1