A
1e5*10 10個房間
每次從左或者右 找到第一個為空的位置 置1 break
B
貪心 1-n-1枚舉
每次将new=a[i+1]-k
然後a[i]>=new
多餘a[i]放入背包
否則
new-a[i] 差的用背包補
if(m<0)背包容量<0 不行
C
分2組 取n,m的gcd
nn=n/gcd mm=m/gcd
sx=1 sy/nn 餘數不為0 res1++
sx=2 sy/mm 餘數不為0 res1++
ex=1 ey/nn
ex=2 ey/mm
E 字元串哈希 單哈希 雙哈希都行
kmp