癒しがほしい

猫並みにゆるく生きています

富士山やああ富士山や富士山や

一応この記事はこちらアドベントカレンダーに貼り付ける記事ですが、まぁ書く人が少ないので、旅行記としてゆるふわに書こうと思います。

1日目: 箱根→御殿場→須走

実は昨年、御殿場まで1日で走ったのですが、今年は須走まで走ることになりました。まぁ、これが割としんどい。。。(´。_。`)ゞぅぅぅ…
僕が作ったルートではないですが、こんな感じでした。
latlonglab.yahoo.co.jp

正直芦ノ湖半周したあたりで、足が残ってなかったですね...(最近引きこもってたからね)

この日のおすすめポイントは、何と言っても長尾峠
f:id:donko110:20181130214650j:plain
車も少ないし、左側の景色を楽しめながら登れるので僕は好きですね。あと、静岡側の下りがくねくねしてて楽しいですよ>_<

2日目: 須走→富士五湖富士宮

「11月の朝寒すぎ... ε=(‐ω‐;;)まぁ、漕げばあったまるやろ」
とかほざいていたら、早速峠へ。(。_。`)チーン
だましだまし登って、山中湖へ。
f:id:donko110:20181130215754j:plain
うーん曇ってる...
今日は富士山見えなかったら見所が無くなる気がするんだけど...

河口湖

ちょっと早いですが、ここで昼食を取ることに。河口湖駅前のほうとう屋に入りました。
f:id:donko110:20181130220320j:plain
うまーべらす

西湖

通過。雲が晴れてきて、富士山見えそう。

精進湖

一部界隈にうけそうな湖。うーん湖飽きてきたなw

本栖湖

ここは行きたかった!理由はオタクだから*1
f:id:donko110:20181130221104j:plain
f:id:donko110:20181130221522j:plain
 *:.。.(❁´ω`❁).。.:*

はい、オタク乙。

それはそうと雲が晴れて、千円札の富士山が見えました。
f:id:donko110:20181130221821j:plain

溢れでる日本感 (´ω`)

本栖湖を一周して、富士宮へ。
途中で白糸の滝を見ようということで、寄ってみました。思ったより迫力があったので、近くに寄った際は是非。(湿度120%ぐらいあった)
f:id:donko110:20181130222336j:plain

最後に

富士山見すぎて飽きた。

ARC 047 B - 同一円周上

備忘録。
解説AC

考察

マンハッタン距離が等しい点をとると、菱形のような形になる。これは解説の図がわかりやすい(12ページ)。https://www.slideshare.net/chokudai/arc047-57126901

www.slideshare.net


問題の解説にもあるが、この図形を45度回転させて正方形を作ることで今後の処理を楽にする。
この時の座標変換は(x, y) → (x + y, x - y) となる。

あとは、各辺を見ていって、正方形の中心を求めて、それぞれの頂点について確認すればおーけー。


典型かどうかはわからないけど、覚えておきたいアイディアだなと思った。

Maximum-Cup 2018 C - 嘘つきな天使たち

備忘録です。

解法

二部グラフかどうかを判定すれば良い。
次の性質を用いることができる。
二部グラフ\leftrightarrow奇数長の閉路を部分グラフとして持たない
証明はここ

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<(b);++i)
#define erep(i,a,b) for(int i=a;i<=(int)(b);++i)
#define per(i,a,b) for(int i=(a);i>(b);--i)
#define eper(i,a,b) for(int i=(a);i>=b;--i)
#define pb push_back
#define mp make_pair
#define INF (1<<30)-1
#define MOD 1000000007
#define all(x) (x).begin(),(x).end()
using namespace std;
typedef long long ll;
typedef pair<int,int> Pii;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a = b; return 1; } return 0; }
int dy[]={0, 0, 1, -1};
int dx[]={1, -1, 0, 0};
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a/gcd(a, b)*b;}

int n, color[100005];
vector<int> g[100005];  

bool dfs(int v, int c) {
    color[v] = c;
    rep(i, 0, g[v].size()) {
        if (color[g[v][i]] == c) return false;
        if (color[g[v][i]] == 0 && !dfs(g[v][i], -c)) return false;
    }
    return true;
}

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
    cin >> n;
    rep(i, 0, n) {
        int a; cin >> a;
        a--;
        g[i].pb(a);
        g[a].pb(i);
    }
    rep(i, 0, n) {
        if (color[i] == 0) 
            if (!dfs(i, 1)) {
                cout << -1 << endl;
                return 0;
            }
    }
    cout << n/2 << endl;
    return 0;
}

AtCoder Regular Contest 006 C - 積み重ね

問題文

C - 積み重ね

解法

Greedy. 重ねられるところまで重ねてあげて、無理だったら地面(?)に置く。できるだけ重ねてあげれば山の個数を最小にできる。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<(b);++i)
#define erep(i,a,b) for(int i=a;i<=(int)(b);++i)
#define per(i,a,b) for(int i=(b);i>(a);--i)
#define eper(i,a,b) for(int i=((int)(a));i>=b;--i)
#define pb push_back
#define mp make_pair
#define INF (1<<30)-1
#define MOD 1000000007
#define all(x) (x).begin(),(x).end()
using namespace std;
typedef long long ll;
typedef pair<int,int> Pii;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a = b; return 1; } return 0; }
int dy[]={0, 0, 1, -1};
int dx[]={1, -1, 0, 0};
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a/gcd(a, b)*b;}

