matthew as a q.

目標10記事quant

Diverta Programming Contest 2参加記

問題総評

A

N-K

Submission #5920234 - diverta 2019 Programming Contest 2

B

一番多く存在する差の組み合わせの数を数えて、全体から引く。

Submission #5930048 - diverta 2019 Programming Contest 2

C

解説と他の方の提出を見ての理解。

ans = max - min + 残りの絶対値の和 ansを作るためには、minから0以上の値を引く操作をした結果と、maxから負の値を引く操作をした結果を出力すればよい。

Submission #5941282 - diverta 2019 Programming Contest 2

D

解説読みました。

ナップサック2回やる

未提出。

E, F

まだわかっていません。

tips

Tupleの比較

Tupleオブジェクト同士の==比較だと、同一インスタンスのときのみtrueとなる。 値が一致しているときにtrueとなるようにするには、以下のように要素同士を比較する。

var c = diffPairs.Where(e => e.Item1 == num.Item1 && e.Item2 == num.Item2);

特定の値のindexをArrayから取得する

IndexOf:最初から見ていったときに、最初に合致した値のIndexを返す LastIndexOf:最後から見ていったときに、最初に合致した値のIndexを返す

int maxIndex = Array.IndexOf(array, max);
int minIndex = Array.LastIndexOf(array, min); 

出力の高速化

使えそうなので利用。 コードは以下より引用。 C#で競技プログラミングをし続ける人のためのTips - Qiita

var sw = new StreamWriter(Console.OpenStandardOutput()){AutoFlush = false};
Console.SetOut(sw);
/*何らかの出力処理*/
Console.Out.Flush();

Arrayをインデックス付きで走査

var others = numbers.Where((num, i) => i != maxIndex);

配列の絶対値の和をLinq

int sum = array.Sum(Math.Abs)

計算量削減メモ

# 事前処理で定数時間化

 

## 題材

https://atcoder.jp/contests/abc129/tasks/abc129_d

 

## 具体的には

なりでは、各地点に対して上下左右の探索が必要で、O(HW(H+W))となり、H、Wが2000以下の正の整数のため、時間内に計算間に合わず。

 

各地点での上下左右の探索を予め実施して記録しておくことで、O(HW)に落とせる。

 

DateTime.ToShortDateStringの注意点

 

## DateTime.ToShortDateStringとは

 

DateTime型を、実行端末のデフォルトのCultureInfoに沿ってstring型に変換するメソッド。

 

## 使い方

> DateTime today = DateTime.Now;

> string todayStr = today.ToShortDateString();

 

## 注意点

CultureInfo依存なので、海外にリリースする場合、想定と異なる文字列が返され、意図しない挙動となる可能性がある。

 

 

## 参考資料

https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime.toshortdatestring?view=netframework-4.8

Atcoder Beginner Contest 121

atcoder.jp

A. White Cells

残りは長方形やるだけ。

B. Can you solve this?

各行計算、判定。

C. Energy Drink Collector

価格の低いほうから買えるだけ買う。

D. XOR World

XOR演算の性質に気付ければO(1)。

詳しくはeditorial参照。

ポイントは以下。

  • 同じ要素のXORは0(自身が単位元)。

    • x ^ x -> e
  • 偶数nに対してn ^ (n + 1) -> 1

競技プログラミングにおけるXORのTips - Qiita

仮想通貨とふるさと納税のe-taxを使った確定申告(2019年版)

これは何?

仮想通貨とふるさと納税の確定申告を行ったので、来年の自分に向けての概要メモ。

何をしたら納税完了か

以下を全て完了したら終了

  • 確定申告をe-taxで提出(納める所属税額を確定)
  • 所得税を納付(国への税金)
  • 住民税を納付(市区町村への税金。確定申告情報が自動的に連携される)

必要なものチェックリスト

  1. [初回のみ] e-tax申請に必要なアカウント、パスワードを取得(マイナンバーカードとカードリーダを持っていれば不要)
    • 最寄りの税務署で取得可能(要本人確認証)(空いていれば30分ほど)
  2. 源泉徴収票(会社員の場合)
    • 会社からの給与情報、控除、源泉徴収済金額等の情報入力に必要
  3. マイナンバーがわかるもの
    • 手順の途中でマイナンバーの入力が求められるため必要
    • マイナンバー入り住民票なら近くの役所で即日発行可能
  4. ふるさと納税の証明書
    • 金額、寄付日、寄付先地方自治体を入力する必要があるため必要

確定申告申請手順

  1. 以下へアクセスし作成開始をクリック 【確定申告書等作成コーナー】-作成コーナートップ

    f:id:takeknock:20190306164333p:plain
    作成開始をクリック

  2. 画面に従って、ID・パスワード入力

    f:id:takeknock:20190306170323p:plain
    ID・パスワード方式により提出するをクリック

  3. 各種情報を埋めていく 情報入力箇所については以下のリンクが参考になる。 www.rikei20.com 今回はe-taxなので、最後の画面で再度パスワードを入力し、提出する。 注意点は、住民税等入力の画面で、住民税・事業税に関する事項のボタンを押し、自分で納付にチェックを入れること。

  4. 送信までしたら完了

所得税納付手順

[手続名]国税の納付手続(納期限・振替日・納付方法)|国税庁

いくつか方法があるが、今回はインターネットバンキングを使用する方式で納付した。 (そのためだけにe-taxのデスクトップアプリをダウンロードしなければならないのはなんとかしてほしい。。)

住民税納付手順

後ほど納付依頼書?が送付されてくるようなので、しばらく待ち。

記載内容を間違えて送信してしまったときどうすべきか?

再度、修正した内容で送信する。

東京都不動産取引価格情報[EDA]

# これは何?
国土交通省提供の不動産取引価格情報(H17~直近)を眺めたメモ。


# データ
土地総合情報システム

# df.shape

(3803, 30)

# df.columns

Index(['No', '種類', '地域', '市区町村コード', '都道府県名', '市区町村名', '地区名', '最寄駅:名称',
'最寄駅:距離(分)', '取引価格(総額)', '坪単価', '間取り', '面積(㎡)', '取引価格(㎡単価)', '土地の形状',
'間口', '延床面積(㎡)', '建築年', '建物の構造', '用途', '今後の利用目的', '前面道路:方位', '前面道路:種類',
'前面道路:幅員(m)', '都市計画', '建ぺい率(%)', '容積率(%)', '取引時点', '改装', '取引の事情等'],
dtype='object')

# df.isnull().sum().sort_values(ascending=False)

取引の事情等 3665
坪単価 3550
取引価格(㎡単価) 3550
延床面積(㎡) 2999
間口 2739
前面道路:幅員(m) 2719
前面道路:種類 2714
土地の形状 2711
前面道路:方位 2710
地域 2710
今後の利用目的 2423
改装 1401
間取り 1192
建築年 451
用途 375
建物の構造 365
最寄駅:距離(分) 215
建ぺい率(%) 64
容積率(%) 64
都市計画 50
最寄駅:名称 5
都道府県名 0
種類 0
市区町村コード 0
取引時点 0
市区町村名 0
地区名 0
取引価格(総額) 0
面積(㎡) 0
No 0