もしかして今日って2017年12月26日ですか!? え… ちょっと待って… ということは…

おはよーーーー!! こんちはーーーー!! こんばんはーーーー!! おやすみーーーー!! おきてええええええ

こんちわっす! 輝夜月だよ! kurokojiです.

はじめに

最近バーチャルYouTuberが流行っていますね.バーチャルですよバーチャル.凄い時代になったもんです. お気づきの方もいると思いますが,冒頭のセリフは輝夜月ちゃんから取っています.

ぼくはミライアカリちゃんが好きです.僕は基本的にYouTubeのチャンネルを登録したりしないんですが,ミライアカリちゃんとバーチャルのじゃロリ狐娘YouTuberおじさんキズナアイシロイルカちゃんは登録しています.輝夜月ちゃんは登録していないです.

[追記2018/01/06]今は富士葵さんが好きです.

あとTokyo 7th シスターズを始めました.もう〜〜〜〜めっ〜〜〜〜〜ちゃ曲がエモいのでみんなやってほしい.



CD買いたい.え? アイドルマスターですか? 工藤忍SSRデレステで実装されましたね.

僕はまだ引けてません.工藤忍かわいいですよね.好き…

あとHappy Hacking Keyboard Professional2を買いました.

僕はプロなので,Professionalと書かれているものをChoiceしたわけですね.嘘です.

ICT Advent Calendar 2017の季節ですね.この記事は26日目の記事です.知ってましたか?

1年間の振り返り

大会出場した数で言えば去年に比べると少ないです.が,精神と肉体のつらさで言えば今年が一番ですかね.

出た大会

大会名 結果
第16回日本情報オリンピック(JOI 2016/2017) 本選進出
第28回全国高等専門学校プログラミングコンテスト(競技) 1回戦1位,準決勝15位敗退
パソコン甲子園2017プログラミング部門予選 予選落ち
パソコン甲子園2017プログラミング部門もう一つの本選 ダメ

JOIを今年に入れていいかと言われると微妙ですが,一応今年度ということで.

や〜 なんといっても高専プロコンはきつかったですね.某がチームから抜けたときはどうなることやらと思いましたが,まぁなんとか僕の鋼のメンタルで1回戦1位を勝ち取りました.決勝には出ることが出来ませんでしたが,自分の力でも勝てるんだという自信が付きました.(実際は僕だけでなく,orisano先輩の力もお借りしましたが)

あと高専プロコンのせいで生活リズムが崩れました.設定画面からちゃんと判定調整しようとしたんですが,UIがバグってて無理でした.

SuperCon2017には出ることが出来ませんでした.予選に応募しようかなぁとか思っているときに,インフルエンザを患ってしまい辛かったです.体調管理には気をつけよう!!

PCKに関してはつらいので話しません.後輩諸君は頑張ってください.

昨年欲しかったものたち

昨年欲しかったものを,昨年こう述べていました

このうち,

を手に入れました.

  • 多分Macなかったら高専プロコンは1回戦敗退してただろうなぁと思います.(モチベの問題)
  • サマカニめっちゃ元気でる
  • 藤忍いいよなあ〜〜〜〜(suki♡)

昨日は委員長りしの記事でしたね.

10riridk0.hatenablog.jp

来年欲しいもの

  • 高専プロコン競技部門優勝という称号
  • お金

これ以外にはほしいものリストがあるので,買っていただいた方には何かしらの特典があります.

やりたいこと

D言語 進行形でやってます.

出来たら高専プロコンの競技部門はD言語で書きたいなぁとか思ってるけど,どうなんでしょ.

VST/AUプラグイン開発

VST/AUプラグインというのはDTMをしている人なら分かると思うんですが,まぁエフェクトとかを掛けるやつです.

種類としては色々あるんですが,まぁEQ(イコライザ)とかコンプレッサ,シンセとか C++で書けるらしいし書いてみたいですね.D言語で書いてる猛者もいそうですが流石にC++で書くことになりそう.

