' P '

whatever I will forget

Java

Java bufferedReader

Javaって書き方によって処理速度がかなり変わる言語ですよね... (まあ言語によってもちろん書き方によって速度が変わるはずですが) AtCoderで普通に処理速度がやたら早い人がいるので、何が違うんだろう?と比較してみたら、inputの値の格納時点に違いがある…

NumberOfDiscIntersections

考え方 これもほぼほぼ数学的なセンスが必要です Sort済みの場合、0 ≤ P < Q < R < Nに必ずなっている P+Q>Rだけを調べればいい訳は、ソート済みの場合はP<Q<Rに必ずなっている前提のため(1,2,5,8,10,20)、 1,2,5をP,Q,Rとすると、 P(1)+R(5)>Q(2), Q(2)+R(5)>P(1)は必ず満たされる。 この場合、P(1)+Q(2)>R(5)のみ満たされないため、それだけ調</q<rに必ずなっている前提のため(1,2,5,8,10,20)、>…

NumberOfDiscIntersections

難題っぽいです。普通に難題です。なにしたらいいのかあんまりよくわかりません。 解説はこちらを見てください。(丸投げw) codility-lessons-jp.blogspot.com import java.util.*; public class Solution { public static void main(String[] args) { Syst…

CountDiv

考え方 苦手な数学の発想問題です。なんでprefix sumのセクションにあるんや...? もしBが11なら、11 / 2 = 5 11までの数字は: 1,2,3,4,5,6,7,8,9,10,11 2で割れる数字は: 2,4,6,8,10 -> 5 あってます。 もしAが6なら、6 / 2 = 3 6までの数字は: 1,2,3,4,5,6…

MinAvgTwoSlice

考え方 全体の数の合計値 / 全体の数の平均値より、最小の値は2個ずつの平均値、または3個ずつの平均値のどちらかに存在する らしいです。あんまりしっくりきていないので完璧な方ぜひおしえてください。 まあ、一応下記例から読み取れるとしたら、確かに全…

prefix sum - GenomicRangeQuery

アルゴリズムの一種で、値のithからjthまでの合計値を効率良く取得するために使用する ほぼほぼ累積和と変わらないと思っています 参考 codechacha.com 問題 app.codility.com 問題の英語的にはっきり言って一見では何したらいいのか意味不明でしたw 渡され…

AbstractMap.SimpleEntry

まだまだ全然知らないメソッドが沢山あって、奥深いなぁーと 最近使用したのは、AbstractMap.SimpleEntryです。 C++のように、make_pairをしたいときってどうするのかなぁと思っていたら、上記がでてきました。 javaFxにもPairというC++と同じようなClassが…

Queue - Circular Buffer/リングバッファ

参考: www.geeksforgeeks.org 問題例: ALDS1_3_B: Queue コード JavaでクラスをC/C++の構造体みたいに使うやり方に苦戦した。 import java.util.Scanner; class Main { static int quantum; static int currentElapsedTime; class Data { String processName…

Java Equal/HashCode

かなーりふわっとした理解ですが、 自作オブジェクトをequalsで比較する際にequalsをobjectクラスからoverrideした際には、hashcode関数もちゃんとoverrideしないとうまく動かないらしい。 一旦解説は無しで下記Qiitaをポイントすることで備忘録とする。 参考…

メモ化再帰

フィボナッチとかくらいしか、再帰を使ったことないのですが 動的計画法(DP)を勉強中にメモ化再帰、という単語が登場し、こりゃあスゴイ!と思ったのでメモ。 概要 各数字における答えをメモしておく。 再帰関数は同じ値に対する計算を何度も行うので、処…

ビット全探索

C問題が解けるためには避けては通れない道っぽい.... 2進数とか16進数とかすごい嫌いw まずは理解できるまで下記を読みまくるのがいい気がする. 参考 qiita.com qiita.com drken1215.hatenablog.com lovedvoraklayout.hatenablog.com ちなみに、ABC167のC問…

for文を使わずに階乗の値を求める

階乗とは 10! と書いたりするようですが、1~10までの整数値を掛け合わせた値です. 回帰呼び出しで実装 10までの階乗をループなしで求めます。 public class Main172 { static int value = 1; static int sum = 1; public static void main(String[] args) { …

Java binarySearch()

Brute Force(全探索)でガンガン探すよりも、もちろん二分探索法のほうが結果として処理が早くなる可能性があるので、めもめも 二分探索法とは qiita.com binarySearch()とは ほぼ、Collectionsの中身しか見ていないけど、パッとコードを見て二分探索法かな…

アルファベットを26進数として扱う

atcoder.jp で撃沈でした! 問題 端的に言うと、数字が与えられるので、それに対応するアルファベットを出力せよ。という問題 例えば、1ならa、27ならaaみたいな感じ。 これも覚えておけば次使えるテクニックなので、めもめも。 アルファベットは26進数であ…

Java Static Initialization Block

活用法はわかってませんが、こんなこともできるのかーってメモ ポイント コンストラクタよりも先に呼ばれる。 変数の保持も可能。 public class Main { public static void main(String[] args) { SIB sib = new SIB(); System.out.println(sib.something); …

Java 標準偏差の求め方

Javaって標準偏差のライブラリないんですね。。 Cみたく自作するしかないのか! onlinejudge.u-aizu.ac.jp 求め方 下記参考サイトをそのまま引用させて頂きます。 1.データ全体の平均値を出す 2.偏差(各データから平均値を差し引いた値)を求める 3.2で算出…

三角形の面積、周の長さ、高さの求め方

onlinejudge.u-aizu.ac.jp はい、アルゴリズムと称したただの数学復習メモです。 サイン、コサイン、タンジェント、、あーやったなー以外何も覚えてませんでした。 というわけで手っ取り早くなんだっけ?ってわかるためには下記記事がわかりやすかったです i…

Java isDigit() / isBlank

Character.isDigit() これはchar型に対して使用可能 数字かどうか確認したいときに使おうね String str = "1"; if(Character.isDigit(str.charAt(0))) { int a = Integer.parseInt(str); } String.isBlank() 空か、空白しか入っていないのかかどうか判断する…

Java scanner.next() / nextLine() 違い

ある問題で、スペースごとにString値を区切ったほうがよいのか? なんて考えて、str.split(" ");としていたのですが、Scanner inputからの値に対してそんなことは全くしなくていいことを学んだ。 Scanner.next() 空白までを文字列として扱う Scanner.nextLin…

Java charのa,b,c... に付随するintの値の出し方

こんなんしらんし。。ってテクニックですな。 アルファベットを大文字から小文字にunicodeの数字を使って変換するやり方 それに関してはこちらで。(このテクニックは大文字に+20すると小文字に変換できるよーって話でした) mankozooyork.hatenablog.com ア…

Java 小文字/大文字の変換

Char型 大文字/小文字の判別 Character.isUpperCase(char c) Character.isLowerCase(char c) を使う。 大文字/小文字の変換 Character.toUpperCase(char c) Character.toLowerCase(char c) String型 String strに含まれる文字列の全変換は可能なよう。 Syste…

Java 文字列を反対順に並べる reverse()

Javaでreverseメソッドを簡単に使うには2種類やり方があります あとは、手動でloopさせて組み替えるような方法になります その1: StringBuilderのreverse()を使う これはそもそもその文字列変数をStringBuilderで定義しておかないとだめです. StringBuilder…

Greedyアルゴリズム

貪欲探索法についてです 定義 シンプルにまとめると、問題の解に対して複数のオプションがある際に、それぞれを評価し、最適値が高い順に評価していく探索法です 解説および参考 qiita.com 知ることになった経緯 atcoder.jp この問題です。解説をみると、文…

Java \\ の意味

こんなんしらんし。。 \\が二個立て続けに続く場合は、エスケープ記号として扱われ、\を出力したいときに使うそう System.out.println("\\a\\b"); とすれば、出力は\a\bとなるってことです。 stackoverflow.com

Java ++と*の実行順番

引っ掛け問題にいつもうまいくらいひっかかります。 public class Main { public static void main(String[] args) { int x = 2; int y = ++x*2+x; System.out.println(++x + "" + y); } } 答えは49です。 なんで? てっきり、x*2が先に行われて++されると思…

Java stack領域とheap領域

よくどっちやったっけ。。となる Stack primitive typeが格納される Heap 参照型変数が格納される(オブジェクト) www.itsenka.com ちなみに 下記のような宣言をしてobjのインスタンス型変数を作った場合 a1,a2,a3の参照アドレスは全て同じになります。 そ…

Java Default Parameter Value

stackoverflow.com Javaは引数にdefault値を持たせることはできないようです.

Java Exception: Checked/Unchecked

Javaには大きくわけて2通りのExceptionの種類がある 1つめ: Checked コンパイル時にエラーだと見分けてくれるもの 2つめ: UnChecked コンパイル時にはエラーだと見分けてくれない。実行時に初めてExceptionが発生する www.geeksforgeeks.org GeeksforGeeks…

Java BigInteger & BigDecimal

さきほど初めてコンテスト参加してきました! 結果はCまで解けたので目標としてはクリア、嬉しいです。 B問題で4回連続でWAだしてもうダメだ。。となりましたがそこからググりまくってBigIntegerを使って逃げる作戦に変更したらACになってめちゃくちゃ嬉しか…

Java charの結合

最近やたらjavaのcharに悩まされます。 この問題 困ること 下記のようなことはできません。 unicodeのコード番号が表示されます。 char a = 'a'; char b = 'b'; char c = 'c'; System.out.println(a + b + c); // prints unicode code stackoverflow.com 解…