草体にぼ日記

だらだらと

春風とムンバイゴロウ

春風とムンバイゴロウ なにそれ

こんにちは、これ書いたら寝ます。
昨日(金曜日)の活動は
朝から17:30まで大学の講義、(1コマ空があって、そこで午前の講義の課題をした)
後、友人とさわやか(ハンバーグやさん)、そして家に来てもらってココちゃんを直そうと少し努力→断念
って感じでした。20時頃友人が帰宅、AtCoderの問題を解こうとして妙に眠くて21時頃就寝→23:32起床

でまあ、今から話すのはこの起床してからのことですね。
2問解きました。
C - GeT AC
C - Attention
この二つ。

まあ知見メモみたいな感じなの一応書いておきます
C-Attention
僕の解き方(アルゴリズムというとなんか間違えちゃいけなそうな気がして怖いからふんわりした表現)
・まず、1人目を指名したときの嫌がる人の人数eを記録する
ループを回す

~
	ll ans = e;
	ll now = e;
	for(ll i = 1 ; i < n  ; i++){
		if(s[i-1]=='E') now--;
		else now++;
		if(s[i]=='E'&&s[i-1]=='W')now--;
		if(s[i]=='W'&&s[i-1]=='E')now++;
		ans =  min(ans,now);
		//cout<<"i: "<<i<<"now == " <<now<<endl;
	}
~

なんかまあ、ぶっちゃけif二つ並んでる行、どうしてこれで行けたのかはよくわかんないんすよねww
書いたら合っちゃった~~
(いや考えろよ…)
ちなみにsはstring s;で入力で与えられるWとEで構成された文字列です。

          • -

この問題、ディフィカルティ―が190くらいだったんで累積和は使わないんだろうな~って思いながらこういう解き方をしてたんですけど、解説みたら累積和って書かれてて笑いました。
いやいや、できない人間のくせにディフィカルティ―で解法を決めるのは良くないですね。

累積和を使って解きなおしました。
そして次、AtCoder problemsのRecommendationsから適当に問題を選んだらGeT ACでした。
運命ですね
累積和の次に累積和。
これね、最初僕が RE(実行時エラー)が出してたんですよ。
最初は入力でl1 r1 , l2 ,r2...を二次元配列で受け取ろうとしたんですね。

でそん時書いたコードがこれ

~
vector<vector<ll>> sec(q,vector<ll>(q));
	rep(i,q) {
		cin>>sec[i][0] >> sec[i][1];
		sec[i][0] --;
		sec[i][1]--;
	}
~

まあ、二次元配列普段書かないからどこか間違えているんだろうな…と思いつつtwitterに上げていたらフォロワーさんからq^2のメモリを確保している。と言われ
見てみると その通りでした…
実行時エラーは0割したときに出る、他は知らん。って感じったのでメモリ不足で実行時エラーが出ると知ってかなり驚きました。
これは知識を得てうれしい。やった!の驚きです。
まあなんか、一般的な解き方は公式の解説見ればよくて、わざわざ僕が言うことは特にないです。

      • -

23時に起きて2問しか解いてないんですね。思ったよりやれていない…
twitter楽しいです。

”あ、最近していることは、線形代数、金のセンテンス(TOEIC英単語)、螺旋本(アルゴリズムとデータ構造)、C++のおべんきょ、AtCoderです。”
これ昨日のブログに書いた文章なんですけど、まあAtCoderだけしているというわけではないので、一日AtCoderだけして寝る。というのはなんだか怠けてる気がしちゃって、3時頃から今までc++のお勉強をしていました。

だからそこそこやり切った感があります。嬉しいね。
(金のセンテンスも10個くらい進めた)

おやすみ!!(書きたいこと全部書いたかな…?)