int n;
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
    cin >> n;
    vector<int> w(n), a;
    rep(i, 0, n) cin >> w[i];
    rep(i, 0, n) {
        bool flag = true;       
        int dist = INF, itr = 0;
        rep(j, 0, a.size()) {
            if (a[j] >= w[i]) {
                flag = false;
                if (dist > a[j] - w[i]) {
                    dist = a[j] - w[i];
                    itr = j;
                }
            }
        }
        if (flag) a.pb(w[i]);
        else a[itr] = w[i];
    }
    cout << a.size() << endl;
    return 0;
}

 

macbook pro を買った話

これは coins Advent Calendar 15日目の記事です。

13日目の記事は 普段歴史に触れない人へ - 歴史とプログラムの狭間 です。

coins Advent Calendar 2017 の Adventar は こちら

龍馬伝、懐かしいですね。親の影響で見ていました。機会があれば再履修したいです。

自己紹介

 先に自己紹介を。coins17のdonkoといいます。最近寒すぎてサムスになりそうです、はい。

Twitterアカウントは@donko_ITF です。

情弱なのでプログラミングとか全然できません。精進します。

はじめの一歩

この記事は新しくPCを買う人に読んでもらいたいというより、これから入学するであろう新入生に読んでもらいたいなぁ、と思っています。というのも、大学に入ってから「PC買おう」と思って適当になものを買って、あとで悲しい気持ちになるのは嫌ですよね。(まぁ、わいがそうなったからこんな記事を書いているわけですけれども...)

というわけで、ここからは私の二代目PCちゃんを買った時の話です。

目的はしっかりとね

先ずは、自分がこれから何をしたいのかを明確にするべきですね。(一番の失敗点はここだったと思います) 

最近、サークル関係で動画編集などのためにAdobeのソフトウェアを使う必要性が出てきました。学割とか効かせると年間2万ちょっとで利用できるそうです。

www.adobe.com

当時、僕が持っていたPCのメモリは4GBのDDR3-1600。MS Wordを開くだけでWindowsがフリーズする始末。無論PremiereやAEを使おうものならどうなるか容易に想像できます。(Ubuntuデュアルブートしてしのいでいました)

うーん、渋い...

この時点で思考が買い替える方向に振り切れました。

なににする?

もうフリーズする画面に手を合わせるのは嫌だったので、メモリは16GB以上でストレージもそこそこあると安心だろうと思い、500GB以上という条件の下で探してみたところ、いろいろ見つかりました。

ありすぎて困るぐらいには。

細かいところを比較していくと、CPU・GPUとかバッテリーとか操作性とかとか。これ以上は個人の好みかなと思います。

いろいろ考えた挙句、私はMacbook pro 13 touch bar対応モデルの購入を決めました。

Apple on Campus

高い、高いよmac。どうにか安くならんのかと思ってググってみると、こんなプログラムを見つけました。

Apple On Campus (AOC) | 筑波大学 情報環境機構 学術情報メディアセンター

ちょっと安くなるみたいです。使うに越したことはないので、早速Appleコールセンターで買えるということだったので、Appleへ電話。(学内LANからならwebで購入可能)

 

お姉さんの指示に従って番号を入力後、しばらくすると担当者の方と思われるお兄さんが対応してくれました。そこでApple on Campusでmacbook pro を買いたい、ということを伝えました。大学名や学籍番号、メールアドレスを伝え、またマシンのカスタマイズも電話で伝えました。

内容確認のメールが届き、間違いないことを伝えて電話を終えました。

 

注文から商品の受け取りまでにちょうど1週間かかりました。カスタマイズすると上海からの発送になるようで、時間がかかるそうです。

思ったより使いやすいね

ずっとwindowsを使ってきたので、若干抵抗はあったのですが、ワークスペースの切り替えとか、Chromeで前のページをみたりするときとか、トラックパットの使い方を少し覚えただけでかなり便利になりました。まぁ、時々CapsLockとcontrolを間違えて、「あ...」ってなる時がありますが。。。

あれしたい、これしたい

これはPC選びとは全然関係ない話です。

一応coins AdventCalendar ということでフレッシュ(?)な話を一つ。

新入生説明会の時にから使いたいなぁ、っておもってた 「openfab 創房」

論理回路も授業でやってるし、創房で自作CPUをつくろうかなぁ、などと考えてます。

あとは、最近興味が湧き出したデータマイニングにも手を出してみたいと思います。

サークル関係ではゴリゴリ映像編集とかしたいですね。

終わりに

 繰り返しますが、PCを買う前にはよくよく自分のやりたいことを考えて、明確にしましょう。そこそこのスペックで安けりゃいいや、みたいに考えてるとあとで後悔します(ソースはわい)。逆に、やりたいことがわかってたら最高の相棒に巡り会えると思います。

マシン選びは「楽しく、慎重に」ね!