2023-01-06 Impulse Blocker という Firefox アドオンをインストールした
Impulse Blocker という Firefox アドオンをインストールした。バージョンは 1.2.0 。
配布ページ: https://addons.mozilla.org/ja/firefox/addon/impulse-blocker/ ソースコード: https://github.com/raicem/impulse-blocker 使い方: https://blog.cemunalan.com.tr/2017/05/17/impulse-blocker-guide/
これは指定のドメインをブロックしてアクセスできなくするアドオン。ブロックされているドメインのページにアクセスしようとすると Impulse Blocker のメッセージが表示されアクセスできなくなる。例えば www.youtube.com
なら Your impulse to visit www.youtube.com is successfully blocked!
と表示される。
ツールバーにアイコンが表示され、 ON/OFF の切り替えや 5 分だけ OFF にしたりできる。
ぼくはこれを YouTube や Twitter へのアクセスのブロックするために使ってみている。入れてみて気づいたことには手癖のように Twitter へアクセスしていること。 Android 側では Digital Wellbeing で時間制限できているのだけど PC 側はしていなかった。これで結構な時間の節約になりそうだ。
ABC079 : AtCoder Beginner Contest 079 の A, B, C, D を解いた。
- A - Good Integer
https://atcoder.jp/contests/abc079/tasks/abc079_a
- 提出: https://atcoder.jp/contests/abc079/submissions/37770611
- 各桁を ABCD とするとき A = B = C か B = C = D のとき Yes になる
(n[0] == n[1] && n[1] == n[2]) || (n[1] == n[2] && n[2] == n[3])
- B - Lucas Number
https://atcoder.jp/contests/abc079/tasks/abc079_b
- 提出: https://atcoder.jp/contests/abc079/submissions/37770706
- 問題文どおりにリュカ数を計算する
- 1 つ前と 2 つ前のリュカ数を参照できれば十分なので
(L_2, L_1)
とすれば良い
- C - Train Ticket
https://atcoder.jp/contests/abc079/tasks/abc079_c
- 提出: https://atcoder.jp/contests/abc079/submissions/37770890
+
と-
の 2 通りが 3 箇所にあるので2^3
しかない- 全探索すれば良い
- D - Wall
https://atcoder.jp/contests/abc079/tasks/abc079_d
- 提出: https://atcoder.jp/contests/abc079/submissions/37771325
- 各数字を頂点としたグラフで考える
- 0-9 の各数字から 1 へのコストを事前に計算しておき、 A の各数字でのコストの総和を取れば良い
- 事前計算はワーシャルフロイド法で良さそうだが、書き慣れているダイクストラ法で解いた
use proconio::{input, marker::Usize1};
fn dijkstra(n: usize, inf: usize, e: &[Vec<(usize, usize)>], s: usize) -> Vec<usize> {
use std::{cmp::Reverse, collections::BinaryHeap};
let mut d = vec![inf; n];
let mut pq = BinaryHeap::new();
d[s] = 0;
pq.push(Reverse((0, s)));
while let Some(Reverse((w_u, u))) = pq.pop() {
if w_u > d[u] {
continue;
}
for (v, w_v) in e[u].iter().copied() {
let w = w_u + w_v;
if w < d[v] {
d[v] = w;
pq.push(Reverse((w, v)));
}
}
}
d
}
fn main() {
input! {
h: usize,
w: usize,
c: [[usize; 10]; 10],
a: [[i64; w]; h],
};
let mut edges = vec![vec![]; 10];
for i in 0..10 {
for j in 0..10 {
edges[i].push((j, c[i][j]));
}
}
let mut dists = vec![];
for i in 0..10 {
let d = dijkstra(10, 1 << 60, &edges, i);
dists.push(d[1]);
}
let mut ans = 0_usize;
for i in 0..h {
for j in 0..w {
if a[i][j] == -1 {
continue;
}
ans += dists[a[i][j] as usize];
}
}
println!("{}", ans);
}
今日のコミット。
- rust-atcoder 1 commit
- rust-examples 2 commits