おわりに

最後はこのツイートで締めたいと思います.皆さん良いお年を.

あ,明日はmitoです.

ABC066

ABC066

テンプレは省略

A

sortして先頭2つを取っておわり.

ソース

#include <bits/stdc++.h>
using namespace std;

signed main() {
  int a[3];
  rep(i, 3) cin >> a[i];
  sort(all(a));
  print(a[0] + a[1]);
}

B

与えられた文字列が偶数の長さで,半分に割ったときに左右で一致していれば偶文字列と分かるのでsubstrで分割してあげる.

ソース

#include <bits/stdc++.h>
using namespace std;

signed main() {
  string s;
  cin >> s;
  int res = 0;
  
  while (true) {
    string a, b;
    s.erase(s.begin() + s.size() - 1);
    res++;

    if (s.size() % 2 != 0) continue;
    a = s.substr(0, s.size() / 2);
    b = s.substr(s.size() / 2, s.size());
    if (a == b) {
      break;
    }
  }
  print(s.size());
}

C

反転して末尾にpushしていくのは,先頭と末尾へ交互にpushしていくことと変わらないのはすぐに分かる. 先頭・末尾へのpush,アクセスが高速なデータ構造といえばdequeであるから,この子を丁寧に扱ってあげると答えに導いてくれる.

ソース

#include <bits/stdc++.h>
using namespace std;
 
signed main() {
  deque<int> q;
  int n = in();
  
  rep(i, n) {
    int a = in();
    if (i % 2 != 0) q.push_back(a);
    else q.push_front(a);
  }

  if (n % 2 != 0) {
    rep(i, n - 1) {
      cout << q[i] << " ";
    }
    print(q[q.size() - 1]);
  } else {
    rrep(i, q.size() - 1, 1) {
      cout << q[i] << " ";
    }
    print(q[0]);
  }
}

D

逆元を用いた {{}_n C_r \pmod{a} } の実装が分からず,時間内に解けなかった.

 {N}個の数が必ず一つ以上使われている長さ {N + 1}の数列から,長さ {k}の部分列の個数を出力する問題.

 { {}_n C_r} (組み合わせ)を使う.

そのままやってしまうと重複部分を数えてしまうので,重複分を引いてあげる.

 { {}_{N+1} C_k } (長さ {k}の部分列の個数)

 { {}_{N-d} C_{k-1} } が重複分( {d}は被った2つの数字の数列上での距離)

 {{}_{N+1} C_k - {}_{N-d} C_{k-1} }

逆元と親身に接することで答えがでる.

ソース

#include <bits/stdc++.h>
using namespace std;

lint fact[100010], ifact[100010];

lint pow(lint a, lint k) {
  if (k == 0) return 1;
  lint res = pow(a, k / 2);
  res = res * res % MOD;
  if (k & 1) res = res * a % MOD;
  return res;
}

lint inv(lint a) {
  return pow(a, MOD - 2);
}

lint C(lint n, lint r) {
  if (n < 0 || r < 0 || r > n) return 0;
  if (r > n / 2) r = n - r;
  return fact[n] * ifact[r] % MOD * ifact[n - r] % MOD;
}

signed main() {
  lint n = in();
  int N = n + 1;

  fact[0] = ifact[0] = 1;
  rep(i, 1, 100010) {
    fact[i] = (fact[i - 1] * i) % MOD;
    ifact[i] = inv(fact[i]);
  }

  int d = -1;
  int used[100010];
  fill(all(used), -1);

  rep(i, N) {
    int a;
    cin >> a;
    if (used[a] != -1) {
      d = i - used[a];
    }
    used[a] = i;
  }

  rep(i, N) { print((C(N, i + 1) - C(N - d - 1, i) + MOD) % MOD); }
}

1125 -> 1173(+48, Highest!!)

はやいところ水色になりたいです