1. 首页
  2. 公告
  1. 登录
  2. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文

2022tysc0122

UID: 8241, 注册于 2022-6-20 17:18:15, 最后登录于 2025-5-11 17:54:32, 目前离线.

解决了 586 道题目,RP: 255.15 (No. 163)

♂
  • 个人简介

    你是我的第 位访客

    TYOI+=∑i=2022∞mei\Huge {\rm{TYOI+=}}\sum_{i=2022}^{\infty}{me_i} TYOI+=i=2022∑∞​mei​

    好康的

    经典永流传

    image

    聪明的 GPT

    image

    数据结构蹲坑速记表

    数据结构 最大值 最小值 memset(*, 127, *); 值 memset(*, 63, *); 值
    short 327673276732767 −32768-32768−32768 326393263932639 161911619116191
    unsigned short 655356553565535 000
    int 214748364721474836472147483647 −2147483648-2147483648−2147483648 213906214321390621432139062143 106110956710611095671061109567
    unsigned int 429496729542949672954294967295 000
    long long 922337203685477580792233720368547758079223372036854775807 −9223372036854775808-9223372036854775808−9223372036854775808 918720195043573747191872019504357374719187201950435737471 455743088879883039945574308887988303994557430888798830399
    unsigned long long 184467440737095516151844674407370955161518446744073709551615 000
    float 3.40282e383.40282e383.40282e38 −1.17549e38-1.17549e38−1.17549e38 3.39615e383.39615e383.39615e38
    double 1.79769e3081.79769e3081.79769e308 −2.22507e308-2.22507e308−2.22507e308 1.38242e3061.38242e3061.38242e306
    long double 1.18973e49321.18973e49321.18973e4932 −3.3621e4932-3.3621e4932−3.3621e4932 3.4826e48933.4826e48933.4826e4893

    我的联系方式

    微信号:CodingcowLee

    QQ 号:778217810

    邮箱:codingcow@163.com

    常用网站

    我的博客:https://lixuannan.github.io/

    NOI 大纲:NOI 大纲(PDF)

    ChatGPT 镜像:https://chat19.aichatos.xyz/

    人教教材电子版:https://jc.pep.com.cn/

    Dev-C++:https://gitee.com/royqh1979/Dev-CPP/releases/download/v6.7.5/Dev-Cpp.6.7.5.MinGW-w64.GCC.10.3.Setup.exe

    小熊猫 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/

    软仓:https://ruancang.net/

    AdBlocker Plus:https://adblockplus.org/download

    扫雷:http://www.minesweeper.cn/

    小恐龙:https://dinoswords.gg/

    冲浪: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

    搞笑

    image

    算法模板

    树状数组

    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;
    }
    

    LaTeX\LaTeXLATE​X 对照表

    你的信息

    毁坏电脑的教程

    首先,打开 Dev-C++ ,然后创建一个文件,然后输入以下代码:

    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    struct node {
    	int x, y;
    } a[100009];
    
    int main() {
    	sort(a, a + 100007);
    }
    

    然后编译运行,在自动打开的文件里删除所有东西,然后保存,恭喜你,编译器废了!!!

    一张重要的思维导图

  • 最近活动

    • 【oiClass公益赛】2025CSP-J模拟赛#02 OI
    • 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

638
已递交
586
已通过
0
题解被赞

状态

  • 评测队列
  • 服务状态

开发

  • 开源

支持

  • 帮助
  • 联系我们

关于

  • 关于
  • 隐私
  • 服务条款
  • 版权申诉
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. 兼容模式
  3. 主题
    1. 亮色
    2. 暗色
  1. 粤ICP备2024335011号
  2. Worker 0, 23ms
  3. Powered by Hydro v5.0.0-beta.8 Community
关闭

登录

使用您的 oiClass 通用账户

忘记密码或者用户名?