精進日記 001
就職やこれからのため,精進する内容を記録したいので,crowiを使って自分のwikiを建てたいと思いました.crowiというのはオープンソースのブログみたいなものだと,私は認識しています.これを使って進捗状況などを個人のホームぺージを構築したいです.
これを構築するため,まずサーバーを建てないといけなくて,借りるのもアリですが,前々からラズベリーパイで遊びたいと思ってましたので,ちょうどcrowiを建てることをきっかけにラズパイを購入して,やっていきたいと思います.
では,早速Amazonさんを開いて,見てみましたが,いろいろあって,どれを選べばいいかよくわかりません...
よく比較してみると,こちら(Amazonに飛びます)にしようと思います.
ラズパイ4で,64GBのSDカード付き,初心者に無難なセットだと私は思います.お値段も合理的かと思います.
「『USB』の違いってなに? Type-C、micro USB、USB3.0など各ケーブルと対応機種は…」を参考にUSBの違いについて初めて知りましたw
最近度々こういうケースを見かけるんです:Amazonさんから届いたものが開封されたものとか,古いものとか,飲まれたコーラとか?いろいろ不思議なことが起こっていますので,無事のラズパイちゃんがちゃんと無事に届くのかちょっと心配です.
就活がつらい話,これからの話
今までの経歴
- 2013/6 高校卒業
- 2013/9 中国から来日
- 2013/9-2018/3 関西知名私立大学文系 学部入学-卒業
- 2018/4-2020/3 地方国立大学情報系 学部入学-中退
- 2020/4-現在 同地方国立大学情報系 大学院在学
今までの就活
1回目の学部3,4年生時代は就活を一回試しにやってみました.
失敗しました.
自分なりに反省して,考えた理由として,以下の3点があると思います.
- 日本語ができなかった.
日本で4年間生活したにもかかわらず,授業が英語で,友たちも英語か中国語で話していたので,日本語があまりできませんでした.
- 就職する気がなかった.
日本語があまりできなかったから,人と関わる仕事をしたくはなかったです.なので,会社のエントリーシートなどはまじめに書いてませんでした.やる気がないエントリーシートを読んで,やる気がないのが伝わっていたか,エントリーしたところは全部ボツでした.後々考えたら,当然のことでした.
- 自分がわがままだった.
勝手に文系理系で判断して,偏見で文系を見てましたので,理系の専門に行きたいとずっと思っていました.今から見ると,仕事はそんなに文系と理系を区別していないことが分かります.
自分のやる気がないにもかかわらず,内定が欲しかったというのがありました.しかし,上記の理由で,内定をもらえるわけがなく,次々と断られて,気持ち的には非常につらかったです.
前回の就活から今回の就活まで
いろいろと精神的にぐちゃぐちゃした時代でしたが,理系の大学を受けて,再度学部一年生になりました.そこで,プログラミングコンテストと出会って,本当に運が良かったと思います.
2年のとき,またいろいろあって,大学院に行くことにしました.そして,院に入って,今に至ります.
今回の就活
M1になりましたので,就職活動,特にインターンを考え始めています.競技プログラミングでそこそこの成績を残していますし,学校でサークルまで立ち上げて,私の素晴らしい人格的魅力を感じるでしょうと自負しつつ,倍率の高いインターンに応募しましたが,見事にボツをくらえられました.
そんなわけないでしょうと思いましたので,意外もあって,自己否定もありました.自分の中ではうすうすと断られいる理由が分かっていながら,ちょっとショックでした.
自分のなにがダメというと,
- エントリーシートをまじめに書かなかった
エントリーシートを書くの本能的に拒絶しています.
- そもそも能力が足りなかった.
院生とは言っても,プログラミングを始めて2年ちょっとしかたってなくて,技術に関する知識が足りてないと思っています.具体的にどういうことかというと,私は自分の知識・能力・技術に自負していますので,自身の自負にふさわしい仕事をしたいですが,実際に身に着けている技術が私の想像とは乖離しています.
これから
これからは先生・先輩・同級生から意見を求めつつ,技術面で自分の行きたいレベルまで登っていきたいと思っています.
なので,これからのやるべきことは:
エントリーシートをまじめに書くこと,できれば誰かに見てもらうこと
少しずつ技術面で足りないところを勉強すること.(勉強内容をどこかにまとめたいと思っています.)
ちょっとのPS
つらいこともあるかもしれないけど,就職活動を通して,自分が人間としてどこが足りないかをちゃんと認識できるので,頑張って考えて,より良い自分になりたいと思っています.
また,私のブログなどを読んでいただいた方が,私という人間に興味を持ったならばご連絡ください.よろしくお願いします.
ICPC2019横浜大会参加記
はじめに
ICPC2019横浜大会に山梨大学のthx_yucpcとして参加しました.
チームメイトのToga,Hango,Xueleiのイニシャルを取って,チーム名にしました.
結果から言うと3完42位でした.
よくも悪くもない結果だと思いますが,悔しいところは多々ありました.
ここで,三日間の出来事を書きます.
一日目:リハーサル
山梨から横浜に出発して,現地に着いたらすぐに例のあれを撮影しました.
時間がまだ早いので,産貿ホール前の海を見て,ひたすら写真を撮りました.
山梨から来たので,海を見て,めちゃくちゃ興奮しました.
海辺で横国のニクローさんとばったり会って,一緒にお散歩しました.
お昼がまだなので,B1Fのレストラン街に食事を探してたら,空いている店が少なくて, いい感じのお店に入ったら,てぃーいけさんと会いました.
昼食を終え,入場しました.
リハーサルやりました.
2完でした.
- A とがくんがACしました.
- B 私がACしました.
- C 昔のバチャでACしたはずだが,できませんでした.
- D ダイクストラぽい,とがくんがやって,できませんでした.
WAのテストもできた,Clarificationもできた.
icpcの時のtakeout directory が送られてきた pic.twitter.com/zrJfybNE1z
— hango (@han_goat) 2019年11月20日
一日目:夜
中華街に行きました.
中華料理食べ放題を食べて,おなかいっぱいになりました.
もうこれで帰ってもいい気持ちになりまいした.
ABCがあって,参加TLEにも関わらずレジったわい:
Eいけるやろう
— xuelei精進せよ (@xuelei7) 2019年11月16日
提出
WA
ヤベェー、Aからちゃんと見よう
ってなった
参加しただけでほめてほしいです(//v//)
二日目:本番
まずは,
全財産をコーチに奉納したチームメイト pic.twitter.com/oumtxmuJw6
— xuelei精進せよ (@xuelei7) 2019年11月16日
コンテストが5分前倒しになって,会場の皆さんがざわざわしている中,ICPC本番が始まりました.
A, B
まず,はんごさんが環境整備し,私がA,とがくんがBを読みました.
はんごさんができたので,Aを提出,WA.
WAする要素分からないので,とがくんと交代.
とがくんがACして,Cを読む.
私がAを修正して,もう一回提出,WA.
実は横浜に行く前日の夜の夢に,私がAにWAを出した夢を見たので, 夢が真実になったことに対して,複雑な気持ちになりました.
とがくんとはんごさんと相談しつつ考えたら,WAの原因が分かって,提出したらAC.
AB以外
Cが難しそうなので,順位表を眺めたらHがすごく解かれて,次はEなので,Hを見る.
とがくんが大好きな文字列なので,とがくんに投げて,私がEを考察.
とがくんがHをコーディング,提出したら,RE.
デバグしている間,Eの解法が生えたので,代わりに私がEをコーディング,AC.
次に解けそうなのはCとGですが,両方を読んだら,Gのほうが解けそうと思って,Gを考察します.
私がGを考察しているとき,とがくんとはんごさんがHを一生懸命デバグしました.
終了10分前にGの解法が降ってきたが,時間を見たら,コーディングが無理だと判断し,あきらめました.
まとめ
5時間連続で頭フル稼働が流石につらくて,おやつを摂取しながら,何回もトイレ休憩しました.
コンテスト後,Gの解法があっていることを知って,余計悔しかったです.
Hも昔AtCoderで同じ感じの過去問をACしたことにも関わらず,解法を覚えていないことも悔しかったです.
いいことといえば,阿部くんが公式に載せられたことです.
ICPCでは、コンテスト会場にぬいぐるみなどを持ち込むことができます #icpc2019yokohama pic.twitter.com/fMmIdXRwO7
— ICPC2020JP (@icpcjapan) 2019年11月17日
そして,夢の中に出てきたカレーパンもあったので,いただきました.
二日目:懇親会
やはり,競プロで一番楽しいのは懇親会ですなぁw
企業ブースを一通り回し,ステッカーを収穫しました.
Google Googleさんのパズルをいろんな方々としました. プログラムのサンプルと回答が一つ与えられて,もう一方のテストケースで答えを出しなさいという問題です. 他の方々と協力し問題を解きました. いいグラフの問題でした.
optTech 数独を解ければタピオカがもらえるそうで,頑張りましたが,もらえませんでした. うさぎさんから数独のコツを教えていただきました.
Huawei 阿部くんの3Dモデルを作っていただきました!
FixStars 笑顔を採点してもらいましたが,いまいちの点数でした.
もちろん,いつものは欠かせません.
前でマスコット撮影大会やってます pic.twitter.com/KbgJgNoz2q
— xuelei精進せよ (@xuelei7) 2019年11月17日
横国と春合宿の件について相談し,今年も開催することが決まりました.
今年が去年よりいい合宿にしたいです.
そして,運よく一位のチームと話をすることができました.
Godが高校の後輩(制服を着てたのでばれた)で,本当に神でした.私も頑張らないといけないという気持ちになりました.
もう一人の立命館の後輩ともお話をすることができました.
私とお話しした方々ありがとうございました!楽しかったです!
終わったあと,流石につかれて,ホテルに戻って,すぐに寝ました.
三日目:企業見学
私たちはAグループでした.Huawei->NEC->しながわ水族館の順でした.
Huawei
音声や画像処理の技術はすごいです.
NEC
画像認識の技術がすごいです.
しながわ水族館
お魚がすごいです.
まとめ
いろんな最新の技術を持つHuaweiとNECの見学ができて,とても刺激になりました.今後の就職や進路について,参考になりました.
一日中,「東京大都会すごいなぁ~」という気持ちでした.重い荷物をもっていろんなところを走り回るのが疲れましたが,楽しかったです.
最後に,新宿でタピオカとおいしいビーフカレーをいただいて,山梨に戻りました.
最後のまとめ
いろんな人と会って,お話しして,楽しくて,とても勉強になりました.私の今後の精進の原動力にもなりました.
thx_yucpcはうまくやれば来年も参加したいです.
コーチのcommyさんには感謝です.YUCPC成立時からずっとお世話になってました.今年でcommyさんが卒業しますので,最後にこんな素敵な経験を共有できたので,いい結果だと思いたい.ありがとうございます.
Educational Codeforces Round 1 C. Ancient Berland Circus
問題
三点の座標が与えられて,三点で構築できる最小の正多辺形の面積を求めなさい
解法
与えられた三点からなった三角形の三つの内角の角度のGCD(最大公約数)を求める.それは構成できる正多辺形の一つの辺が360度に対応する角度である.なので,これで構成できる最小の辺の数を持つ正多辺形の辺の数を求めることができる.
三角形の外接円の半径を求める.
角度と半径と辺の数で正多辺形の面積を求める.
分類
幾何,三角形
コード
#include <bits/stdc++.h> using namespace std; const double PI = acos(-1); using ll = long long; using ull = unsigned long long; const int inf = 2e9; const ll INF = 4e18; const ll MOD = 1e9+7; const double eps = 1; typedef pair<int,int> P; template <typename T> class Triangle{ public: T xa, xb, xc, ya, yb, yc; T S, R; T a, b, c; T Ap, Bp, Cp; Triangle(T x1, T y1, T x2, T y2, T x3, T y3) { xa = x1; xb = x2; xc = x3; ya = y1; yb = y2; yc = y3; a = sqrt((xb-xc)*(xb-xc)+(yb-yc)*(yb-yc)); b = sqrt((xa-xc)*(xa-xc)+(ya-yc)*(ya-yc)); c = sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya)); S = abs((x2-x1)*(y3-y1) - (x3-x1)*(y2-y1))/2; R = a*b*c/(4*S); Ap = acos((b*b+c*c-a*a)/(2*b*c)); Bp = acos((a*a+c*c-b*b)/(2*a*c)); Cp = acos((b*b+a*a-c*c)/(2*b*a)); } }; double toAngle(double angle) { return 180 * angle / PI; } double toPI(double angle) { return PI * angle / 180; } double gcd(double x, double y) { while (abs(x) > eps && abs(y) > eps) { if (x > y) { x -= floor(x/y) * y; } else { y -= floor(y/x) * x; } } return x + y; } int main(){ ios::sync_with_stdio(false); cin.tie(0); double x1,y1,x2,y2,x3,y3; cin>>x1>>y1>>x2>>y2>>x3>>y3; Triangle<double> t(x1,y1,x2,y2,x3,y3); double n = gcd(gcd(toAngle(t.Ap), toAngle(t.Bp)), toAngle(t.Cp)); n = 180 / n; cout << setprecision(20) << n * t.R * t.R * sin(2 * PI / n) / 2 << endl; return 0; }
Educational Codeforces Round 1 B. Spreadsheets
B. Spreadsheets
問題
RXCY(X行目Y列目)形式とABC123(列の文字,行の数字)形式をお互いに転換するプログラムを作りなさい.
解法
まずはどの形式であるかを判断する.
判断方法は前半が全部英字,後半が全部数字でしたらABC123形式.
そうでないならRXCY形式.
それぞれの形式から行数と列数を求めて.他の形式へ適応する.
まとめると:
形式を判断する
↓
共通の行列座標を求める
↓
違う形式へ転換
分類
文字列処理
コード
#include <bits/stdc++.h> using namespace std; //const double PI = acos(-1); using ll = long long; using ull = unsigned long long; const int inf = 2e9; const ll INF = 4e18; const ll MOD = 1e9+7; typedef pair<int,int> P; //ABC123形式であるかを判断する bool isA(string s) { bool f = 0; for (int i = 0; i < s.size(); i++) { if ('0' <= s[i] && s[i] <= '9') { f = 1; } else { if (f) return 0; } } return 1; } //RXCY形式への転換 void A(string s) { ll r = 0, c = 0; for (int i = 0; i < s.size(); i++) { if ('0' <= s[i] && s[i] <= '9') { r *= 10; r += s[i] - '0'; } else { c *= 26; c += s[i] - 'A' + 1; } } cout << 'R' << r << 'C' << c << endl; } //ABC123形式への転換 void B(string s) { string r = ""; ll c = 0; bool f = 0; for (int i = 0; i < s.size(); i++) { if (s[i] == 'C') f = 1; else if (f) { c *= 10; c += s[i] - '0'; } else if (s[i] != 'R') { r += s[i]; } } string cc = ""; while (c) { c--; cc = (char)('A' + (c%26)) + cc; c /= 26; } cout << cc << r << endl; } int main(){ ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; while (n--) { string s; cin >> s; if (isA(s)) { A(s); } else { B(s); } } return 0; }
Educational Codeforces Round 1 A. Tricky Sum
A. Tricky Sum
問題:
1からnの和を計算する.しかし,2のk乗の数字は引く.
解法:
からまでのの乗の和を回引く.
分類:
算数
コード:
#include <bits/stdc++.h> using namespace std; const double PI = acos(-1); const double EPS = 1e-15; using ll = long long; using ull = unsigned long long; const int inf = 2e9; const ll INF = 2e18; const ll MOD = 1e9+7; const ll MOD1 = 998244353; typedef pair<ll,ll> P; #define rep(i,a,b) for (int i = (a); i < (b); i++) #define rrep(i,a,b) for (int i = (a); i >= (b); i--) #define REP(i,n) rep(i,0,n) #define RREP(i,n) rrep(i,n,0) #define sz(s) (s).size() #define pb push_back #define fi first #define se second //#define mp make_pair ll a[1000010]; vector<ll> v; int main(){ ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; ll sum = 1; a[0] = 1; v.pb(1); for (ll i = 1; sum <= MOD; i++) { sum *= 2; a[i] = sum; a[i] += a[i-1]; v.pb(sum); } v.pb(INF); while (t--) { ll n; cin >> n; ll ret = n * (n + 1) / 2; int pos = upper_bound(v.begin(),v.end(),n) - v.begin(); cout << ret - 2 * a[pos - 1] << endl; } return 0; }
ICPC2019国内予選参加しました
題名通り,ACM-ICPC2019国内予選参加しました.
チーム名はthx_yucpcです.
メンバーのとが(「T」oga)くん,「H」angoさんと私の「X」を取り入れて,山梨大学競技プログラミング部(YUCPC)とコーチへの感謝を込めてのチーム名でした.コーチのcommyさんの「C」もかけると「Yamanashi University Commy プロ Commy」になります.
チームメンバーの一人が別のキャンパスで直前まで授業があったので,梨大の他のチームと別の試験場になりました.
本番前は試験場の環境を整えました.模擬国内のとき,プリンターが事故ったので,本番でちゃんと働くように念入りにテストしました.
本番直前に一緒に注意事項の確認とか深呼吸とかしました.
本番
A問題の早解き担当でしたが,派手に誤読して,遅解きになりました.
C問題を読む.なんかできそうなので,HangoさんからD問題の概要を聞きます.
D問題を考えるととがくんがB問題を解いてくれたからCの実装に移します.
Cの計算量ヤバそうだったから,チームメイトに確認を取って,大丈夫そうなので,実装を再開します.テストケースをローカルで回したら,少し時間かかったけど,ACできたのでよし.
とがくんもD問題手こずっているそうなので,Hangoさんがテンプレとかを打ち込みます.
順位表を眺めるといい感じの順位なので,少しうれしくなりました.
EよりFを解いたチームが多かったので,Fを読みます.
Fができなそうなので,Dに戻ります.
とがくんがDを分かったぽいので,Dを実装している間,E問題を見ました.
Eを読んでたら実装ゲーであることが分かりました.
そして,とがくんがDをACしました.
E問題をゴリゴリします.Eをゴリゴリするとやる気がなくなって,順位表をみて,アジア進出がほぼ確定なので,さらにやる気をなくす.
そして,コンテストが終わりました.
試験場を片付けて,解説放送とかを見ました.
打ち上げはサイゼリアの間違い探しをしました.ACしました.
横浜大会楽しみにしています.
以上です.