-
个人简介
你是我的第 位访客
好康的
经典永流传
聪明的 GPT
数据结构蹲坑速记表
数据结构 最大值 最小值 memset(*, 127, *);
值memset(*, 63, *);
值short
unsigned short
int
unsigned int
long long
unsigned long long
float
double
long double
我的联系方式
微信号:CodingcowLee
QQ 号:778217810
邮箱:codingcow@163.com
常用网站
我的博客:https://lixuannan.github.io/
NOI 大纲:NOI 大纲(PDF)
ChatGPT 镜像:https://chat19.aichatos.xyz/
人教教材电子版:https://jc.pep.com.cn/
小熊猫 C++:http://royqh.net/redpandacpp/download/
Dev-Sidecar:https://ghproxy.com/https://github.com/docmirror/dev-sidecar/releases/download/v1.7.3/DevSidecar-1.7.3.exe
Motrix:https://motrix.app/zh-CN/
二次元:https://www.luogu.com.cn/paste/3gnvo2jv
FunOI:http://8.138.87.252/
MATLAB:https://matlab.mathworks.com/
GeoGebra:https://geogebra.org/classic
Evolve:https://g8hh.github.io/evolve/
AdBlocker Plus:https://adblockplus.org/download
冲浪:edge://surf (仅 edge 浏览器)
FlorrIO:https://florr.io/
压行机:https://mivik.gitee.io/compress
文本对比:https://csacademy.com/app/diffing_tool/
图论编辑器: https://csacademy.com/app/graph_editor/
Typora:https://pan.huang1111.cn/s/58W3tl (装后在安装的文件夹中加入合适的 patch 即可)
洛谷: https://www.luogu.com.cn/user/765847#main
恶臭数字论证器: https://lab.magiconch.com/homo/
CF : https://codeforces.com/profile/Coding-Cow
GitHub: https://github.com/lixuannan
OI-Wiki: https://oi-wiki.org || https://oi.wiki || http://oi-wiki.com
MyFreeMP3:https://tools.liumingye.cn/music/#/
质数验证器:https://zh.numberempire.com/primenumbers.php
搞笑
算法模板
树状数组
void add(int x, int v) { while (x <= n) { c[x] += v; x += lowbit(x); } } int query(int x) { int res = 0; while (x > 0) { res += c[x]; x -= lowbit(x); } return res; }
线段树(有 Lazy-Tag)
void push_up(int node) { tree[node] = tree[node << 1] + tree[(node << 1) + 1]; } void push_down(int node, int l, int r) { int mid = (l + r) >> 1; tag[node << 1] += tag[node]; tag[(node << 1) + 1] += tag[node]; tree[node << 1] += (mid - l + 1) * tag[node]; tree[(node << 1) + 1] += (r - mid) * tag[node]; tag[node] = 0; } void build(int node, int l, int r) { if (l == r) { tree[node] = a[l]; return; } int mid = (l + r) >> 1; build(node << 1, l, mid); build((node << 1) + 1, mid + 1, r); push_up(node); } void updateRange(int node, int l, int r, int L, int R, int x) { if (L <= l && R >= r) { tag[node] += x; tree[node] += (r - l + 1) * x; return; } push_down(node, l, r); int mid = (l + r) >> 1; if (L <= mid) { updateRange(node << 1, l, mid, L, R, x); } if (R > mid) { updateRange((node << 1) + 1, mid + 1, r, L, R, x); } push_up(node); } void updateSingle(int node, int l, int r, int id, int x) { if (l == r) { tree[node] = x; return; } int mid = (l + r) >> 1; if (id <= mid) { updateSingle(node << 1, l, mid, id, x); } else { updateSingle((node << 1) + 1, mid + 1, r, id, x); } push_up(node); } int query(int node, int l, int r, int L, int R) { if (L <= l && R >= r) { return tree[node]; } push_down(node, l, r); int ans = 0, mid = (l + r) >> 1; if (L <= mid) { ans += query(node << 1, l, mid, L, R); } if (R > mid) { ans += query((node << 1) + 1, mid + 1, r, L, R); } return ans; }
Tarjan 强连通分量
void tarjan(int u) { dfn[u] = low[u] = ++dfncnt; st.push(u); ins[u] = true; for (int i = 0; i < g[u].size(); i++) { int v = g[u][i]; if (!dfn[v]) { tarjan(v); low[u] = min(low[u], low[v]); } else { if (ins[v]) { low[u] = min(low[u], dfn[v]); } } } if (dfn[u] == low[u]) { int v; scccnt += 1; do { v = st.top(); st.pop(); scc[v] = scccnt; ins[v] = false; } while (u != v); } }
Tarjan 求割点
void tarjan(int u, int fa) { vis[u] = true; low[u] = dfn[u] = ++dfncnt; int childcnt = 0; for (int i = 0; i < g[u].size(); i++) { if (!vis[g[u][i]]) { childcnt += 1; tarjan(g[u][i], u); low[u] = min(low[u], low[g[u][i]]); if (fa != u && low[g[u][i]] >= dfn[u] && !ans[u]) { cpcnt += 1; ans[u] = true; } } else { if (g[u][i] != fa) { low[u] = min(low[u], dfn[g[u][i]]); } } } if (fa == u && childcnt >= 2 && !ans[u]) { cpcnt += 1; ans[u] = true; } }
缩图(强连通分量)
for (int i = 1; i <= n; i++) { for (int j = 0; j < g[i].size(); j++) { if (scc[g[i][j]] != scc[i]) { g2[scc[i]].push_back(scc[g[i][j]]); } } }
高精度模板(可用 cin & cout)
#include <iostream> #include <vector> #include <cstring> #include <cassert> #define int long long using namespace std; struct BigInteger { static const int BASE = 100000000; static const int WIDTH = 8; vector<int> s; BigInteger& clean() { while(!s.back()&&s.size()>1) { s.pop_back(); } return *this; } BigInteger(int num = 0) { *this = num; } BigInteger(string s) { *this = s; } BigInteger& operator = (long long num) { s.clear(); do { s.push_back(num % BASE); num /= BASE; } while (num > 0); return *this; } BigInteger& operator = (const string& str) { s.clear(); int x, len = (str.length() - 1) / WIDTH + 1; for (int i = 0; i < len; i++) { int end = str.length() - i*WIDTH; int start = max(0ll, end - WIDTH); sscanf(str.substr(start, end - start).c_str(), "%lld", &x); s.push_back(x); } return (*this).clean(); } BigInteger operator + (const BigInteger& b) const { BigInteger c; c.s.clear(); for (int i = 0, g = 0; ; i++) { if (g == 0 && i >= s.size() && i >= b.s.size()) { break; } int x = g; if (i < s.size()) { x += s[i]; } if (i < b.s.size()) { x += b.s[i]; } c.s.push_back(x % BASE); g = x / BASE; } return c; } BigInteger operator - (const BigInteger& b) const { assert(b <= *this); BigInteger c; c.s.clear(); for (int i = 0, g = 0; ; i++) { if (g == 0 && i >= s.size() && i >= b.s.size()) { break; } int x = s[i] + g; if (i < b.s.size()) { x -= b.s[i]; } if (x < 0) { g = -1; x += BASE; } else { g = 0; } c.s.push_back(x); } return c.clean(); } BigInteger operator * (const BigInteger& b) const { int g; vector<int> v(s.size()+b.s.size(), 0); BigInteger c; c.s.clear(); for (int i = 0; i < s.size(); i++) { for (int j = 0; j < b.s.size(); j++) { v[i + j] += (int) (s[i]) * b.s[j]; } } for (int i = 0, g = 0; ; i++) { if (g == 0 && i >= v.size()) { break; } int x = v[i] + g; c.s.push_back(x % BASE); g = x / BASE; } return c.clean(); } BigInteger operator / (const BigInteger& b) const { assert(b > 0); BigInteger c = *this; BigInteger m; for (int i = s.size()-1; i >= 0; i--) { m = m * BASE + s[i]; c.s[i] = bsearch(b, m); m -= b*c.s[i]; } return c.clean(); } BigInteger operator % (const BigInteger& b) const { BigInteger c = *this; BigInteger m; for (int i = s.size() - 1; i >= 0; i--) { m = m * BASE + s[i]; c.s[i] = bsearch(b, m); m -= b * c.s[i]; } return m; } int bsearch(const BigInteger& b, const BigInteger& m) const{ int L = 0, R = BASE - 1, x; while (1) { x = (L + R) >> 1; if (b * x <= m) { if (b * (x + 1) > m) { return x; } else { L = x; } } else { R = x; } } } BigInteger& operator += (const BigInteger& b) { *this = *this + b; return *this; } BigInteger& operator -= (const BigInteger& b) { *this = *this - b; return *this; } BigInteger& operator *= (const BigInteger& b) { *this = *this * b; return *this; } BigInteger& operator /= (const BigInteger& b) { *this = *this / b; return *this; } BigInteger& operator %= (const BigInteger& b) { *this = *this % b; return *this; } bool operator < (const BigInteger& b) const { if (s.size() != b.s.size()) { return s.size() < b.s.size(); } for (int i = s.size() - 1; i >= 0; i--){ if (s[i] != b.s[i]) { return s[i] < b.s[i]; } } return false; } bool operator >(const BigInteger& b) const { return b < *this; } bool operator<=(const BigInteger& b) const { return !(b < *this); } bool operator>=(const BigInteger& b) const { return !(*this < b); } bool operator!=(const BigInteger& b) const { return b < *this || *this < b; } bool operator==(const BigInteger& b) const { return !(b < *this) && !(b > *this); } }; ostream& operator << (ostream& out, const BigInteger& x) { out << x.s.back(); for (int i = x.s.size()-2; i >= 0; i--) { char buf[20]; sprintf(buf, "%08d", x.s[i]); for (int j = 0; j < strlen(buf); j++) { out << buf[j]; } } return out; } istream& operator >> (istream& in, BigInteger& x) { string s; if (!(in >> s)) { return in; } x = s; return in; }
ExGCD
int extendedGCD(int a, int b, int &x, int &y) { if (b == 0) { x = 1; y = 0; return a; } int x1, y1; int gcd = extendedGCD(b, a % b, x1, y1); x = y1; y = x1 - (a / b) * y1; return gcd; } int modInverse(int a, int m) { int x, y; int gcd = extendedGCD(a, m, x, y); if (gcd != 1) { std::cout << "乘法逆元不存在" << std::endl; return -1; } return (x % m + m) % m; }
对照表
你的信息
毁坏电脑的教程
首先,打开 Dev-C++ ,然后创建一个文件,然后输入以下代码:
#include <iostream> #include <algorithm> using namespace std; struct node { int x, y; } a[100009]; int main() { sort(a, a + 100007); }
然后编译运行,在自动打开的文件里删除所有东西,然后保存,恭喜你,编译器废了!!!
一张重要的思维导图
-
最近活动
- 2024oiClass入门组周赛计划#02 IOI
- 2024CSP加码班摸底测试(补题) 作业
- 铁外初级组作业20240418更新 作业
- 【oiClass公益赛】2024CSP-J模拟赛#06 || LSZOI #01 OI
- 【oiClass 公益赛】2024 CSP-J 模拟赛 #13 & XYZ Round 1 OI
- 【oiClass公益赛】2024CSP-J模拟赛#10 OI
- 【oiClass公益赛】2024CSP-J模拟赛#07 OI
- 【oiClass公益赛】2024CSP-J模拟赛#16 OI
- 【oiClass公益赛】2024 CSP-J 模拟赛 #04 OI
- 【oiClass公益赛】2024CSP-J模拟赛#03 OI
- 【oiClass公益赛】2024CSP-J模拟赛 #05 OI
- 【oiClass公益赛】2023CSPJ模拟赛#07 OI
- 【oiClass公益赛】2023CSPJ模拟赛#06 OI
- 【oiClass公益赛】2023CSPJ模拟赛#05 OI
- 【oiClass公益赛】2023CSPJ模拟赛#04 OI
- 【oiClass公益赛】2023CSPJ模拟赛#03 OI
- 【oiClass公益赛】2023CSPJ模拟赛#01 OI
- 开学DP测试 IOI
- 倍增算法 作业
- 预备班寒假集训结营赛 OI
- 7番预——区间DP2 作业
- 6番预——区间DP1 作业
- 5番预——背包DP2 作业
- 4番预——背包DP1 作业
- 3番预——二维数组+LCS 作业
- 2番预——LIS+二维动规 作业
- 1番预——一维动规 作业
- 番预——期末测试(下午场) OI
- 番预——期末测试(上午场) OI
- 番预——二分搜索2 作业
- 番预——第二名有学习分享solo的锻炼赛 OI
- 2022TYSC秋季班作业11 作业
- 番预——二分搜索1 作业
- 番预前三名有汉堡包吃的认真赛 OI
- 番预——广搜加强题 作业
- 番预——广搜基础题 作业
- 2022TYSC秋季班作业8 作业
- 番预——深搜加强题 作业
- 番预——深搜基础题 作业
- 第十一周训练题 作业
- 2022TYSC秋季班作业7 作业
- 番预第十周训练题 作业
- 番预--阶段测试2(线上) OI
- 番预前?名有糖吃的比赛 OI
- 番禺预备班作业——队列 作业
- 番禺预备班作业——递归+ 作业
- 2022TYSC秋季班作业4 作业
- 番禺预备班作业——二叉树与递归 作业
- 番预第一名有奶茶喝的快乐赛 OI
- 番禺预备班作业——差分前缀和 作业
- CSPJ-国庆集训day3 IOI
- CSPJ-国庆集训day2 OI
- 番禺三校区第7周训练题 作业
- 番禺预备班作业——递推 作业
- 番禺预备班作业——排序 作业
- 番禺预备班阶段测试1 OI
- 番禺三校区第5周训练题 作业
- 番禺预备班作业——栈+递归初步 作业
- 番禺三校区第4周训练题 作业
- 番禺预备班作业——贪心 作业
- 番禺三校区第3周训练题 作业
- 番禺预备班作业--模拟+枚举 作业
- 番禺三校区开学热身赛 OI
- Selection test 2-2 IOI
- Selection test 2-1 IOI
- 番禺第二期作业7 作业
- 番禺第二期作业6 作业
- 番禺第二期阶段测试二 IOI
- 番禺第二期阶段测试一 OI
- 番禺第二期作业4 作业
- 番禺第二期作业3 作业
- 番禺第二期作业1 作业
- 番禺第二期作业2 作业
- 2022预备班暑假作业三 作业
- 2022预备班暑假作业二 作业
- 2022预备班暑假作业一 作业
- selection test IOI
- 作业11 一维数组2——标记 作业
- 第10课 一维数组 作业
- 第9课 多重循环 作业
- 2022-1中段测试 IOI
- 第8课 while语句2 作业
- 第7课 while语句1 作业
- TYOI2022新生练习一 IOI
- 第6节 for语句3——多数据处理 作业
- 第5节 for语句2——枚举+筛选 作业
- 第4节 学习C++ for循环语句 作业
- 第3课 if语句 作业
- 第2课 认识 C++ 表达式 作业
-
Stat
-
Rating