2102,2103,2104,2197,2198,2199

2102

R[i],G[i],B[i]に入力枚数を保持しておいて、(i,i+1,i+2)が1枚以上あったら1セットとして引く、(i)が3枚あったら1セットとして引く、というのをRGBそれぞれについて全探索した。

2103

書いてある通りにシミュレーションするだけ。

2104

一応確認のためにdfsでどこで区切るか全部まわしてTLE。やらずもがな。
dpするのかなと思ったけど、n,k<=100000もあるのでそもそもメモリがムリ。
発電機はどこにおいてもいいから無視すると、区間をk個のグループに分けるのに、家間の距離の中で長いやつから取り除いていけば残りの区間の合計が最小になるので、隣の家との距離の配列をソートして長いやつからk個のグループになるまで取り除けばよかった。

2197

あらかじめ計算しておくだけ。

2198

やるだけ。降順なのと、収入効率が同じときは名前で辞書順なのに気をつける。

2199

dfsでちょっと枝を刈って試してみる→TLE。
i番目でy(0<=y<256)でのコストをdp[y][i]で保持。dp=INFにしておく。dp[128][0]=0として、(i-1)番目でのyの値(0<=y<256)からC[?]分だけ変化した値はyc=y+C[?]なので、dp[yc][i]=min(dp[yc][i], dp[y][i-1]+(yc-x[i])*(yc-x[i]))となる。そして、N番目での最小のdpを返す。

まとめ

計算量の見積もりがまだちゃんとできない。dfsで枝刈れば間に合うのか、dpで解くべきなのか、それとも貪欲法で解ける問題なのか。これできないと成長できないなぁ。