Discommunication

その時に応じて流行ってる事を

ABC138 感想

 今回はC問題が簡単で、運よくEが解けたので4完1100点の水色perf。天才かな?

Contest Result - AtCoder

  • A

解くだけ

  • B

解くだけ 
出力例眺めてたら小数点以下が10ケタくらい出てたのでビビったけど、誤差10^-5以下なら許されると書いてあったのでdoubleで普通に出した

  • C

数学的な証明は全くしてないけど、サンプル見て小さいやつからくっ付ければ解けそうだなと思った。
sortして足してeraseするを繰り返したら通った

  • D

木構造まったくやってないから解けない
今はbit全探索とDPを勉強している 俺の時間は有限

  • E

s="abcd"
t="ca"
この時、s.find(t[0])は3文字目でs.find(t[1])は1文字目。
前の探索の場所をbefore、今回の探索の場所をafterと定義すると、
before=3, after=1;

アルゴリズムは以下のように書いた。
 afterがbeforeより大きい場合、answerの値はafter-beforeで更新される
 afterとbeforeが同じ場合、同じ場所にあるのでs.size()を加算する ex)s="ta",t="tttt"
 afterがbeforeより小さい場合、文字を1週する。answer = s.size()-before + after

  • F

見てない

Atcoder ABC049C

 eraser->erase->dreamer->dreamの順に消せば万事上手くいく。

 

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

int main(){
string a("dream");
string b("dreamer");
string c("erase");
string d("eraser");

string S;
cin >> S;

//eraser->erase->dreamer->dreamの順に削除

//erase eraser
while(S.find(d) != string::npos){
S.erase(S.find(d),6);
}
 
//erase erase
while(S.find(c) != string::npos){
S.erase(S.find(c),5);
}

//erase dreamer
while(S.find(b) != string::npos){
S.erase(S.find(b),7);
}

//erase dream
while(S.find(a) != string::npos){
S.erase(S.find(a),5);
}

if(S.empty()) cout << "YES" << endl;
else cout << "NO" << endl;

return 0;
}

  

 AC。実行時間1852ms 

 atcoderの制限時間は2秒なのでめちゃくちゃ危ない。しかもこれ嘘解法らしい(dreraseeamなどが通る)。

 いろいろと考慮すべき事柄はあるが、計算時間を早くしたい+正しい解法に直したい。

 

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

int main(){
string a("dream");
string b("dreamer");
string c("erase");
string d("eraser");

string S;
cin >> S;

//eraser->erase->dreamer->dreamの順に削除

int k;

//erase eraser
while(1){
k = S.find(d);
if(k == string::npos) break;
S.replace(k,6,"1");
}
 
//erase erase
while(1){
k = S.find(c);
if(k == string::npos) break;
S.replace(k,5,"1");
}

//erase dreamer
while(1){
k = S.find(b);
if(k == string::npos) break;
S.replace(k,7,"1");
}

//erase dream
while(1){
k = S.find(a);
if(k == string::npos) break;
S.replace(k,5,"1");
}

int answer = 0;

for(int i=0;i<S.size();i++){
if(S[i]!='1'){
answer = -1;
break;
}
}

if(answer == 0) cout << "YES" << endl;
else cout << "NO" << endl;

return 0;
}

 

 AC。1643ms。

 findの回数を減らして、replaceでいったんゴミ混ぜてから一括消去する方針に。時間的にはまあ早くなっては・・・いる

 

 ちなみにregex使えば正規表現は一発で解けま~~~~~~す

 

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

int main(){
string S;
cin >> S;
if(regex_match(S,regex("(dream|dreamer|erase|eraser)*")) == true) cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}

 

 29ms!!!!!!!!!!!!!!!!!!

 

 最初こんなん許されていいのか?って思ったけど鏡餅の問題はset使って解いたしそれが許されるならこれも許されるだろ。

 使えるものは使っていけ AC出せば正義だ 二度と逆らうなよ

