From d6a51ead4c3f60e9d1db0cc2ba50c5d5ff4053c1 Mon Sep 17 00:00:00 2001 From: arielherself Date: Sat, 14 Sep 2024 01:38:00 +0800 Subject: [PATCH] regular backup --- home-manager/home.nix | 13 ++++++++- nvim/lua/config.lua | 2 +- nvim/lua/snippets/basis.lua | 25 +++++++++++++++++ nvim/lua/snippets/fft.lua | 1 + nvim/lua/snippets/init.lua | 39 ++++++++++++++++++--------- nvim/lua/snippets/sparse-table-2d.lua | 35 ++++++++++++++++++++++++ 6 files changed, 100 insertions(+), 15 deletions(-) create mode 100644 nvim/lua/snippets/basis.lua create mode 100644 nvim/lua/snippets/sparse-table-2d.lua diff --git a/home-manager/home.nix b/home-manager/home.nix index e3b885f..8a40b1b 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -39,8 +39,14 @@ in { name = arielherself [gpg "ssh"] program = ${pkgs._1password-gui}/bin/op-ssh-sign + [safe] + directory = /mnt/fdos_server/OS-24Fall-FDU ''; }; + "Documents" = { + source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/Dropbox/arch/Documents"; + recursive = false; + }; }; xdg.configFile = { @@ -133,12 +139,13 @@ in { pkgs.lua-language-server pkgs.cmake-language-server pkgs.nil # Nix language server + pkgs.asm-lsp # Assembly language server pkgs.nodePackages.typescript-language-server pkgs.nodePackages.vls # Vue language server pkgs.nodePackages.prettier unstable.markdown-oxide pkgs.helix - pkgs.zed-editor + unstable.zed-editor pkgs.xfce.mousepad # Tools @@ -166,12 +173,16 @@ in { unstable._1password-gui pkgs.nix-index pkgs.rclone + pkgs.sshfs # Pwn pkgs.nmap pkgs.inetutils pkgs.samba + # Java + pkgs.jdk22 + # Python (pkgs.python312.withPackages (ps: with ps; [ ])) diff --git a/nvim/lua/config.lua b/nvim/lua/config.lua index 947f70a..6595e42 100644 --- a/nvim/lua/config.lua +++ b/nvim/lua/config.lua @@ -660,7 +660,7 @@ lspconfig.clangd.setup { lspconfig.pyright.setup { capabilities = capabilities } -lspconfig.tsserver.setup { +lspconfig.ts_ls.setup { capabilities = capabilities } lspconfig.rust_analyzer.setup { diff --git a/nvim/lua/snippets/basis.lua b/nvim/lua/snippets/basis.lua new file mode 100644 index 0000000..c7492d8 --- /dev/null +++ b/nvim/lua/snippets/basis.lua @@ -0,0 +1,25 @@ +return [=[ +// in-place modification +int basis(vector& a) { + int n = a.size(); + int has = 0; + for (int i = 63; ~i and has < n; --i) { + for (int j = has; j < n; ++j) { + if (a[j] & (ll(1) << i)) { + swap(a[j], a[has]); + break; + } + } + if (not (a[has] & (ll(1) << i))) continue; + for (int j = 0; j < n; ++j) { + if (j == has) continue; + if (a[j] & (ll(1) << i)) { + a[j] ^= a[has]; + } + } + ++has; + } + return has; +} + +]=] diff --git a/nvim/lua/snippets/fft.lua b/nvim/lua/snippets/fft.lua index 69fe7dd..dff4416 100644 --- a/nvim/lua/snippets/fft.lua +++ b/nvim/lua/snippets/fft.lua @@ -45,6 +45,7 @@ vector multiply(const vector& a, const vector& b) { fft(A, true); vector res(n); transform(A.begin(), A.end(), res.begin(), expr(int(round(x.real())), auto&& x)); + res.resize(a.size() + b.size() - 1); return res; } diff --git a/nvim/lua/snippets/init.lua b/nvim/lua/snippets/init.lua index c75e6fa..19031c1 100644 --- a/nvim/lua/snippets/init.lua +++ b/nvim/lua/snippets/init.lua @@ -50,19 +50,6 @@ ls.add_snippets(nil, { } }) -local fhq_treap = require('snippets.fhq-treap') -ls.add_snippets(nil, { - cpp = { - snip({ - trig = 'treap', - namr = 'fhq_treap', - dscr = 'FHQ Treap', - },{ - text(lines(fhq_treap)) - }) - } -}) - local bit = require('snippets.bit') ls.add_snippets(nil, { cpp = { @@ -102,6 +89,19 @@ ls.add_snippets(nil, { } }) +local sparse_table_2d = require('snippets.sparse-table-2d') +ls.add_snippets(nil, { + cpp = { + snip({ + trig = 'sparse_table_2d', + namr = 'sparse_table_2d', + dscr = '2D Sparse Table', + },{ + text(lines(sparse_table_2d)) + }) + } +}) + local hash_vec = require('snippets.hash-vec') ls.add_snippets(nil, { cpp = { @@ -326,3 +326,16 @@ ls.add_snippets(nil, { }) } }) + +local basis = require('snippets.basis') +ls.add_snippets(nil, { + cpp = { + snip({ + trig = 'basis', + namr = 'basis', + dscr = 'Bit-mask space basis', + },{ + text(lines(basis)) + }) + } +}) diff --git a/nvim/lua/snippets/sparse-table-2d.lua b/nvim/lua/snippets/sparse-table-2d.lua new file mode 100644 index 0000000..f60d92d --- /dev/null +++ b/nvim/lua/snippets/sparse-table-2d.lua @@ -0,0 +1,35 @@ +return [=[ +template> struct sparse_table_2d { + _Op op; + vector>>> st; + sparse_table_2d(const vector>& a, _Op&& __operation) { + op = __operation; + int n = a.size(); + int m = int(log2(n) + 1); + st = vector(n, vector(n, vector(m, vector<_Tp>(m)))); + for (int k = 0; k < m; ++k) { + for (int l = 0; l < m; ++l) { + for (int i = 0; i + (1 << k) <= n; ++i) { + for (int j = 0; j + (1 << l) <= n; ++j) { + if (k == 0) { + if (l == 0) { + st[i][j][k][l] = a[i][j]; + } else { + st[i][j][k][l] = op(st[i][j][k][l - 1], st[i][j + (1 << l - 1)][k][l - 1]); + } + } else { + st[i][j][k][l] = op(st[i][j][k - 1][l], st[i + (1 << k - 1)][j][k - 1][l]); + } + } + } + } + } + } + _Tp query(size_t x1, size_t y1, size_t x2, size_t y2) { + int s1 = lg2(x2 - x1 + 1); + int s2 = lg2(y2 - y1 + 1); + return op(st[x1][y1][s1][s2], op(st[x2 - (1 << s1) + 1][y1][s1][s2], op(st[x1][y2 - (1 << s2) + 1][s1][s2], st[x2 - (1 << s1) + 1][y2 - (1 << s2) + 1][s1][s2]))); + } +}; + +]=]