• 个人简介

    Antimemetics

    道法三千六百门,而人人各执一苗根

    Cmd Markdown 编辑阅读器

    学生用书

    数学笔记全(GitHub)

    数学笔记全(洛谷)

    maths

    GraphEditor

    atcoder补题

    codeforces 补题

    Typora风格

    Typora使用教程

    //二分版子
    int l=1,r=n,mid,res;
    while(l<=r)
    {
    	mid=(l+r>>1);
    	if(check(mid)) res=mid,r=mid-1;
    	else l=mid+1;
    }
    cout<<res<<"\n";
    

    外网

    欧拉函数|(扩展)欧拉定理|欧拉反演

    欧拉函数及欧拉定理

    查错
    说出错误点并说出如何改证
    不能用以上未出现的代码
    保持原有代码框架
    不要改任何变量名
    请提供完整的修正后的代码
    将代码中运算符的左右空格全部删去
    超时
    将上一轮回答中的所有行内公式界定符从 \(...\) 改为 $...$,独立成行公式界定符从 \[...\] 改为 $$...$$
    往下续写
    
    代码要求
    保持原有代码框架
    不要改任何变量名
    请提供完整的修正后的代码
    将代码中运算符的左右空格全部删去
    统一为
    #include <bits/stdc++.h>
    #define int long long
    #define COUT cout<<"\n------------------------------------------------------------------------------------------\n";
    #define fi first
    #define se second
    #define be begin()
    #define en end()
    using namespace std;
    const int N=2e5+5;
    const int mod=998244353;
    const int inf=1e18;
    signed main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        
        return 0;
    }
    不要有动态指针
    禁止使用链式前向星
    
    详解,可用markdown,相关公式,定理,推论等都要有,专业名词要有解释,至少5万字,必要时可加入图片
    
    c++ 详解  ,要包含所有用法与变形,可用markdown,相关公式,定理,推论等都要有,专业名词要有解释,至少5万字,必要时可加入图片,把典型例题精讲与高级话题与研究扩展的代码也给一下
    将代码中运算符的左右空格全部删去
    代码要求
    统一为
    #include <bits/stdc++.h>
    #define int long long
    #define COUT cout<<"\n------------------------------------------------------------------------------------------\n";
    #define fi first
    #define se second
    #define be begin()
    #define en end()
    using namespace std;
    const int N=2e5+5;
    const int mod=998244353;
    const int inf=1e18;
    signed main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        
        return 0;
    }
    不要有动态指针
    禁止使用链式前向星
    

    https://www.cnblogs.com/275307894a/p/15950577.html

    int gcd(int a, int b)
    {
        if(a==0) return b;
        if(b==0||a==b) return a;
        if(a%2==0&&b%2==0) return 2*gcd(a>>1,b>>1);
        else if(a%2==0)  return gcd(a>>1,b);
        else if(b%2==0) return gcd(a,b>>1);
        else return gcd(abs(a-b),min(a,b));
    }
    

    线段树详解 (原理,实现与应用)

    「笔记」DP从入土到入门

    Latex数学公式符号大全


    该用户太懒,这里啥也没写 (´・ω・`)

    __int128

    template<typename T>void read(T &x)
    {
        x=0;
        char ch=getchar();
        while(ch<'0'||ch>'9')ch=getchar();
        while(ch>='0'&&ch<='9')
        {
            x=(x<<3)+(x<<1)+(ch^48);
            ch=getchar();
        }
    }
    void write(int x) // __int128_t 需要快读快写
    {
        if(x>9)write(x/10);
        putchar(x%10+'0');
    }
    
    read(n),read(m);
    
    write(e[i].b);
    putchar(' ');
    write(e[i].a);
    putchar('\n');
    
    
    int jie[N+5],ni[N+5],pow2[N*N+5],c[N+5][N+5];
    void CCF()
    {
        for(int i=0;i<=N;i++) 
    	{
    		c[i][0]=c[i][i]=c[0][i]=1;
    		for(int j=1;j<i;j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
    	}
    }
    int quick(int x,int a)
    {
        int ans=1;
        while(a)
        {
            if(a&1) ans=(ans*x)%mod;
            (x*=x)%=mod;
            a>>=1;
        }
        return ans;
    }
    inline int C(int n,int m)
    {
    	if(n<m||n<0||m<0) return 0;
        else if(n<=mod&&m<=mod) return (jie[n]*ni[m]%mod)*ni[n-m]%mod;
        else return C(n%mod,m%mod)*C(n/mod,m/mod)%mod;
    }
    void JN()
    {
    	jie[0]=1;
        for(int i=1;i<=N;i++) jie[i]=jie[i-1]*i%mod;
        ni[N]=quick(jie[N],mod-2);
        for(int i=N-1;i>=0;i--) ni[i]=ni[i+1]*(i+1)%mod;
        pow2[0]=1;
        for(int i=1;i<=N*N;i++) pow2[i]=(pow2[i-1]<<1)%mod;
    
    }
    int Catalan(int n)
    {
    	if(n&1) return 0;
        return C(2*n,n)*quick(1+n,mod-2)%mod;
    }
    void init(int n)
    {
    	ni[1]=1;
    	for(int i=2;i<n;i++) ni[i]=(mod-mod/i)*ni[mod%i]%mod;
    }
    

    https://atrating.baoshuo.dev/rating?username=shenchen_2030

    exit(0); //退出整个程序
    
    #pragma GCC optimize("O3")
    #pragma GCC optimize("Ofast")
    #pragma GCC target("avx,avx2,fma")
    
    1、3221225477:访问越界,一般是读或写了野指针指向的内存。
    
    2、3221225725:堆栈溢出,一般是无穷递归造成的。
    
    3、3221225620:除0错误,一般发生在整型数据除了0的时候。
    
    4、3221226356:在 Windows 平台上通常是由于程序发生了访问非法内存的错误,也就是所谓的“段错误”(Segmentation Fault)。
    
    
    return value 3:断言失败
    return value 3221225620 :除零错误
    return value 3221225477 :访问越界,是最常见的一种,例如数组 下标越界
    return value 3221225725 :堆栈溢出,一般都是无限递归
    

    如果您认为您的代码时间复杂度正确但是 TLE,可以尝试使用快速读入:

    inline int read()
    {
    	int x=0,f=1;char ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
    	while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    	return x*f;
    }
    

    函数返回值为读入的第一个整数。

    int fa[200010],num[200010];
    int find(int x)
    {
    	return fa[x]==x?x:fa[x]=find(fa[x]);
    }
    void unite(int a,int b)
    {
    	int a1=find(a),b1=find(b);
    	if(a1==b1) return ;
    	if(num[a1]<num[b1])
    	{
    		fa[a1]=b1;
    		num[b1]+=num[a1];
    	}
    	else 
    	{
    		fa[b1]=a1;
    		num[a1]+=num[b1];
    	}
    }
    

    for(int i=1;i<=n;i++)
      ls.push_back(a[i]);
    sort(ls.begin(),ls.end());
    ls.erase(unique(ls.begin(),ls.end()),ls.end());
    for(int i=1;i<=n;i++)
      a[i]=lower_bound(ls.begin(),ls.end(),a[i])-ls.begin()+1;
    

    OI-wiki

    //树 
    struct treenode
    {
    	bool top;//是否为顶点 
    	int count_ans=0;//当前点所包含最大子树的点权和
    	int count_max=0;//当前点所包含最大子树的最大点权
    	vector<int> count;//孩子节点 
    	int data;//点权
    	int num=0;//孩子节点数量 
    	int rudu=0;//入度数量
    	int chudu=0;//出度数量
    	int father;//父节点
    	int deep=0;//深度 
    }
    

    -std=c++14 -Wl,--stack=12345678 -O2
    
    

    QY博客园

    哈希

    unordered_map<int,int> r;
    int num=0;
    int get(int x)
    {
    	if(r.find(x)!=r.end()) return r[x];
    	else 
    	{
    		r[x]=++num;
    		return r[x];
    	}
    }
    


    单点更新和区间查询

    #include <bits/stdc++.h>
    #define int long long 
    using namespace std;
    inline int read()
    {
    	int x=0,f=1;char ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
    	while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    	return x*f;
    }
    int n,m;
    vector<int> b;
    inline int lowbit(int x){return x&(-x);}
    void add(int p,int x)
    {
    	while(p<=n)
    	{
    		b[p]+=x;
    		p+=lowbit(p);
    	}
    }
    /*
    void add(int x,int k)
    {
    	for(;x<=n;x+=lowbit(x)) b[x]+=k;
    } 
    */
    int count(int p)
    {
    	int num=0;
    	while(p)
    	{
    		num+=b[p];
    		p-=lowbit(p);
    	}
    	return num;
    }
    int sum(int l,int r){return count(r)-count(l-1);}
    signed main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0); 
        cout.tie(0);
        n=read(),m=read();
        b.resize(n+10);
        for(int i=1;i<=n;i++) add(i,read());//构建树状数组
        for(int i=1;i<=m;i++)
        {
            int a=read(),c=read(),d=read();
            if(a==1) add(c,d);//单点更新
            else cout<<sum(c,d)<<"\n";//区间查询
        }
        return 0;
    }
    

    区间更新 + 单点查询(差分思想)

    #include <bits/stdc++.h>
    #define int long long 
    using namespace std;
    inline int read()
    {
    	int x=0,f=1;char ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
    	while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    	return x*f;
    }
    int n,m;
    vector<int> b;
    inline int lowbit(int x){return x&(-x);}
    void add(int p,int x)
    {
    	while(p<=n)
    	{
    		b[p]+=x;
    		p+=lowbit(p);
    	}
    }
    int count(int p)
    {
    	int num=0;
    	while(p)
    	{
    		num+=b[p];
    		p-=lowbit(p);
    	}
    	return num;
    }
    int sum(int l,int r){return count(r)-count(l-1);}
    // 区间 [l, r] 增加 val
    void Add(int l,int r,int a) 
    {
        add(l,a);
        add(r+1,-a);
    }
    //单点查询位置p的值
    int Q(int p){return count(p);}
    signed main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0); 
        cout.tie(0);
        n=read(),m=read();
        int num=0;
        b.resize(n+10);
        for(int i=1;i<=n;i++) 
    	{
    		int cnt=read();
    		add(i,cnt-num);
    		num=cnt;
    	}
        for(int i=1;i<=m;i++)
        {
            int a=read();
            if(a==1) 
    		{
    			int l=read(),r=read(),x=read();
    			Add(l,r,x);//区间修改
    		}
            else 
    		{
    			int I=read();
    			cout<<Q(I)<<"\n";//单点查询
    		}
        }
        return 0;
    }
    

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        long long a[10];
        memset(a,-0x3f,sizeof(a));cout<<a[1]<<"\n";//-4485090715960753727
        memset(a,-2,sizeof(a));cout<<a[1]<<"\n";//-72340172838076674
        memset(a,-1.9,sizeof(a));cout<<a[1]<<"\n";//-1
        memset(a,-1,sizeof(a));cout<<a[1]<<"\n";//-1
        memset(a,0,sizeof(a));cout<<a[1]<<"\n";//0
        memset(a,1,sizeof(a));cout<<a[1]<<"\n";//72340172838076673
        memset(a,2,sizeof(a));cout<<a[1]<<"\n";//144680345676153346
        memset(a,3,sizeof(a));cout<<a[1]<<"\n";//217020518514230019
        memset(a,4,sizeof(a));cout<<a[1]<<"\n";//289360691352306692
        memset(a,5,sizeof(a));cout<<a[1]<<"\n";//361700864190383365
        memset(a,6,sizeof(a));cout<<a[1]<<"\n";//434041037028460038
        memset(a,7,sizeof(a));cout<<a[1]<<"\n";//506381209866536711
        memset(a,8,sizeof(a));cout<<a[1]<<"\n";//578721382704613384
        memset(a,9,sizeof(a));cout<<a[1]<<"\n";//651061555542690057
        memset(a,10,sizeof(a));cout<<a[1]<<"\n";//723401728380766730
        memset(a,100,sizeof(a));cout<<a[1]<<"\n";//7234017283807667300
        return 0;
    }
    
    

    ST表

    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    class ST 
    {
    private:
        vector<vector<int>> st;  // ST表
        vector<int> log2;        // 预处理的log2值
        int n;
    public:
        ST(const vector<int>& arr) 
    	{
            n = arr.size();
            log2.resize(n+1);
            log2[1]=0;
            for(int i=2;i<=n;i++) log2[i]=log2[i/2]+1;
            int K=log2[n]+1;// 确定k的最大值
            st.resize(n,vector<int>(K));
            for(int i=0;i<n;i++) st[i][0]=arr[i];
            for(int k=1;k<K;k++) for(int i=0;i+(1<<k)<=n;i++) st[i][k]=max(st[i][k-1],st[i+(1<<(k-1))][k-1]);
        }
        //区间最大值
        int Max(int l,int r) 
    	{
            int k=log2[r-l+1];
            return max(st[l][k],st[r-(1<<k)+1][k]);
        }
        //区间最小值
        int Min(int l,int r) 
    	{
            int k=log2[r-l+1];
            return min(st[l][k],st[r-(1<<k)+1][k]);
        }
        //打印ST表(调试用)
        void print() 
    	{
            int K=st[0].size();
            cout<<"ST表内容:"<<endl;
            for(int k=0;k<K;k++) 
    		{
                cout<<"k="<<k<<" (长度="<<(1<<k)<<"): ";
                for(int i=0;i+(1<<k)<=n;i++) cout << st[i][k] << " ";
                cout<<endl;
            }
        }
    };
    signed main() 
    {
    	ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        // 示例使用
        vector<int> arr={5,3,7,2,8,1,4,6};
        ST st(arr);
        st.print();
        cout<<"\n查询结果:"<<endl;
        cout<<"[2,5]的最大值: "<<st.Max(2,5)<<endl;  // 区间[7,2,8,1] -> 8
        cout<<"[0,7]的最大值: "<<st.Max(0,7)<<endl;  // 整个数组 -> 8
        cout<<"[3,6]的最小值: "<<st.Min(3,6)<<endl;  // 区间[2,8,1,4] -> 1
        return 0;
    }
    

    使用方法:将这段代码放置于头文件之前,会极大加快代码运行速度,但有小部分可能代码更慢,有时30pts暴力加了之后可以AC 正式比赛千万不能用

    !!禁忌力量!!

    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin.tie(false); 
    cout.tie(false);
    //可以加快运行速度
    
    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    int mod;
    int q(int a,int b)
    {
        if(b==0) return 1;
        else if(b&1) return a*q(a,b-1)%mod;
        else
        {
            int qq=q(a,b/2);
            return qq*qq%mod;
        }
    }
    signed main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        int n,m;
        cin>>n>>m>>mod;
        cout<<n<<"^"<<m<<" mod "<<mod<<"="<<q(n,m);
        return 0;
    }
    

    逆元

    int qwe(long long a,long long b)
    {
    	long long res=1;
    	a=a%mod;
    	while(b)
    	{
    		if(b&1) res=res*a%mod;
    		a=a*a%mod;
    		b/=2;
    	}
    	return res%mod;
    }
    void init() 
    {
    	fac[0]=1;
    	for(int i=1;i<N;++i) fac[i]=fac[i-1]*i%mod;
    	invfac[N-1]=qwe(fac[N-1],mod-2);
    	for(int i=N-2;i>=0;--i) invfac[i]=invfac[i+1]*(i+1)%mod;
    }
    int C(int n,int k)  
    {
    	if(k<0||k>n) return 0;
    	return fac[n]*invfac[k]%mod*invfac[n-k]%mod;
    }
    

    AC=Accepted 通过 Answer Cubi 粗鄙的答案

    WA=Wrong Answer 答案错误 Wonderful Answer 优美的答案

    TLE=Time Limit Exceed 超出时间限制 Time Limit Enough 时间充裕

    OLE=Output Limit Exceed 超出输出限制 Output Limit Enough 输出足够

    MLE=Memory Limit Exceed 超出内存限制 Memory Limit Enough 内存充裕

    RE=Runtime Error 程序运行时错误 Runtime Excellent 运行时(过于)优秀

    PE=Presentation Error 格式错误 Pretty Excellent 十分优秀

    CE=Compile Error 编译错误 Compile Easily 轻松通过编译

    UKE=Unknown Error 未知错误 Unbelievable Keeping Excellent 难以置信的保持优秀

    出现AC时你需要将你的答案变得更优美才能通过;

    而TLE、OLE、MLE、ER经常同时出现,可以给予你少量的额外分数;

    PE、CE都能给予你大量的额外分数;

    UKE这个标签非常稀有,可以让你直接通过这次比赛并名列前茅。

    评测状态

    Waiting 评测:评测请求正在等待被评测机抓取

    Fetched 评测:评测请求已被评测机抓取,正在准备开始评测

    Compiling 评测:正在编译中

    Judging 评测:编译成功,正在评测中

    Accepted 通过:程序输出完全正确

    Wrong Answer 不通过:程序输出与标准答案不一致(不包括行末空格以及文件末空行)

    Time Limit Exceeded 不通过:程序运行时间超过了题目限制

    Memory Limit Exceeded 不通过:程序运行内存空间超过了题目限制

    Runtime Error 不通过:程序运行时错误(如数组越界、被零除、运算溢出、栈溢出、无效指针等)

    Compile Error 不通过:编译失败

    System Error 错误:系统错误(如果您遇到此问题,请及时在讨论区进行反馈)

    Canceled 其他:评测被取消

    Unknown Error 其他:未知错误

    Ignored 其他:被忽略

    有“成绩取消”字样则说明管理员手动标记此记录为取消,可能违反了服务条款,比如代码被发现与其他用户的代码十分相似。

    比赛

    按照赛制不同,有不同的递交、排名规则。

    OI 赛制所有题目均以最后一次递交为准,特别地,请避免编译错误。

    OI 赛制排名规则为:总分高的排在前面,总分相等则排名相同。

    ACM/ICPC 赛制所有题目递交后立即评测,以是否通过为准。

    ACM/ICPC 赛制排名规则为:通过题目数多的排在前面,通过题目数相同的做题耗时(含罚时)少的排在前。

    乐多 赛制下,选手可以多次提交一道题目,并获得实时评测结果。

    乐多 赛制下,多次提交会导致选手的得分被扣除,排行榜将显示用户的最高得分。

    乐多 赛制下,每道题的最终得分为: s * max(0.95^n^,0.7)。 s,n 分别代表本次得分和本次提交前的尝试次数

    乐多 排名规则为:按照如上规则折算后的分数从高到低排名。

    IOI(严格) 赛制下,不同于IOI赛制,排行榜将被关闭至比赛结束。

    IOI(严格) 赛制下,每道题的排行榜得分将为用户每个子任务在所有提交中的最大得分的和。

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=1e2+5;
    int n,m,p,k,g[210][41],dp[210][41];
    string s,a[10];
    int sum(int l,int r){
    	int t=0;
    	for(int i=l;i<=r;i++){
    		for(int j=1;j<=m;j++){
    			if(g[i][j]&&r-i+1>=a[j].size()){
    				t++;
    				break;
    			}
    		}
    	}
    	return t;
    }
    int main(){
    	cin>>p>>k;
    	for(int i=1;i<=p;i++){
    		string zzz;
    		cin>>zzz;
    		s+=zzz;
    	}
    	n=s.size();
    	s=' '+s; 
    	cin>>m;
    	for(int i=1;i<=m;i++)cin>>a[i];
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			if(n-i+1<a[j].size()){
    				g[i][j]=0;
    			}else{
    				for(int t=0;t<a[j].size();t++){
    					if(s[i+t]!=a[j][t]){
    						g[i][j]=0;
    						break;
    					}else{
    						g[i][j]=1;
    					}
    				}	
    			}
    		}
    	}
    	memset(dp,0xef,sizeof(dp));
    	dp[0][0]=0;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=min(k,i);j++){
    			for(int l=1;l<=i;l++){
    				dp[i][j]=max(dp[i][j],dp[l-1][j-1]+sum(l,i));
    			}
    		}
    	}
    	cout<<dp[n][k];
    }
    

    edge://surf/ https://www.cnblogs.com/FPGAmaster/p/20185601

    #include <bits/extc++.h>

    using namespace __gnu_pbds;

    tree<long long,null_type,less<long long>,rb_tree_tag,tree_order_statistics_node_update> tre;

    shenchen20111025@outlook.com
    SC2011102519810609@outlook.com
    shenchen2011   :BKY
    shenchen_2030  :AC,CF,LG
    
    落魄谷中寒风吹,春秋蝉鸣少年归。
    
    荡魂山处石人泪,定仙游走魔向北。
    
    逆流河上万仙退,爱情不敌坚持泪。
    
    宿命天成命中败。仙尊悔而我不悔。
    
    
    
    早岁已知世事艰,仍许飞鸿荡云间。
    
    一路寒风身如絮,命海沉浮客独行。
    
    千磨万击心铸铁,殚精竭虑铸一剑。
    
    今朝剑指叠云处,练蛊练人还练天。
    
    
    
    独帜入渊深未知,身似浮萍命难持。
    
    千州皆朝归海处,一苇青拨戏浪巅。
    
    惊鸿四散鱼逃尽,唯有残帆傲此间。
    
    待到天开云雾散,负手直望笑苍天!
    
    在光绪二十六年
    神助拳 义和团
    扶清灭洋
    五十五天在北京
    天无雨 地焦旱
    鬼子眼睛皆发蓝
    一同下山把道传
    非是邪 非白莲 口念咒法语真言
    升黄表 敬香烟 请下各洞诸神仙
    弟子同心苦用功
    遍地草木化成兵
    洋枪队 不中用
    大炮打得那么凶
    洋鬼子 全杀尽
    大清一统定江山
    慈禧太后发令
    义和团向前进
    要把洋鬼子全都赶出北京
    兵法艺 都学全 平定鬼子不费难
    大法国 心胆寒 英美德俄尽消然
    拆铁道 拔线杆
    紧急毁坏火轮船
    洋鬼子 尽灭亡
    大清一统定江山
    最可恨那毒蛇猛兽
    吃尽我们血肉
    热血已沸腾
    五十五天在北京
    扶清灭洋
    五十五天在北京
    大清一统江山定
    慈禧太后发号
    令义和团向前进
    要把洋鬼子全都赶出北京
    兵法艺 都学全平定鬼子不费
    难大法国 心胆寒英美德俄尽消然
    拆铁道 拔线杆
    紧急毁坏火轮船洋
    鬼子 尽灭亡大清一统江山定
    最可恨那毒蛇猛兽
    吃尽我们血肉
    热血已沸腾
    五十五天在北京
    扶清灭洋
    五十五天在北京
    
  • 最近活动