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!!)

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

Bash on Ubuntu on WindowsとWindowsでクリップボード共有っぽいことする

初投稿です.既出だったら許してください. Qiitaに投稿したやつをここにも残しときます

qiita.com

Windows10は2017年4月11日にCreators Updateが配信されました. そこで新しく追加された機能の中に「Windowsアプリケーションとの相互運用」があります.
今回はこれを利用して,Bash on Ubuntu on Windows(以下BoW)とWindowsとのクリップボード共有まがいのことをしてみようと思います.

準備

Windows10側での準備

まずはWindows10でのCreators Updateを行ってください.
そのあとghuntley/pasteboardreleasesから「pasteboard-v1.1.0.zip」をダウンロードしてください.この中の pbpaste.exe を使います.

ダウンロードし,展開したフォルダpasteboard-v1.1.0pasteboard にリネームした後,任意の場所に移動,コピーして環境変数pasteboard-v1.1.0 までのパスを追加します.

ここでは C:\app\pasteboard環境変数に追加しました.

コマンドプロンプトpbpaste と打って動くか確認したら準備は終了です.

BoW側での準備

改行コードや文字コードの変換に必要なnkf をインストールします.
sudo apt-get install nkf でインストール出来ます.Linuxはコマンド一つでインストール出来てとても楽ですね.

nkf --help と打ってヘルプが表示されたら準備は終了です.

作業

さぁ,実際に使うための作業をしましょう.
BoWを起動し,vim ~/.bashrc などで.bashrc を開きます.
ここに以下のコードを追加してください.

alias wcopy='clip.exe'
alias wpaste='pbpaste.exe'

保存して,source ~/.bashrc するかBoWを再起動してください.

使ってみる

windowsで適当なテキストファイルを作りましょう.ここではデスクトップにhoge.txt を作ってみます.

ばっしゅおんうぶんつおんうぃんどうず

ぽよよ

BoWで/mnt/c/Users/{Windowsのユーザ名}/Desktop に移動します.

cat hoge.txt | wcopy と入力するとコピーが出来ます.

その後pbpaste と打つとターミナルにコピーした内容が表示されますが,文字化けしていると思います.そこで間にnkf をはさみ,文字コードを変換してからコピーするようにします.

nkf -w hoge.txt | wcopy
(ちなみに,ここで改行コードをLFに変換してもclip.exe の仕様のせいかCRLFになってしまうっぽいのでwpaste したあとに改行コードを変換する必要があります)

wpaste で確認すると文字化けが解消されているかと思います.

また wpaste > out.txt とすることで wpaste の内容をout.txt に保存することが出来ます.

使い方まとめ

  • cat ファイル名 | wcopy でコピー
  • wpaste でコピーした内容が見れる
    • wpaste > ファイル名 でファイルに出力できる

以上でクリップボード共有まがいを実現する計画は完了です.
もし何かあったら,コメントかTwitterでリプしてくださると助かります.

2016年リリースデレマス曲個人的ランキング

この記事はProlab Advent Calendar 2016の"23"[::-1]日目の記事です.

www.adventar.org

だれ?

kurokoji(@kuro_koji_)です.
沖縄高専のメディア情報工学科2年の人間です.
久留米高専生ではないです.
情報オリンピック本選に出ます.宜しくお願いします.

藤忍佐々木千枝の担当をしています.

最近ではデレステのコミュ第39話 「The Words for LOVE」 にて,千枝が向井拓海藤本里奈大和亜季らを一喝するシーン

を見て

となっていました.

2016年リリースデレマス曲個人的ランキング

3位: Love∞Destiny

Love∞Destiny(佐久間まゆ,北条加蓮,小日向美穂,多田李衣菜,緒方智絵里)

第3位はデレステイベント LIVE Groove Dance burst(2016年6月30日から7月7日まで開催) にて登場した「Love∞Destiny」です.

出逢った瞬間に ココロは決まっていたの 未来永劫 添い遂げるって

好きな人に対する深い愛がストレートに伝わってくる曲であります. また,ぼくはこの曲のダンスが好きで,特に

の部分がめっちゃ好きです.

2位: 咲いてJewel

咲いてJewel(鷺沢文香,速水奏,橘ありす,塩見周子,二宮飛鳥)

第2位にランクインしたのはTHE IDOLM@STER CINDERELLA MASTER Cool jewelries! 003 に収録されている,「咲いてJewel」です.

前奏とかのテレテレテレテレ↑テレテレテレテレ↓テン↑テテテン↓(楽曲試聴で11秒あたりとか)がすごい好きです.

曲中の

「誰も知らない調べが」

の部分はありす (橘ですっ!!) が歌っているのですが,これがね,最高なんですよ.

1位: ハイファイ☆デイズ

ハイファイ☆デイズ(佐々木千枝,櫻井桃華,市原仁奈,龍崎薫,赤城みりあ)

堂々の1位にランクインしたのはLIVE Groove Dance burst(2016年3月31日から4月7日まで開催) にて登場した「ハイファイ☆デイズ」です.担当の千枝がいるよ!!

「昨日の涙は今日の勇気」

流した涙は決して無駄ではない,未来への糧となるんだというのが伝わってきます. 落ち込んでいるときに是非聴きたいパッションな曲です.

番外編 ~カバー曲~

jewelriesシリーズには,選出メンバーそれぞれがカバーした曲も収録されています.その中で好きなものを上げたいと思います.

きみにとどけ

きみにとどけ(橘ありす)

THE IDOLM@STER CINDERELLA MASTER Cool jewelries! 003 に収録されている,橘ありすが歌う「きみにとどけ」.

「きみにとどけ」は2009年10月6日から放送されたTVアニメ「君に届け」の主題歌です.

一番最初に聴いたとき,ありす(佐藤亜美菜さん)のウィスパーボイスと歌詞・メロディがマッチしており耳がとろけるかと思いました. 大音量&(イヤホン|ヘッドホン) で聴くことを強くオススメします.

佐藤亜美菜さんは天才だと思います.
リクエストしたミノPさんは天才だと思います.

みんなCD買おう

どうでしょうか.言葉は少々足りないと思いますが,多少は興味を持ってもらえたのではないでしょうか.

これは裏話なんですが,ぼくが初めてCDを買ったのがこのデレマス関係でして(このときはTulipとPaJe002を買った)自分でも驚きです.お金を掛けられるほど好きなものが出来たのも初めてです.デレマス,いや,アイマスはこれからの僕の人生に大きい影響を与えそうです.

デレマス全然しらないぞ,デレマス分かるけどデレステ程度でしか曲聴かんぞ,という方もこの機会に是非ともCDをご購入いただき,この世界にどっぷりと浸かって頂きたいです.
jewelriesシリーズはボイスドラマも入ってるし最高だよ!!最高!!

明日はふなちさんです.