2023-10-09 扇風機を片付けた
衣類を冬物に入れ替えて扇風機を片付けた。
先週の体調不良は↑の衣類を引っ張り出したときのホコリもあるような気がしている。いまだにのどの調子が良くない。
- Range Set Query (AtCoder Begineer Contest 174:F問題)
https://atcoder.jp/contests/abc174/tasks/abc174_f
- 提出: https://atcoder.jp/contests/abc174/submissions/46407450
- 解説 AC
- 第 8 章のタイトルに合わせて平面走査で考える
- クエリを l の昇順で走査するとき
- 種類数が必要なことから 1 色につき
x >= l
の一番端のものだけあれば十分になる - これはちょっと解けなさそう
use std::collections::{BTreeMap, VecDeque};
use proconio::{input, marker::Usize1};
use segtree::*;
fn main() {
input! {
n: usize,
q: usize,
c: [Usize1; n],
lr: [(Usize1, usize); q],
}
let mut pos = vec![VecDeque::new(); n];
for (i, c_i) in c.iter().copied().enumerate() {
pos[c_i].push_back(i);
}
let mut lri = BTreeMap::new();
for (i, (l, r)) in lr.iter().copied().enumerate() {
lri.entry(l).or_insert_with(Vec::new).push((r, i));
}
let mut st = Segtree::<Additive<usize>>::new(n);
for pos_i in pos.iter_mut() {
if let Some(p) = pos_i.pop_front() {
st.set(p, 1);
}
}
let mut ans = vec![0_usize; q];
for l in 0..n {
if let Some(ri) = lri.get(&l) {
for &(r, i) in ri {
ans[i] = st.prod(l..r);
}
}
st.set(l, 0);
if let Some(p) = pos[c[l]].pop_front() {
st.set(p, 1);
}
}
for a in ans {
println!("{}", a);
}
}
// segtree
Slay the Spire サイレント A2H
- ボスレリックはピラミッド・ブラックスター
- ディスカード
- 攻撃は2x腹裂き+が火力
- 剣の舞を入れていたがピラミッドで手札も多く使いづらさがあった
- バーストは序盤に入れたが意外と機能しなかった
- 防御は無考慮、半無限ループでなんとかした
- 終盤に余計なカードをピックして回りづらくなってしまった
- 心臓での防御は厳しかったもののイカサマ+包帯でなんとかなかった
Slay the Spire サイレント A3H
- ボスレリックはアストロラーベ・コーヒードリッパー
- コーヒードリッパーは玩具のオーニソプターがあったこともあり取りやすかった
- 攻撃は手裏剣・2x剣の舞・2x外套と短剣・幻影の暗殺者・恐怖
- 筋力を上げてなんとかする
- 手数的にタイムイーターが厳しかった
- 防御は残像
Slay the Spire サイレント A4H
- 2 敗
- ネオーボーナスでアイスクリーム
- 死霊化+ をドリーの鏡で複製した
- 防御は万能薬+と2x死霊化+で時間を稼いだ
- 鳥居・不快感あたりも活躍していたように思う
- 攻撃は幻影の暗殺者・恐怖・儀式の短剣だけど弱かった
- 儀式の短剣はアップグレードしたほうが良かったかもしれない
- 落下イベントで腹裂きを失った (選択肢は死霊化・万能薬・腹裂きのはず)
- 串刺しはこなかったしケミカルXは買えなかった
- 心臓はトゲのおかげで間に合ったように思う
今日のコミット。
- rust-atcoder 1 commit
- kireta 1 commit