2019年11月02日11時08分07秒に更新されたバージョンを表示しています.
最新のページはこちらをご覧ください.
cLay - 過去の更新履歴
過去の更新履歴
- 20190929-1:
【機能追加っぽいの】
template<class T> int Factor(T N) を追加.
graph に shortestCycle() を追加. - 20190928-1:
【機能追加っぽいの】
InnerProd() を追加.
ll型の CrossProd(),LineIntersection_size() を追加.
【バグ修正っぽいの】
rd() でull型のデータを読み込もうとするとき,間違えてll型の rd() が挿入されるのを修正. - 20190925-1:
【機能追加っぽいの】
Permutation を追加.
knightDistance() を追加.
dayOfWeek(), dayOfWeekStr() を追加.
【バグ修正っぽいの】
Matrix で = で代入するとメモリを確保しなおすことがあるのを修正. - 20190921-1:
【機能追加っぽいの】
rep の機能はそのままに,REP の機能を変更.
rep(i,a,b,s), REP(i,a,b,s) を追加.
rrep(n), rrep(i,n), rrep(i,a,b), rrep(i,a,b,s), RREP(n), RREP(i,n), RREP(i,a,b), RREP(i,a,b,s) を追加.
graph の reduce() を微修正(メモリアライメントまわり).
graph に preorder() を追加.
graph に articulation() を追加.ただし真面目にverifyしてない.
graph に bipartite() を追加.
graph に maxIndependenceSet(), countIndependenceSet() を追加.
wgraph にヒープを使わないナイーブなダイクストラ getDistDense() を追加(なんか速くない気がする…).
unionFind に size() を追加.
Isqrt(), Isqrt_f(), Isqrt_c(), Isqrt_s() を追加.
Icbrt(), Icbrt_f(), Icbrt_c(), Icbrt_s() を追加.
segtree_Point_Minval, segtree_Point_Min を追加.
inline int BIT_popcount(int x), inline int BIT_popcount(ll x), inline int BIT_ctz(int x), inline int BIT_ctz(ll x) を追加.
BIT_ith(a,b) を追加(引数が2個のやつ).
arrRot() を追加.
DivisorSum() を追加.
Moebius() を追加.
【ドキュメントに追記したもの(元々使えるもの)】
rep(n), REP(n) について書いてなかった(その後,REP(n) については機能を変更).
rd などで A[2], A[3], A[4] に読み込むなど,配列の途中から読み込む場合について記述した.
BIT_ith(i) の説明を変更(引数が明らかに31以上の場合). - 20190914-1:
【機能追加っぽいの】
segtree_Point_Prod を追加.
Matrix の各要素を rd, wt で入出力できるように.
【バグ修正っぽいの】
segtree 系で,最小値を取る要素のインデックスを求める配列のnewで型間違えていたのを修正.
segtree 系で,getSum, getMin, getMinVal の実装方法を変えてより多くの型(T)で動くようになったはず.また,演算が可換でない場合にも対応したはず.例えば,Matrixを要素に持てる.ただし,少し遅くなったかも.
ローカル変数にも勝手に inplace_L を付与することで,初期化でうまくいかなくなってたのを応急処置.
【その他っぽいの】
version 20190912-1 で x ** y の仕様を変更していたのを書いてなかったのを修正. - 20190912-1:
【機能追加っぽいの】
segtree_Point_SumMin,segtree_Point_Minval2, segtree_ChangeAdd_Sum を追加.
Explode(), Implode() を追加.
【バグ修正っぽいの】
入出力 rd, wt で unsigned int,unsigned long long 型に対応.
size_t を型として認識するように.
uint, ulong を型として認識するように.ついでに,signed int と int と signed のように表記が揺れるやつの対応を強化.
int[x]_t, uint[x]_t ([x]=8, 16, 32, 64)を型として認識するようにした.
__int[x]_t, __uint[x]_t ([x]=8, 16, 32, 64, 128)を型として認識するようにした.
bitset<n> を型として認識するように.
変数宣言の際,extern, register を認識するように.
変数の初期化を伴うコンストラクタの書き方に対応(hoge() : piyo(0) {} のようなやつ).
set<int>a; のように,型名と変数名の間にスペースがない場合にバグってたのを修正.
wt() の中に関数などを書いても,ある程度うまくいく仕組みを入れた(本来は不要な型のwtを挿入することもあってコードは無駄に長くなることがある).
【その他っぽいの】
segtree の内部で,malloc, free のかわりに new, delete を使うようにした.
ローカル変数にも inplace_L をデフォルトで適応するようにした.
x ** y で x, y ともに double 型のとき pow(x,y) を呼び出すようにした. - 20190902-1:
【機能追加っぽいの】
Polynomial構造体を追加.
ラグランジュ補間 polationVal(), polationPoly() を追加.
【バグ修正っぽいの】
graph で TopologicalSort() が使えなくなっていたのを修正. - 20190830-1:
【機能追加っぽいの】
rd_int() を追加.
【バグ修正っぽいの】
負の整数をmint型に変換したときにバグってたのを修正. - 20190829-1:
【機能追加っぽいの】
arrInsert() を追加.
arrcmp() を追加.
Heap, Heap_max の push() に戻り値を設定.
reader, writer の入出力に vector, Grid1d, Grid2d を対応.
graph に cntShortest を追加.
Hungarian() を追加.
高速ゼータ変換 ZetaTransform() を微修正.最小値,最大値を求めるもの ZetaTransform_min(), ZetaTransform_max() を追加.
sortA() に配列1個のものを追加.rsortA() を追加. - 20190827-1:
【機能追加っぽいの】
intervalSieve() を追加.
isSubsequence() を追加.
slideMin(), slideMax() を追加.
sum() において,string型に対応.
【バグ修正っぽいの】
hoge ** piyo で,piyo の部分に _ が含まれているとうまく動かなかったのを修正.
if文の中などで,''や""に囲まれた ( や ) を使うと,文の区切りの判定をミスるのを修正.
Grid1d において,setSum, getSum の機能がバグって使えなかったのを修正.
【その他っぽいの】
graph, wgraph において,構造体を使っても,構造体内の使ってない関数をある程度挿入しないようにして,ソースコードが短くなるようにした. - 20190822-2:
【バグ修正っぽいの】
wAdjEdge() がバグっていたのを修正.
20190822-1の更新履歴が一部間違っていたのを修正. - 20190822-1:
【機能追加っぽいの】
グラフの隣接リスト(隣接配列?)っぽいのを作る関数 wAdjEdge() を追加.
Heap, Heap_max を追加(機能はほぼpriority_queue).
【ドキュメントに追記したもの(元々使えるもの)】
三項演算子を使わない場合は基本的に , は ; に置き換えられるので,for(;;) i++, break; などと書けることを追記. - 20190820-1:
【機能追加っぽいの】
SuffixArray() を追加.
graph に shortestUndirectedCycle_length() を追加.
【バグ修正っぽいの】
#pragma hoge を判定していなくてバグることがあったのを修正. - 20190818-1:
【バグ修正っぽいの】
maxflowが動かなくなっていたのを修正. - 20190817-1:
【機能追加っぽいの】
コードの先頭に #pragma GCC optimize ("Ofast") を追加するようにした.
演算子 %% に対する %%= を追加.
wgraph に BellmanFord() を追加.
arrErase() を追加.
longestSuffixPrefix() を追加.
【バグ修正っぽいの】
Grid1d の free() で同じ配列を2回メモリ解放しようとするバグを修正. - 20190810-2:
【バグ修正っぽいの】
#undefに対応. - 20190810-1:
【機能追加っぽいの】
Grid1d を追加.
Digit() を追加.
【その他っぽいの】
一部の関数にinlineをつけた. - 20190802-2:
【バグ修正っぽいの】
Grid2dのsetDirMatch()がバグってたのを修正. - 20190802-1:
【機能追加っぽいの】
rdでchar型1文字の入力を追加(実は出力は今まででも可能だった).
1行の入力 rdLine() を追加.
sortEを追加.
graphにトポロジカルソート TopologicalSort() を追加.
wgraphにPrim法による最小全域木の重み和を求める関数 MST_Prim_cost() を追加.
Grid2d を追加.
二分探索 bsearch で,double型の終了条件で絶対誤差,相対誤差を指定できるようにした.
KMP (Knuth-Morris-Pratt) を追加.
FFTを用いた畳み込み convolution() を追加.
ビットに関して BIT_ith(), BIT_get_lowest(), BIT_get_nonlowest() を追加.
【バグ修正っぽいの】
展開の順番を変更.(bsearch_min[]の中で>?=が使えなかったのを修正)
set_a = 1; など書くと,変数宣言と勘違いして set _a = 1; と分解されるのを修正.
【その他っぽいの】
rep(i,a) および rep(i,a,b) で a, b に括弧をつけるようにした.( for(i=a;i<b;i++) → for(i=(a);i<(b);i++) )
主にワーキングメモリまわりをメモリアライメントを考慮して,ところどころ変更した. - 20190721-1:
【機能追加っぽいの】
入出力 rd(), wt() でstring型に対応した.
isPrime() を追加.
【バグ修正っぽいの】
(**なしで)**= を使ったときに,べき乗を求める関数が挿入されないのを修正. - 20190715-1:
【バグ修正っぽいの】
Divisor()を単体で使ったとき,Factor()機能がコードに追加されなくて使えなかったのを修正. - 20190714-1:
【機能追加っぽいの】
AhoCorasick, AhoCorasick_Sum を追加.
isLeapYear(), numOfDaysInMonth() を追加.
isVowel() を追加. - 20190708-1:
【機能追加っぽいの】
HLD_fenwick<T> 追加. - 20190707-1:
【バグ修正っぽいの】
tuple<hoge> を型として認識するようにした.
不等式の展開で < hoge > の形は展開しないようにした. - 20190706-1:
【機能追加っぽいの】
%% 演算子を追加.
入力 rd() で読み込みながらインクリメント,デクリメントする機能を追加.
graph に shortestPath() を追加. - 20190630-1:
【機能追加っぽいの】
class に暫定対応(structと同様の判定をするようにしただけ).
【バグ修正っぽいの】
unionFind 構造体のwallocの戻り値の型が間違ってたのを修正.freeを追加.その他constをつけたりなど微修正.
関数かどうかの判定がバグってた(int operator()(int a){}などが駄目だった)のを修正(unionFindなどが動かなくなってました).
【その他っぽいの】
if(c != a && a==b && b==2) を if(c != a == b == 2) などと書けるようにした(不等式ならできてたけど等式などに関しても && で連結するように). - 20190626-1:
【機能追加っぽいの】
modintを追加.
Matrix<T>を追加.
argmin(), argmax(), argminL(), argmaxL() を追加.
b[]() を追加.
【バグ修正っぽいの】
if[] の展開の優先度を変更(a<b<cがa<b&&b<cに展開するなど他の機能が暴発してた).
関数定義の判定を修正(operator int(void){hoge;}が関数定義に見なされなかったりint(3.2)が関数定義に見なされていたりを修正).
変数名の判定を修正(hoge::piyoで死んでた).
【その他っぽいの】
べき乗の演算 ** をナイーブな方法から繰り返し二乗法に変更.
べき乗の演算に関して,a = a ** b を a **= b; と書けるようにした. - 20190609-1:
【機能追加っぽいの】
最長増加部分列の長さを求める LIS_length(), weaklyLIS_length() を追加.
【バグ修正っぽいの】
if[] において,カンマで区切る方法を変更(<や>を括弧的な扱いにしなくなった). - 20190608-1:
【機能追加っぽいの】
素数列挙 Prime() を追加.
素因数を求める関数に,FactorM() を追加.
最小費用流 minCostFlow (とりあえず版)を追加.
if[] を追加. - 20190601-1:
【機能追加っぽいの】
素因数,約数を求める Factor(), Divisor() を追加.
wgraphにおいて,森の(BFSなどで距離が求まる)場合に,始点から各ノードまでの距離を求める getDistForest() を追加.
二分探索をする bsearch_min, bsearch_max を追加. - 20190526-1:
【機能追加っぽいの】
rd(), wt() でファイルからの入出力を readerFile(), writerFile() で設定できるようにした.
set<T>, multiset<T> に対する popFirst(), getFirst(), popLast(), getLast() を追加.
if文やwhile文のカッコ内(条件式)で色々な関数(fib_mod, inversionなど)が使えなかったのを修正.
【バグ修正っぽいの】
末尾に空行などの空白文字がないコードを食わせると落ちることがあったのを応急処置.
multiset が型として認識されなかったのを修正.
typename vector<T> など typename 型名 が型と認識されなかったのを修正.
【その他っぽいの】
グローバル変数を定義するときに inplace_L が勝手につくようにした(inplace_Lを指定しなくても書いた場所で変数が定義される).
入出力(rd(), wt())の関数を微妙に高速化(inlineをつけた). - 20180730-1:
【機能追加っぽいの】
擬似乱数生成に関する Rand 構造体を暫定追加.
枝に重みのあるグラフを扱う wgraph 構造体を暫定追加.
unionFind 構造体を追加.
【バグ修正っぽいの】
wtFなど引数の文字列の中で \" が登場するとバグってたのを修正 (wtF("<font size=\"{sz}\">\n")でバグってた) .
operator() を定義するとバグるのを修正. - 20180208-1:
【機能追加っぽいの】
バイナリヒープ(固定長配列用)LHeap<T> とバイナリヒープ(ダイクストラ用)DijkstraHeap<T> を追加(このドキュメントに説明が書いてありましたが追加してなかったです).
整数用の基数ソート sortF() を追加.
時間計測用 Timer を追加.
高速ゼータ変換 ZetaTransform(),高速メビウス変換 MoebiusTransform() を追加.
【バグ修正っぽいの】
追加された演算子などの直前の項がどこまで続くかの判定を改良(今まで max(A(N)) /+ min(A(N)) などがうまく動かなかった).
1d3で1000に置き換えなどが,文字列""の中で暴発するのを修正,および,2dが2d0とみなされていたのを修正. - 20180108-2:
【バグ修正っぽいの】
version 20180108-1のバグフィックスがしきれてなかったので再修正. - 20180108-1:
【バグ修正っぽいの】
ドット列によるループ展開が含まれる項を,演算子で繋げるとバグってたのを修正(三項演算子の応急処置の,を;に置き換えないようにしたことでバグってた). - 20180107-1:
【機能追加っぽいの】
FenwickTree(fenwick<T>)を追加.
配列の転倒数の計算(inversion_range(), inversion())を追加.
【バグ修正っぽいの】
doとelseの処理が逆になっていたのを修正(do{if(){}}while();とかif(){} else if(){} else if(){} else;でバグってたはず).
三項演算子の途中で,演算子が含まれる場合,;に置き換えられてバグってたのを応急処置(i = 1?3,4:5でバグってた). - 20170629-2:
【バグ修正っぽいの】
数値の後の * を省略する機能が "" や '' で囲まれた文字列の中で暴発してたのを修正. - 20170629-1:
【バグ修正っぽいの】
数値の後の * を省略する際,数値が小数点 . で終わってるとバグってたのを修正. - 20170628-1:
【機能追加っぽいの】
segtree に walloc() 追加(ワーキングメモリを使ってメモリを確保する).
graph追加(構造体を使うもの,構造体を使わないものもそのうち作りたい).
maxflow 追加.
Heavy Light Decomposition [HLD,HLD_segtree] 追加.
座標圧縮 [coordcomp(), coord_comp()] 追加.
フィボナッチ数を求める関数 [fib_mod(), fibonacci_mod()] を追加.
2*xを2xと,2*(x+y)を2(x+y)と書くなど,一部で数値と変数の間,数値と(の間*を省略できるようにした(ただし2d3は2000であって2*d3にはならない,12uはunsignedの定数12であって12*uではない).
不等式において if(2 < x < 6) hoge; のように && で繋げなくても書けるようにした(三項演算子を使いまくったりするとバグるかも).
malloc1d(), malloc2d() はワーキングメモリを使わないように変更.free1d(),free2d()を追加.ワーキングメモリを使うものは walloc1d(), walloc2d() にした.
関数や構造体を挿入しなくなるフラグを追加.
【バグ修正っぽいの】
static int hoge; など修飾子がついていると正常に型を取得できなかったのを修正.
if文の中などで,min(), gcd() など(の中で配列表記 min(a(n)) など)を使うとバグってたのを修正.
structの中身が変数宣言のみだった場合にバグってたのを修正.
構造体のメンバ変数の型を取得できるようにした(けど手抜きなのでtemplate未対応,あと変なコード食わすとたぶんバグる).
segtree<T> の getMinInd() の戻り値が int 型ではなく T 型になっていたのを修正.
配列の要素数などにシフト演算子 << などを使うと,括弧の対応関係が取れなくて死んでたのを修正. - 20170505-3:
【バグ修正っぽいの】
min(), max() のせいで numeric_limits<T>::min() などが動かなくなってたので,引数が空の min(), max() は置換しないようにした. - 20170505-2:
【機能追加っぽいの】
combination_mint を追加. - 20170505-1:
【機能追加っぽいの】
gcd(), lcm() において,rd(), wt() などと同じような記法を使えるように(a = lcm(b,c(n)); など).
上のgcd(), lcm() と同様の仕様で min(), max(), sum(), mul() を追加(大文字バージョンも).
各関数や機能を無効化するフラグを幾つか追加(gcd(), lcm(), min(), max(), sum(), mul(),それらの大文字バージョン).
inplace_L 修飾子を追加.
malloc1d(), malloc2d() 追加.
sortA() 追加.
【バグ修正っぽいの】
[>?=, <?=] 演算子で値を返すようにした(a = b >?= c; で b = max(b,c); a = b; と同値になります.a = (b >?= c) + 10; とかもOK).
ifの中や変数宣言の初期化の一部でmin[]()などを使うことができるようにした(グローバル変数の初期化,デフォルト引数とかは無理).
gcd(), lcm()においてGCD, LCMが使えなかったのを修正
int **hoge; のように 型 ** 変数 がべき乗演算子 [**] と解釈されるバグを修正.
rd, wtの処理を遅らせた(中身に min[](), gcd() などが使われている場合も動くことがあるようになった) - 20170430-2:
【機能追加っぽいの】
repループにおいて,そのスコープで未定義の変数でループしようとした場合,勝手にint型で定義されるようにした(rep(i,10)でiが定義されてないと勝手にint i;を定義する).
gcd(),lcm() を追加.
runLength() を追加.
【バグ修正っぽいの】
rd, wtの中で .. ループ展開を使えるように修正(..ループ展開の処理を最初に行うようにした).
変数宣言時に(とif文の中で) int i = 2**3, k = gcd(12,60,88); などcLay独自の演算子や関数などを一部使えるようにした(ループが絡んだり色々するのはまだ無理,そのうち…).
.1415 のように小数点から始まる数がdouble型と判定されなかったのを修正. - 20170430-1:
【機能追加っぽいの】
rdにて文字列を入力する時,@で文字列の長さもついでに取得できるようにした.
【バグ修正っぽいの】
rdにて型の推定を間違えるのを多少マシにした.
rd, wtにて変数名に _ が入っていると上手く行かなかったの修正. - 20170429-1:
【機能追加っぽいの】
staticに対応.
10進整数表記 [1d3 を 1000 に置換] を追加.
wtN, wtF を追加.
べき乗演算子 [**],切り上げ整数除算演算子 [/+] を暫定追加(暫定というのは書き方によってはバグることがあるはず).
定数 [MD=1000000007, PI=3.14159265358979323846] を追加.
rd, wtにおいて,double型の入出力に対応(ただしscanf,printfに化けるだけ).
min[](), max[](), argmin[](), argmax[](), argminL[](), argmaxL[]() を追加.ただし,argxxxは現状変数が1種類のみに対応.
switch-case構文 および label (goto文) に対応.
mint型を追加(構造体を使用しているので書き方によってはバグる).
segtree型を追加(セグメントツリーです.構造体を使用しているので…以下略).
【バグ修正っぽいの】
一部で変数名に _ があると正しく認識されなかったバグを修正.
変数宣言時,int a = (3+4); のように () があると関数だとみなされていたのを修正.
inline関数(ただしtemplateを使ってないもの)を定義するとバグってたのを修正.
文字列中(""の中)にループ展開 [..] や演算子 [>?=, <?=] などを表す部分文字列が出てきても置き換えないように修正.
templateで定義した型を返す関数を作るとバグってたのを修正.
long double 型を認識してなかった(忘れてた)のを修正.
wt において,文字列中の括弧の処理がバグってたのを修正(wt("[",i,"]");が[]で挟まれてるため"["とiと"]"に区切られなかった)
rd, wtにおいて配列の全要素を入出力するa(N)表記において,aが変数のときのみ適用するようにした.(wt(log(5));などでバグってた…,が結局まだlog関数の返り値の型を調べてないので結局バグるはず…なのでまだしばらくこのような書き方はできない.現状は引数がintだからlog(5)はint型だろうと推測して間違える)
ドットループの..と...の順番を変更(仕様の変更,今までのバージョンもこの仕様で実装されてました…) - 20170408-3:
A[a..b] = B[c..d] 等,2つ以上同時にループ展開する時,aとcのように始点が異なる時バグってたのを修正.
pair<hoge,hoge> 等,型名に%lt;>で囲まれた,が含まれているとバグるのを修正. - 20170408-2:
n進数(2~62進数)での出力に対応. - 20170408-1:
コメント(//,/**/)に対応(削除されます).
型 [ll, ull] にちゃんと対応したつもり.ついでに,int_inf などの定数を部分文字列に含んでいても大丈夫にした(変数 int_infinity などを定義可能).
構造体に暫定対応(今はグローバル変数で構造体の変数を定義するとやばい,前方宣言も駄目,他にも不都合ありそう).
フラグ [//no-unlocked] を追加
rd において ll型,double型の入力に対応.
wt シリーズにおいて ll型,double型,char型の配列(文字列)の出力に対応.
if() {} else if() {} else {} と続くとバグってたのを修正.
出力コードの下にオリジナルのコードをコメントアウト状態で表示するようにした. - 20170330-1:
wtで変数だけじゃなく式もを出力できるように.
rd,wtで (A,B)(N) など配列を括弧で囲む形に対応. - 20170326-2:
バグりまくってたのを修正(char配列の読み込み,演算子[<?=, >?=]が動かなかった). - 20170326-1:
char配列の読み込み追加.
定数[int_inf, ll_inf, double_inf]追加.
ドット列によるループ展開追加.型[ll, ull]の展開暫定追加.
演算子[<?=, >?=]追加. - 20170324-1:
取り敢えず作ってみた.
これ以前の更新履歴はこちら.
Current time: 2024年04月29日02時39分57秒
Last modified: 2019年11月02日11時08分07秒 (by laycrs)
Tags: no_tags
トップページに戻る
Logged in as: unknown user (not login)