コミケ

 1日目感想

 10時30分について11時過ぎに入れた

 西は混んでたけど南は空いてて、涼しかった

 薄い本を1冊だけ買って、あとは非電源ゲームの説明だけ聞く冷やかしをしてた。遊戯王っぽい動物将棋とか、五目並べの棒Verなんかが印象深かった。

 

 2日目

 興味がないので行かなかった

 

 3日目感想

 6時頃についたが、橋の方まで並ばされた。テレポートから行った方が良かったと思われるが、この時間だとギリギリ損益分岐点だったのかもしれない。

 入場は10時40分だったと記憶している。1日目はついて1時間足らずで入れたが、今回は5時間待機したということになる。

 それでも入った瞬間ツイッターで完売と言っている方がいたりして、まあ始発で来る意味はないなと思った。

 西1は地獄の様相を呈していた。まず基本的に入れない。入場ルートが西2からの外大回りしかなく、二つある館内の入口はすべて排出に使われていた。というのも、人数が多すぎて見るからにパンクしている。俺は上から降りてきたクチだが、来た瞬間は身動きが取れなかったし、人の流れに流されるままになるしかなかった。通路が混みすぎててその列のサークルが販売中止になっていた。こんなん初めて見た。地獄かな

 さて、始発で来たのはいいが、俺はアイマスやってないし、艦これもアズレンもやってないので適当にオリジナルを数冊見て回った。アイマスアズレンの本を絵だけ見て買った後は文芸コーナーで冷やかしてた。

 文芸コーナーはその名の通り売られてるのはマジのガチで小説なのだが、絵と違って小説は面白さを会場で判断できないし、面白いと後で評判になったとしても入手性が低くなかなか奥深いジャンルではある。まあほとんど買ってないんだけど。

 

 4日目感想

 6時30分ごろについた。入場は昨日と変わらず。10時段階では昨日より遠い位置で待たされていたが、昨日は初手4F(西34 or 南34)の通路がやたら渋滞になっていて、それを選んだらクソ待たされたのでそれがなかったからかもしれない。

 西1->西34->南34というルートを使った。というのも、単純に混雑具合や売り切れる率を考慮した結果、"同人ゲームはよほどのことがない限りは売り切れないだろう"という判断に至ったからだ。まあおおむね正しかったと思う。実際にその予測は正しかったし、西34は2手目でもほとんど買えなかった。というか、西1ですら売り切れてた。(ツイッター見たら会場40分でハケてたっぽいけど流石にもうちょい持って来いよ・・・委託するんで転売買わないでくださいじゃないが)

 同人ゲームはいっぱい買った。クラウンワークス虚実概論の断章は出なかったし、スーサイドフェンスの完結編も出なかったけど。まあ目についたのから買った。金の問題からあきらめたり、1巻から4巻まであるけど2巻だけ売り切れてますとか言われてあきらめたりしたが、おおむね回収できたはず。

 

 総評

 コミケスタッフが有能みたいな話は聞くが、それは能力の高さではなく経験が元になっているだけなので状況が変わると別に有能でもなんでもないただのおじさんなんだなと思った。コミケは何回か参加してるが、今回の三日目と四日目は過去に類を見ないほど辛かった。トイレにすら行けない地獄。いきなり列狭められておしくらまんじゅう状態で待機させられた時には殺意すら芽生えた。ガチで無能。

 そもそも始発だろうと買えないもんは買えないんだから、まともな感性、知能を持っている人間なら徹夜するか近隣の歩いて行ける場所で時間を潰して始発前に来る。金を惜しまない人間なら委託と転売に頼ってマイナーサークルだけ足で回ればいいし、よほどのことがない限りは11時くらいに来るのが一番いい。

 三日目の8時から10時に来た連中が東で蒸し焼きにされたらしいが、そんな意味不明な時間帯に来て何がしたいんだ?という感想がある。一番コスパ悪いじゃん、徹夜しろ

