01/14やったこと
AtCoder
E - Non-triangular Triplets
何もわからないので、逆によく考えると一つしか解法が思い浮かばないので迷わず解けた。
01/13やったこと
AtCoder
E - Sorted and Sorted
よくある最終状態を考えるパターンだが、最終状態の全てを考えることができなかったとしても、一部から考え始めて広げることができるのは面白かった。
F - Enclosed Points
全く何から手を付けて良いか分からなかったが、解法は非常にシンプルで面白い。
第二回全国統一プログラミング王決定戦予選 E - Non-triangular Triplets
解法
とりあえず 2N ... 3N-1 は c に割り当てる。
というようにできるとよい。ここで、 としたいが、これだけでN要素は作れないので、前半と後半に分けて別々に構築する。
コード
fn main() { let (r, w) = (std::io::stdin(), std::io::stdout()); let mut sc = IO::new(r.lock(), w.lock()); let n: usize = sc.read(); let k: usize = sc.read(); let prefix = (n + 1) / 2; let suffix = n / 2; let mut a = vec![0; n]; let mut b = vec![0; n]; for i in 0..prefix { a[prefix - 1 - i] = k + i; } for i in 0..suffix { a[n - 1 - i] = k + i + prefix; } for i in 0..prefix { b[i] = k + n + i * 2; } for i in 0..suffix { b[i + prefix] = k + n + i * 2 + 1; } let mut ans = vec![]; for i in 0..n { let a = a[i]; let b = b[i]; let c = k + n * 2 + i; if a + b <= c { ans.push((a, b, c)); } else { println!("-1"); return; } } for (a, b, c) in ans.into_iter() { sc.write(format!("{} {} {}\n", a, b, c)); } } pub struct IO<R, W: std::io::Write>(R, std::io::BufWriter<W>); impl<R: std::io::Read, W: std::io::Write> IO<R, W> { pub fn new(r: R, w: W) -> IO<R, W> { IO(r, std::io::BufWriter::new(w)) } pub fn write<S: std::ops::Deref<Target = str>>(&mut self, s: S) { use std::io::Write; self.1.write(s.as_bytes()).unwrap(); } pub fn read<T: std::str::FromStr>(&mut self) -> T { use std::io::Read; let buf = self .0 .by_ref() .bytes() .map(|b| b.unwrap()) .skip_while(|&b| b == b' ' || b == b'\n' || b == b'\r' || b == b'\t') .take_while(|&b| b != b' ' && b != b'\n' && b != b'\r' && b != b'\t') .collect::<Vec<_>>(); unsafe { std::str::from_utf8_unchecked(&buf) } .parse() .ok() .expect("Parse error.") } pub fn vec<T: std::str::FromStr>(&mut self, n: usize) -> Vec<T> { (0..n).map(|_| self.read()).collect() } pub fn chars(&mut self) -> Vec<char> { self.read::<String>().chars().collect() } }
01/12やったこと
AtCoder
D - Game on Tree
E - Connected?
これも解けなかった。2次元幾何を頑張るように見えて、実は単純な実装で終わる面白い問題だった。
01/04やったこと
2020 年の目標
AtCoder 橙色
- 昨年も目指していたが、橙色はおろか黄色に戻ることすらできなかった。
- 転職やその他のライフイベントがあり、忙しかったという言い訳をしておく。
- 黄diff問題を練習するようになってからコンテストでも黄パフォがコンスタントに出せるようになったので、この練習をちゃんと続ければ行ける気がする。
やること
- 平日4問ずつ問題を解く
英語
- 英語が公用語の会社で働き始めて3年目になり、さすがに苦手意識は無くなってきたが、特に得意になったという気もしない。
- 仕事の文脈では普通にコミュニケーションは取れるが、いまだにコストを感じる。
- 例えば、他の人に実装してほしいものがある時に、それを英語で説明するよりも自分で実装してしまった方が速いという場面が割とある。これではチームで働く意味がない。
やること
BBC Learning English - News Reportを1日1話ずつやる。
中国語
やること
「口を鍛える中国語作文」を1日1ページずつやる。