競プロ

 

 始めました(二年ぶり)。

 目標はABCで3完を安定させ、緑色に到達することです。

 今まではC言語でやってきましたが、string型が使えなかったりライブラリの面で劣ることをようやく理解したので、これからはC++を並行して学んでいく予定です。

 夏休みが終わるまでにコンテストはそこそこの数があるっぽいので、とりあえず9月末までには色をつけたいと思ってます。

 

 なぜこんなことを始めたかというと理由は気分で、たぶんすぐ飽きてやめると思います。

 

SSD買った

 SAMSUNG 860 QVO 1TB。

 amazonで13110円だった。SSDは今が底値に近いと聞いたので、買っておいて損はないと思った。ほかにも理由はいくつかあって、メインで使っているSSDが256GBしかなくて常に容量に苦しんでいた。なんやかんや3年半使っているのでTBWに達しそうだったのも理由の一つだし、前記事の問題をもしかしたら解決してくれるかもしれないという期待もあった(ドライバの問題な気はいまだにしている)

 

 マザーボードがH170なので、M.2SSDも一応刺せるようだが辞めた。いまの速度に別段不満はないし、970EVOは高い。安いM.2もあるにはあるが・・・

 

 そんなこんなで今から試してみるわけである。

 

 試した

f:id:overthelimit:20190807085031p:plain

 

 クローンソフトはうまくいかなかったので、クリーンインストールした。クラウンワークス虚実概論のセーブデータがすべて消し飛んでとても憂鬱な気分である。

 

 CrystalDiskmarkまわしてみた

f:id:overthelimit:20190807092247p:plain

  これ見てもよくわからんな。なんでまわしたんだ?

 

 前使ってたSSDCrystaldiskinfoで見るとこんなん

f:id:overthelimit:20190807085154p:plain

  長年使いこんでいたのがよくわかる

 公称値で102TBW、書き込み量が91245GB(91.2TB)なのでもう少しで切れちゃいますね。実際はすぐにデータがどうこうなるもんでもないというけれど。

 このSSDどうしようかな~256とかストレージで使うには微妙だ

 

 

アクティブウィンドウ以外クリックできない現象に襲われた

 PCを触っていると、突然ほかの画面へのクリックが利かなくなる。Firefoxを使っていて、デスクトップのアイコンをクリックしようとしたら利かないのだ。ポインタは動くがタスクバーも何もかもクリックができない。キーボードは聞くがタスクマネージャーを開いても同様にクリックできない。俺はストレスに襲われた。

 

 調べたらこんなものがでてきた

https://answers.microsoft.com/ja-jp/windows/forum/windows_7-performance/%E3%82%BF%E3%82%B9%E3%82%AF%E3%83%90%E3%83%BC/a50c896d-3036-48f3-940d-62b12fcbdb10

 

 ここに書かれている手法、つまり

①ctrl + alt + Delete

②キャンセル

 を試したらたしかに一時的には治った。が、根本的対処にはなっていない。

 

 俺の場合PCが壊れる理由には心当たりがありすぎた。デスクトップはDドライブに移しているし、問題が起きたらレジストリで場当たり的な対処をしまくっていたためだ。 デバイスマネージャーで一通り怪しいものを入れなおしたが効果がないので完全にレジストリの問題にしか思えない。そもそも俺のPCはwinタブ押してコントロールパネルで検索しても出てこないくらいにイカれている。タスクマネージャーでスタートアップも確認されない。どこにあるのかは俺すら知らない。

 

 仕方がないから新しくユーザーを作ってそっちで使うことにした。昔のは一応取っておく・・・プロファイルデータとか引っ張り出したいときもあるだろうし・・・

 

 わたしって、ほんとバカ。

 

 追記:

 ユーザー変えても発生したからパーツが有力 とりあえずSSD買える。治らんかったらGPU変える 無駄な出費だ