• 个人简介

    ⎛⎝ ⏝⏝ ⎛⎝ 🚀️ 点进来康康我的主页 ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎ 🚀️

    上面是给排行榜上的人看的

    ______      ______  __  __      ______   _____   ______   
    /\__  _\    /\  _  \/\ \/\ \    /\__  _\ /\  __ \/\__  _\  
    \/_/\ \/    \ \ \ \ \ \ \/ /    \/_/\ \/ \ \ \/\ \/_/\ \/  
       \ \ \     \ \  __ \ \   <       \ \ \  \ \ \ \ \ \ \ \  
        \_\ \__   \ \ \/\ \ \ \\ \      \_\ \__\ \ \_\ \ \_\ \__ 
        /\_____\   \ \_\ \_\ \_\ \_\    /\_____\\ \_____\/\_____\
        \/_____/    \/_/\/_/\/_/\/_/    \/_____/ \/_____/\/_____/
    
















































    RP : ∞




















    等等,这两个箭头中间是什么? -> <- 戳一下试试?






























    α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω

























































































































    A+B Problem题解(完整版)

    1.普通解法:运用了普通计算机加法计算方法,C与C++代码如下:

    //c语言解法
    #include<cstdio>
    using namespace std;
    int main(){
        int a, b;
        scanf("%d%d", &a, &b);
        printf("%d%d", a + b);
        return 0;
    }
    
    //c++语言解法 
    #include<bits/stdc++.h>
     using namespace std; 
    int main(){ 
        int a, b; 
        cin >> a >> b; 
        cout << a + b; 
        return 0;
    }
    

    2.LCT(Link-Cut Tree)解法:使用动态树来解这题,是较~简单~难的,不多说,代码奉上:

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    struct node 
    {
        int data,rev,sum;
        node *son[2],*pre;
        bool judge();
        bool isroot();
        void pushdown();
        void update();
        void setson(node *child,int lr);
    }lct[233];
    int top,a,b;
    node *getnew(int x)
    {
        node *now=lct+ ++top;
        now->data=x;
        now->pre=now->son[1]=now->son[0]=lct;
        now->sum=0;
        now->rev=0;
        return now;
    }
    bool node::judge(){return pre->son[1]==this;}
    bool node::isroot()
    {
        if(pre==lct)return true;
        return !(pre->son[1]==this||pre->son[0]==this);
    }
    void node::pushdown()
    {
        if(this==lct||!rev)return;
        swap(son[0],son[1]);
        son[0]->rev^=1;
        son[1]->rev^=1;
        rev=0;
    }
    void node::update(){sum=son[1]->sum+son[0]->sum+data;}
    void node::setson(node *child,int lr)
    {
        this->pushdown();
        child->pre=this;
        son[lr]=child;
        this->update();
    }
    void rotate(node *now)
    {
        node *father=now->pre,*grandfa=father->pre;
        if(!father->isroot()) grandfa->pushdown();
        father->pushdown();now->pushdown();
        int lr=now->judge();
        father->setson(now->son[lr^1],lr);
        if(father->isroot()) now->pre=grandfa;
        else grandfa->setson(now,father->judge());
        now->setson(father,lr^1);
        father->update();now->update();
        if(grandfa!=lct) grandfa->update();
    }
    void splay(node *now)
    {
        if(now->isroot())return;
        for(;!now->isroot();rotate(now))
        if(!now->pre->isroot())
        now->judge()==now->pre->judge()?rotate(now->pre):rotate(now);
    }
    node *access(node *now)
    {
        node *last=lct;
        for(;now!=lct;last=now,now=now->pre)
        {
            splay(now);
            now->setson(last,1);
        }
        return last;
    }
    void changeroot(node *now)
    {
        access(now)->rev^=1;
        splay(now);
    }
    void connect(node *x,node *y)
    {
        changeroot(x);
        x->pre=y;
        access(x);
    }
    void cut(node *x,node *y)
    {
        changeroot(x);
        access(y);
        splay(x);
        x->pushdown();
        x->son[1]=y->pre=lct;
        x->update();
    }
    int query(node *x,node *y)
    {
        changeroot(x);
        node *now=access(y);
        return now->sum;
    }
    int main()
    {
        scanf("%d%d",&a,&b);
        node *A=getnew(a);
        node *B=getnew(b);
            connect(A,B);
            cut(A,B);
            connect(A,B);
        printf("%d\n",query(A,B)); 
        return 0;
    }
    

    3.树状数组解法:也很“简单”,代码如下:

    #include<iostream>
    #include<cstring>
    using namespace std;
    int lowbit(int a)
    {
        return a&(-a);
    }
    int main()
    {
        int n=2,m=1;
        int ans[m+1];
        int a[n+1],c[n+1],s[n+1];
        int o=0;
        memset(c,0,sizeof(c));
        s[0]=0;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            s[i]=s[i-1]+a[i];
            c[i]=s[i]-s[i-lowbit(i)];
        }
        for(int i=1;i<=m;i++)
        {
            int q=2;
            if(q==1)
            {
                int x,y;
                cin>>x>>y;
                int j=x;
                while(j<=n)
                {
                    c[j]+=y;
                    j+=lowbit(j);
                }
            }
            else
            {
                int x=1,y=2;//求a[1]+a[2]的和
                int s1=0,s2=0,p=x-1;
                while(p>0)
                {
                    s1+=c[p];
                    p-=lowbit(p);
                }
                p=y;
                while(p>0)
                {
                    s2+=c[p];
                    p-=lowbit(p);
                }    
                o++;
                ans[o]=s2-s1;
            }
        }
        for(int i=1;i<=o;i++)
            cout<<ans[i]<<endl;
        return 0;
    }
    

    4.Splay解法:因为加法满足交换律,所以我们可以把序列翻转一下,所求的总和不变,代码如下:

    #include <bits/stdc++.h>
    #define ll long long
    #define N 100000
    using namespace std;
    int sz[N], rev[N], tag[N], sum[N], ch[N][2], fa[N], val[N];
    int n, m, rt, x;
    void push_up(int x){
        sz[x] = sz[ch[x][0]] + sz[ch[x][1]] + 1;
        sum[x] = sum[ch[x][1]] + sum[ch[x][0]] + val[x];
    }
    void push_down(int x){
        if(rev[x]){
            swap(ch[x][0], ch[x][1]);
            if(ch[x][1]) rev[ch[x][1]] ^= 1;
            if(ch[x][0]) rev[ch[x][0]] ^= 1;
            rev[x] = 0;
        }
        if(tag[x]){
            if(ch[x][1]) tag[ch[x][1]] += tag[x], sum[ch[x][1]] += tag[x];
            if(ch[x][0]) tag[ch[x][0]] += tag[x], sum[ch[x][0]] += tag[x];
            tag[x] = 0;
        }
    }
    void rotate(int x, int &k){
        int y = fa[x], z = fa[fa[x]];
        int kind = ch[y][1] == x;
        if(y == k) k = x;
        else ch[z][ch[z][1]==y] = x;
        fa[x] = z; fa[y] = x; fa[ch[x][!kind]] = y;
        ch[y][kind] = ch[x][!kind]; ch[x][!kind] = y;
        push_up(y); push_up(x);
    }
    void splay(int x, int &k){
        while(x != k){
            int y = fa[x], z = fa[fa[x]];
            if(y != k) if(ch[y][1] == x ^ ch[z][1] == y) rotate(x, k);
            else rotate(y, k);
            rotate(x, k);
        }
    }
    int kth(int x, int k){
        push_down(x);
        int r = sz[ch[x][0]]+1;
        if(k == r) return x;
        if(k < r) return kth(ch[x][0], k);
        else return kth(ch[x][1], k-r);
    }
    void split(int l, int r){
        int x = kth(rt, l), y = kth(rt, r+2);
        splay(x, rt); splay(y, ch[rt][1]);
    }
    void rever(int l, int r){
        split(l, r);
        rev[ch[ch[rt][1]][0]] ^= 1;
    }
    void add(int l, int r, int v){
        split(l, r);
        tag[ch[ch[rt][1]][0]] += v;
        val[ch[ch[rt][1]][0]] += v;
        push_up(ch[ch[rt][1]][0]);
    }
    int build(int l, int r, int f){
        if(l > r) return 0;
        if(l == r){
            fa[l] = f;
            sz[l] = 1;
            return l;
        }
        int mid = l + r >> 1;
        ch[mid][0] = build(l, mid-1, mid);
        ch[mid][1] = build(mid+1, r, mid);
        fa[mid] = f;
        push_up(mid);
        return mid;
    }
    int asksum(int l, int r){
        split(l, r);
        return sum[ch[ch[rt][1]][0]];
    }
    int main(){
        n = 2;
        rt = build(1, n+2, 0);
        for(int i = 1; i <= n; i++){
            scanf("%d", &x);
            add(i, i, x);
        }
        rever(1, n);
        printf("%d\n", asksum(1, n));
        return 0;
    }
    

    5.Dijkstra+STL的优先队列优化 代码如下:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <cctype>
    #include <climits>
    #include <algorithm>
    #include <map>
    #include <queue>
    #include <vector>
    #include <ctime>
    #include <string>
    #include <cstring>
    using namespace std;
    const int N=405;
    struct Edge {
        int v,w;
    };
    vector<Edge> edge[N*N];
    int n;
    int dis[N*N];
    bool vis[N*N];
    struct cmp {
        bool operator()(int a,int b) {
            return dis[a]>dis[b];
        }
    };
    int Dijkstra(int start,int end)
    {
        priority_queue<int,vector<int>,cmp> dijQue;
        memset(dis,-1,sizeof(dis));
        memset(vis,0,sizeof(vis));
        dijQue.push(start);
        dis[start]=0;
        while(!dijQue.empty()) {
            int u=dijQue.top();
            dijQue.pop();
            vis[u]=0;
            if(u==end)
                break;
            for(int i=0; i<edge[u].size(); i++) {
                int v=edge[u][i].v;
                if(dis[v]==-1 || dis[v]>dis[u]+edge[u][i].w) {
                    dis[v]=dis[u]+edge[u][i].w;
                    if(!vis[v]) {
                        vis[v]=true;
                        dijQue.push(v);
                    }
                }
            }
        }
        return dis[end];
    }
    int main()
    {
        int a,b;
        scanf("%d%d",&a,&b);
        Edge Qpush;
    
        Qpush.v=1;
        Qpush.w=a;
        edge[0].push_back(Qpush);
    
        Qpush.v=2;
        Qpush.w=b;
        edge[1].push_back(Qpush);
    
        printf("%d",Dijkstra(0,2));
        return 0;
    }
    

    6.模拟:模拟人工运算方法,代码如下:

    #include <iostream> 
    #include <cmath>
    using namespace std;
    int fu=1,f=1,a,b,c=0;
    int main()
    {
        cin>>a>>b;
        if(a<0&&b>0)fu=2;
        if(a>0&&b<0)fu=3;
        if(a<0&&b<0)f=-1;
        if(a==0){cout<<b;return 0;}
        if(b==0){cout<<a;return 0;} 
        a=abs(a);
        b=abs(b);
        if(a>b&&fu==3)f=1;
        if(b>a&&fu==3)f=-1;
        if(b>a&&fu==2)f=1;
        if(b<a&&fu==2)f=-1;
        if(fu==1)c=a+b;
        if(fu>1)c=max(a,b)-min(a,b);
        c*=f;
        cout<<c;
        return 0;
    }
    

    7.字典树:代码如下:

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    using namespace std;
    struct node{
        int str[26];
        int sum;
    }s[1000];
    char str1[100];
    int t=0,tot=0,ss=0;
    bool f1;
    void built()
    {
        t=0;
        for(int i=0;i<strlen(str1);i++)
        {
             if(str1[i]=='-'){
                 f1=true;continue;
             }
             if(!s[t].str[str1[i]-'0'])
             s[t].str[str1[i]-'0']=++tot;
             t=s[t].str[str1[i]-'0'];
             s[t].sum=str1[i]-'0';
        }
    }
    int query()
    {
       int t=0;int s1=0;
       for(int i=0;i<strlen(str1);i++)
       {
               if(str1[i]=='-') continue;
               if(!s[t].str[str1[i]-'0']) return s1;
               t=s[t].str[str1[i]-'0'];
               s1=s1*10+s[t].sum;
       }
       return s1;
    }
    int main()
    {    
      for(int i=1;i<=2;i++)
      {
          f1=false;
          scanf("%s",str1);
        built();
        if(f1)
          ss-=query();
          else ss+=query();
      }
      printf("%d",ss);
      return 0;    
    }
    

    8.二进制:用二进制的计算方法计算,代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int a,b,s=0,s1=0,i=0,na=0,nb=0;
        cin>>a>>b;
        if(a<=0) na=1,a*=-1;
        while(a!=0)
        {
            if(a%2!=0)
            s+=pow(2,a%2*i);
            a/=2;
            i++;
        }
        i=0;
        if(na==1) s*=-1;
        if(b<=0) nb=1,b*=-1;
        while(b!=0)
        {
            if(b%2!=0)
            s1+=pow(2,b%2*i);
            b/=2;
            i++;
        }
        if(nb==1) s1*=-1;
        cout<<s+s1;;
        return 0;
    }
    

    9.最小生成树 代码如下:

    #include <cstdio>
    #include <algorithm>
    #define INF 2140000000
    using namespace std;
    struct tree{int x,y,t;}a[10];
    bool cmp(const tree&a,const tree&b){return a.t<b.t;}
    int f[11],i,j,k,n,m,x,y,t,ans;
    int root(int x){if (f[x]==x) return x;f[x]=root(f[x]);return f[x];}
    int main(){
        for (i=1;i<=10;i++) f[i]=i;
        for (i=1;i<=2;i++){
            scanf("%d",&a[i].t);
            a[i].x=i+1;a[i].y=1;k++;
        }
        a[++k].x=1;a[k].y=3,a[k].t=INF;
        sort(a+1,a+1+k,cmp);
        for (i=1;i<=k;i++){
            x=root(a[i].x);y=root(a[i].y);
            if (x!=y) f[x]=y,ans+=a[i].t; 
        }
        printf("%d\n",ans);
    }
    

    其他语言解法

    1.Pascal

    var a, b: longint;
    begin
        readln(a,b);
        writeln(a+b);
    end.
    

    2.Python2

    s = raw_input().split()
    print int(s[0]) + int(s[1])
    

    3.Python3

    s = input().split()
    print(int(s[0]) + int(s[1]))
    

    4.Java

    import java.io.*;
    import java.util.*;
    public class Main {
        public static void main(String args[]) throws Exception {
            Scanner cin=new Scanner(System.in);
            int a = cin.nextInt(), b = cin.nextInt();
            System.out.println(a+b);
        }
    }
    

    5.JavaScript (Node.js)

    const fs = require('fs')
    const data = fs.readFileSync('/dev/stdin')
    const result = data.toString('ascii').trim().split(' ').map(x => parseInt(x)).reduce((a, b) => a + b, 0)
    console.log(result)
    process.exit()
    

    6.php

    <?php
    $input = trim(file_get_contents("php://stdin"));
    list($a, $b) = explode(' ', $input);
    echo $a + $b;
    

    7.文言

    施「require('fs').readFileSync」於「「/dev/stdin」」。名之曰「數據」。
    施「(buf => buf.toString().trim())」於「數據」。昔之「數據」者。今其是矣。
    施「(s => s.split(' '))」於「數據」。昔之「數據」者。今其是矣。
    注曰。「「文言尚菜,無對象之操作,故需 JavaScript 之语法」」。
    
    夫「數據」之一。取一以施「parseInt」。名之曰「甲」。
    夫「數據」之二。取一以施「parseInt」。名之曰「乙」。
    
    加「甲」以「乙」。書之。
    

    以上是我想出来的亿种方法






































































































































    本人专用模板 (版本A)

    #include <bits/stdc++.h>
    #include <string>
    #include <iostream>
    #include <algorithm>
    #include <cmath>
    #include <ostream>
    #include <istream>
    #include <utility>
    #include <bits/stl_algobase.h>
    #include <bits/stl_algo.h>
    #include <bits/c++config.h>
    #include <bits/cpp_type_traits.h>
    #include <ext/type_traits.h>
    #include <math.h>
    #include <bits/cxxabi_forced.h>
    #include <bits/c++config.h>
    #include <bits/stringfwd.h>
    #include <bits/char_traits.h>
    #include <bits/allocator.h>
    #include <bits/cpp_type_traits.h>
    #include <bits/localefwd.h>
    #include <bits/ostream_insert.h>
    #include <bits/stl_iterator_base_types.h>
    #include <bits/stl_iterator_base_funcs.h>
    #include <bits/stl_iterator.h>
    #include <bits/stl_function.h>
    #include <queue>
    #include <deque>
    #include <vector>
    #include <bits/stl_heap.h>
    #include <bits/stl_function.h>
    #include <bits/stl_queue.h>
    #include <map>
    #include <bits/stl_tree.h>
    #include <bits/stl_map.h>
    #include <cstring>
    #include <stack>
    #include <bits/stl_stack.h>
    #include <bits/stl_multimap.h>
    #include <bits/range_access.h>
    #include <ext/numeric_traits.h>
    #include <bits/stl_algobase.h>
    #include <bits/range_access.h>
    #include <bits/basic_string.h>
    #include <bits/basic_string.tcc>
    //祖传防伪头文件  жжж
    using namespace std;
    
    int main() {
    
    	return 0;
    }
    
    
    
    
    
    /*
    
    ______      ______  __  __      ______   _____   ______
    /\__  _\    /\  _  \/\ \/\ \    /\__  _\ /\  __ \/\__  _\
    \/_/\ \/    \ \ \ \ \ \ \/ /    \/_/\ \/ \ \ \/\ \/_/\ \/
       \ \ \     \ \  __ \ \   <       \ \ \  \ \ \ \ \ \ \ \
        \_\ \__   \ \ \/\ \ \ \\ \      \_\ \__\ \ \_\ \ \_\ \__
        /\_____\   \ \_\ \_\ \_\ \_\    /\_____\\ \_____\/\_____\
        \/_____/    \/_/\/_/\/_/\/_/    \/_____/ \/_____/\/_____/
    
    */
    

    本人专用模板 (版本B)

    //#pragma GCC optimize(2)
    //#pragma GCC optimize(3)
    #include <bits/stdc++.h>
    #define AC "Answer Coarse"
    #define WA "Wonderful Answer"
    #define TLE "Time Limit Enough"
    #define MLE "Memory Limit Enough"
    #define CE "Compile Easily"
    #define RE "Run Excellently"
    #define UKE "Unbelievably Keep Enough Score"
    #define AU "All Unaccepted"
    int *****MKAS;
    const short SHORT = 65535;
    const int INT = 2147483647;
    const long long LONGlong = 461168601427387903;
    using namespace std;
    
    int main() {
    //	ios::sync_with_stdio(false);
    //	cin.tie(0);
    //	cout.tie(0);
    
    
    	return 0;
    }
    
































    小剧场: 近日,洛谷网络科技有限公司多位用户家长向 @kkksc03 反映,部分算法存在血腥、暴力等不利于青少年儿童的因素出现,要求对相关算法进行整改或被删除。

    洛谷网络科技有限公司题目组管理员在接受采访时说道,在最近几天内,洛谷收到了数十条家长来信,声称网站教授的部分算法存在“血腥”、“暴力”等内容。“他们说这些东西会教坏他们家的孩子,要求我们整改这些算法,把这些对小朋友不太好的东西删掉,或者直接把算法删除。”

    随着国庆 (雾) 的到来,很多家长直接来到洛谷反映情况。记者在现场随机采访了几位家长,询问他们对这些算法的看法。

    刘女士的儿子正在洛谷学习普及组内容。在采访中刘女士告诉记者,希望洛谷停开匈牙利算法。“我看里面讲的都是些一一匹配啊、二分图啊之类的匹配问题,这不是教孩子怎么找npy么?那他以后岂不是学会早恋了?”王先生也有类似的想法。他要求洛谷整改月赛内容。“听说课程里面有‘选妹子’,要是小朋友被女拳打了该怎么办?太危险了!”

    认为数据结构太危险、容易伤到孩子,是很多家长的共同心声。王大爷今年已经六十多岁了,却依然专程跑到学校,高呼停止教授Splay树和Treap树。他说,自家的孙子很小的时候撞到树上过,他担心这两棵树会给孩子造成心理阴影。

    此外,最大流、费用流等算法也遭到了部分家长的抵制。“主要还是玩水安全嘛”,陈女士说,“孩子们看到这些流啊、流量啊、回家就很可能会下水去游泳,我们当家长的还是不放心嘛。”而张先生的态度则更为坚决:“现在就敢玩水,将来敢玩什么,我都不敢想了!”

    同样作为算法,《深入浅出程序设计竞赛》受到抵制的理由则有很大不同。吴先生告诉记者:“主要是,这个(深入浅出程序设计竞赛的教材)太厚了,得有好几斤重,网上小孩子如果嬉戏打闹,拿着这本书到处乱甩(的话),非常危险。要是碰到头的话,那肯定会把头磕破的,你说这个责任由谁来承担?”

    在众多算法中,家长抵制呼声最高的则是图论算法。在家长看来,有的算法要找环,会绕晕到孩子;画图用的笔可能会戳伤手指;很多算法在搜索的时候可能会把系统栈用爆;有些算法写错了要输中量参解改很久,可能会累到小朋友,“把我家小孩累死了该怎么办?”

    除了担心孩子们的安全外,对孩子生活习惯的影响也成为了家长们抵制课程的要素之一。叶女士告诉记者,她希望洛谷整改全部英语题面。叶女士的儿子才考普及组,却已经学会了sh*t,f**k等高级词汇。“孩子现在出口就是这种词,影响很不好,肯定是洛谷的题面教的。”叶女士说。

    同样,李先生对于洛谷的bfs, dfs, bdfs算法也颇有微词。“我们还是想给孩子营造一个健康的成长环境嘛,我看课上,居然让小朋友们去暴力遍历图啊、暴力找答案啊,这不是教小朋友们暴力么?平时打打杀杀的动画片我都不让自家小孩看,更不要说动手去做这些了。”

    此外,一些非盈利机构也遭到了家长的抵制。很多家长认为,玩电脑是影响自家小孩学习的关键原因,因此强烈要求洛谷取缔 F ,并取消相关竞赛。 N​**P 首当其冲,周先生接受采访时说道:“听说这门课要学生们自己学习算法,要是真把算法学好了,不就会有更多小朋友沉迷电脑么?如果他们不学算法的话,我们的小孩就不会这么贪玩电脑了。”同样,一些家长也对浏览器表示不满:“没有浏览器,小朋友们自然就不会沉迷上网了。**​”

    让记者感到惊奇的是,很多家长对一些计算机基础数学内容也有较大的意见。部分家长要求下架《组合数学》 《混凝土数学》等课程。在问及原因时,家长告诉记者,文中的感叹号很像一根棍子,会引发小朋友的暴力倾向。

    针对此事,记者尝试联络洛谷网络科技有限公司的管理员。管理员回复称,@kkksc03 校长正在忙于建设世界一流 OJ,暂未就此事件给予答复。

    不过,也有少数家长对一些算法表示支持。一位家长告诉记者,希望学校着力建设《编程语言基础》课程。“孩子如果在学校学好语言这些东西的话,回让他搬砖的时候应该能更好一些。”




























































































    精选

    a
    a
    a
    a
    超长字符:ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎ ด้้้้้็้้้็็็็็้้้้้็็็็็้้้้้้็็็ 可以在记事本里复制尾巴再黏贴加长,理论上可以无限长(亲测没问题,不行就是方法不对)

    超大的笑脸:⎛⎝ ⏝⏝ ⎛⎝
    另一个超长字符(这个不能加长):------------------------------------------------------------------------------■̷͙̝̬͇̥̣͉̤̮͖̗̳̘̯͚̝͍̽̏͒̀̉̈́̀͑̏̓̾̅̂͆̾̓̀̂̓̚҈̵̴̸͈͔̲̲̜̖̳̩̯̬͙͍̬̥͙͚̦̮͈̝͔̥̩̤̲̥̖͙͎͎̟̮̖͍̭̤̘̜̟͕̭͉̳̖̮͓̞͚̗̇̄͛̌͆̋̽̇̓̒̅̍͂̆̇̊͌̓͊͒̄͋̄͊̓̈́̔̿͑̀̅̇̂́̇̓̿̿̐͂̈́͂͊̓̂͌̐̍̀̃͂̈̽̐̚̚҈̷̸̴̶̵̷̩̬̜̰͍̰̞̣̮̬͕͎͎̠̮͚͉̖̤̜͉̠̞̟͈̳̖̥̖̯̬͎͈̩͖̘͈̬̘͚̱̙͇̞̳͚̪̘̞͕͎͖̖͈̪̝͖̥̙̥͔̱͖͓̲̰̬̮̜̰͍͇̫̞̮͔͙͉̗̭̭̰͕̠͔̦͔͍̘̪͇͍̠͉̘̱̯͖͖͚̖̠̣͇͇͇̮̮̳͎͕̗̙͍̣͕̥̝̩̙̥̙̘͎̖̰͙̠̥͆̔͛̽̏̉̇̓͂͒̄̂͆͂̑̽̏̃͐̒͋̑́̿̉̇͌̽̓̃̊̎̌̌̈́̑̓͒̉̇̋͐̋̓̈́̓̀̽́̌̑̿́̆͐͗̀̐͆̋̑̿̈́̆̉̊̽̅͆̇̽̏͋͒̈́̆̅͐̌͊͗̈̇͆̔̍̄̎͒̆̊̓̂̐͂͐̽̾̒̐̇̆̀͊͗̃̎̈́̋͗͗͛͑͑͑̋̚̚̚ͅͅͅͅ҉̷̵̸̷̷͓̙͚͙͉̫͙̖͇̜̦̲̞̳̞̩̱̬̙̮̣̫͇͔̖̩͔̲̙͍̞̤͖̘͙͕͎̠͎̞̫̣̗͇͔̪͉̫̯̠͔͓̫͇̩̯̟͖͎̱̟͎̠̣̲̭̤̘͚̫̖̘͙͇̱̦͓͇͇̩̦̭̤̣̥̖͍͍̗̥̙̪̫̜̠̳̫͙̒̓́͑̆̍̄̈̋͊̈̇̓̇͑̈́̔̇̀̃̎̀̊͂̋̇̎̄̃́̒̐̆͋͒̌͆͛̾̎̅̎̑̿͋̏̉͌̎̽̀͌̽̑͊̆̽̈́̀̓͗̓̓̆̀̇̐̉̀͌͛̍̊̓̊̐̂̃͒́̈̄̒̐̈́̓͗̌̈̽̂̋̑͐͑̏̽́̚̚̚̚̚ͅͅͅͅͅ҈̴̵̸̴̵̸̴̰͇̱̮̟̲̖̮̠̝̙͚͓̖͔̫͕̱̰͕̱̘̩̩̫̘͇͍̳̯̫̞̤̳̟͕̜͉̜̝̭̗̪̗̠̞͎͎͖̞͎͎̘͙̦͉̣̮̜̗̩̪̪̯̲͚̘͎͖̙̟͔̪̞̪͚͈̫͍̳̮̩͓̬͉̮̭͎̝̙͚̪̣̱̦͚̣̠̦̲͉̪̘̟̞̖̬̱͓̞̱͓͉̯̣̖͔̗̙̘̪̳̣͉̥̲̯̳̦̗̤͔̬͓̬͔̠̗̞̟̭̱̤̠̠͇͔̠̠̭̮̟̰̋̀͂̄͊̒͋̿̎̍̄̇̍̀̈́̑͂̐͐͆͑̓̔̎̔̅̅́̂͐̋̿̌̍̊̋̏̏̅̊̊͑̉̾̌̈̓̓̏̈̾͐̆̀͋̐̔̿̊̑͆̾̀́͂́̃̾͋͑͑̆̌̋̀̄͛̄̔̽̅̽̋̊̓͆̒̔̀̑͛̌͆̆̐̀̇̂͊͒̐̈́͗̃̃̏̾̆́͂̂̔̂͂͊̾̃͐̅̄̔́̒͆̌͑̓́̑̚̚̚̚ͅͅͅ҈̠̬̱̳͇͍̥̪̟̞̮̟̝̭͕̝̠̤͍͔͚̘̬̌̒̊̃̈́̅͂͂̑̓̓́̒͗͋̚҈̸̙͕͉̰̖̰̲̭̙̞͍͎̲̦͖̮̪̞̦͈̳̥͈̗͚̫̮̥̝͙̬̳̙͙͈͖̲̞̦̦̗̭̇̿̑̊́̃̊̇̒̄͂͛͑͒͊̈́̿̓̒̓͌̂̒̎̿̄͋̔̑̀͑͋͑̚̚ͅͅ҈̴͈̞͇͕̤̩͓͓̯̯̖̝͚̝͍̖̗̘͇͖͇͎̫͕̫̳̗̩͖̟̤͈̠̜̤͚̭͍̩̞̳̲͉̱̊̓͒̊̑̈͗͊̊̓̍́̌́͊͐͐̇̈͋̑̒̆͐́̍͂͊̉̉̍̃͊̂̌̏͐̂͐̈́̐҉̷̸̵̵̴̴͔̘̱͕͍͎̦̜̟̜̣̯̫̞̟̣̪̣̱̘͓͔͎̗͇̫̬̞̣̳̪͈̙̦̯̰̩̞̰̙̱͚͉̦̥̲̞͔̖̘̙̯͍̝͈͓̱̦͚̬̭̠̬̘̫͖͇̥͉̮̘̱̥̫͎͈͙̜̬̲̳̖͇̳͉̪̮̖͙̤̤̣̝̤̫͕̟͖̮͚̞͖͕̠̠̯̥͉͓̱͈̮̘̱̪̾̔́̅̍̽̏̅̇̑̂̉̎̎̐̎͗͋̀̓̇̋͐͌͑̀͆̍̀̉́̇͐́͋͑̇́͆̒͆͛̎͐͆̏̃̿̍̇̈́͆̊̊̏͂̈̔̐̔͋͛̇̒̿̓̋͂͂̂͋̍́͑̈́̈́̈́̀̀͐͋̂͋̇̏̿̏͑̌̒̌̀̐̊̀̍̃̍̓̊͗̒̅͗̾̊̀̈̀̀̋̅̆͛̆͐̚̚̚ͅͅͅͅ҉̸̠̘̱̜̱̮̯̖̩͚̰̰̲̜̞̤͙̥͓̥̦͔̱̳̩͇͇̥͔̮̣͇̥͈̣̥͈͈̬̩̘̣̟̟̌͑̇̀̅̔́͂̑̐́̽̑̇̀̇̿̍̒̊̀͌̓͋̀̅̑̒͒̏͗̈́̉̌̚ͅͅ҈͊

    ~-太长啦,放到后面不会挡住其他内容-~

    ———————————————————

    ACM:赛前崩溃

    (坏了考ACM了不得完蛋)

    IOI:赛中崩溃

    (这tm题目是洛谷黑题被吧这么~坑~难)

    OI:赛后崩溃

    (RE一生之敌)

    ———————————————————

    DFS = disease free survival 医学界为了统计癌症病人的存活率,采用的统计指标

    dp = Double Play 双杀

    ———————————————————

    《少年Hydro》 – 改编自鲁迅《少年闰土》

    深蓝的新手村旁挂着一轮金黄的NOIP,下面是海边的机房,都坐着一望无际的很菜的蒟蒻。其间有一个十一二岁的神犇,项带U盘,手捏一柄键盘,向一匹BUG尽力地刺去。那BUG却将身一扭,反从他的胯下逃走了。

    这少年便是Hydro。我认识他时,也不过十多岁,离现在将有三十年了;那时我的父亲还在世,家景也好,我正是一个绿名萌新。那一年,我家是一件大祭祀的值年。这祭祀,说是三十多年才能轮到一回,所以很郑重。正月里敲代码,供品很多,电脑很讲究,用的人也很多,祭器也很要防偷去。我家只有一个蒟蒻,忙不过来,他便对父亲说,可以叫他的儿子Hydro来管电脑的。

    我的父亲允许了;我也很高兴,因为我早听到Hydro这名字,而且知道他和我仿佛年纪,闰月生的,五行缺土,所以他的父亲叫他chen_zhe。他是能装二叉树捉小BUG的。

    我于是日日盼望新年,新年到,Hydro也就到了。好容易到了年末,有一日,母亲告诉我,Hydro来了,我便飞跑地去看。他正在机房里,紫色的圆脸,头戴一顶小毡帽,颈上套一圈明晃晃的 U盘,这可见kkksc十分爱他,怕他死去,所以在管理员面前许下愿心,用U盘将他套住了。他见人很怕羞,只是不怕我,没有旁人的时候,便和我说话,于是不到半日,我们便熟识了。

    我们那时候不知道谈些什么,只记Hydro很高兴,说是上城之后,见了许多没有见过的东西。

    第二日,我便要他捕BUG。他说:“

    这不能。须O2优化才好,我们代码上,下了注释,我扫出一块空行来,用代码支起一个二维数组,撒下头文件,看BUG来吃时,我远远地将缚在代码上的绳子只一拉,那BUG就罩在竹匾下了。什么都有:CE,WA,TLE,RE……”

    我于是又很盼望O2优化。

    Hydro又对我说:

    “现在太冷,你夏天到我们这里来,我们日里到海边捡题解去,红的绿的都有,A+B也有,观音手也有...晚上我和kkksc管蒟蒻去,你也去。”

    “管贼吗?”

    “不是。走路的大佬手痒痒了就带一个蒟蒻走,我们这里是不算偷的。要管的是AC自动机,BUG,ZZMG。月亮地下,你听,啦啦地响了, BUG在咬代码了。你便捏了键盘,轻轻地走去……”

    我那时并不知道这所谓BUG的是怎么一件东西——便是现在也不知道——只是无端地觉得状如虫子而很凶猛。

    “它不咬人吗?”

    “有键盘呢。走到了,看见BUG了,你便改。这畜生很伶俐,倒向你奔来,反从胯下窜了。它的皮毛是油一般的滑……”

    我素不知道天下有这许多新鲜事:海边有如许五色的题解;蒟蒻有这样危险的经历,我先前单知道它在机房里做A+B罢了。

    “我们机房里,老师走了的时候,就有许多人只是摸鱼,都有铜铃似的两只眼……”

    啊!Hydro的心里有无穷无尽的稀奇的事,都是我往常的朋友所不知道的。Hydro在机房里时,他们都和我一样,只看见院子里高墙上的四角的天空。

    可惜正月过去了,Hydro须回家里去。我急得大哭,他也躲到机房里,哭着不肯出门,但终于被kkksc带走了。他后来还托他的父亲带给我一包题解和几只很好看的鼠标,我也曾送他一两次东西,但从此没有再见面。

    ———————————————————

    《OI》 – 改编自朱自清《春》

    盼望着,盼望着,模拟赛来了,CSP的脚步近了。一切都像刚WA的样子,欣欣然重构代码。

    代码复杂度朗润起来了,时间复杂度涨起来了,CE的标志红起来了。毒瘤数据偷偷地从土里钻出来,嫩嫩的,绿绿的。洛谷里,CODE FORCE里,瞧去,一大片一大片满是的。坐着,躺着,写两个for,码几脚while,跑几趟dfs,搜几回暴力。TLE轻悄悄的,MLE软绵绵的。POJ、HDU、51nod,你不让我,我不让你,都开满了WA赶趟儿。红的像火,粉的像霞,白的像雪。WA里带着RE;闭了眼,评测界面仿佛已经满是UKE、RE、OLE、MLE、CE、WA。花下成千成百的蜜蜂嗡嗡地闹着,大小的蝴蝶飞来飞去。0分遍地是:杂样儿,DP没初始化的,数学公式写错的,散在评测机里,像眼睛,像星星,还眨呀眨的。

    “吹面不寒AK风”,不错的,像CCF主席的手抚摸着你。风里带来些新翻的AC的气息,混着打表味儿,还有各种骗分的香,都在微微润湿的AK里酝酿。模拟将巢安在长篇文章当中,高兴起来了,呼朋引伴地卖弄超过200行的代码,唱出宛转的AC音乐,与轻风流水应和着。IOI通过的短笛,这时候也成天嘹亮地响着。

    Debug是最寻常的,一调就是三两天。可别恼。看,像无限循环,像scanf不写&,像数组越界,密密地斜织着,人家exe上全笼着一层01串。大佬的评测却AC得发亮,蒟蒻的评测也青蛙得逼你的眼。傍晚时候,上灯了,一点点算法错误的光,烘托出一片数据结构用错的夜。在乡下,小路上,石桥边,有撑起伞慢慢走了1e18秒的人。还有地里工作的码农,披着电源戴着黑帽子的。他们的电脑,稀稀疏疏的在调试里静默着。

    天上AKNOI渐渐多了,地上AKIOI也多了。俄国中国,克罗地亚,波罗的海,也赶趟儿似的,一个个都出来了。AKAK CSP-J,AKAK CSP-S,各AK各的一份事去。“一年之计在于CSP”,刚起头儿,有的是爆零,有的是懵逼。

    ———————————————————

    《SPFA》 – 改编自鲁迅《孔乙己》

    SPFA是写最短路径而不用堆优化的唯一的人。

    他身材很高大;青白脸色,皱纹间时常夹些伤痕;

    一部乱蓬蓬的花白的胡子。穿的虽然是女装,可是又脏又破,似乎十多年没有补,也没有洗。

    他对人说话,总是满口O(kE),叫人半懂不懂的。

    因为他姓S,别人便从描红纸上的“Shortest Path Faster Algorithm”这半懂不懂的话里,替他取下一个绰号,叫作SPFA。

    SPFA一到机房,所有写代码的人便都看着他笑,有的叫道,“SPFA,你又TLE了!”

    他不回答,对我说,“打1e5个结点,要2e5条边。”便排出一条队列。

    他们又故意的高声嚷道,“你一定又被出题人卡了!”SPFA睁大眼睛说,“你怎么这样凭空污人清白……”

    “什么清白?我前天亲眼见你被出题人卡到O(nm),吊着打。”

    SPFA便涨红了脸,额上的青筋条条绽出,争辩道,“TLE不能算O(nm)……O(nm)!

    卡常数的事,能算O(nm)么?”接连便是难懂的话,什么“SPFA的复杂度是O(kE)”,什么“可以证明k一般小于等于2”之类。

    引得众人都哄笑起来;机房内外充满了快活的空气。

    现在,我已经一年没看见也没听别人说过SPFA,SPFA大抵是死了吧!

    ———————————————————

    神奇的评测结果

    AC:啊这题目终于过了啊!

    WA:没逝,改亿下就……也不行

    TLE:这tm到底是什么个思路啊?!

    MLE:……算了

    CE:你知道为什么变量会重名吗,我不到哇

    RE:一定是我数组不够大,再逝亿次……

    PC:我怎么知道是那个地方错了!

    UKE:我真的谢谢你

    OLE:没复制正确是不存在的好吧

    AC=Answer Coarse=粗劣的答案

    WA=Wonderful Answer=好答案

    TLE=Time Limit Enough=时间充裕

    MLE=Memory Limit Enough=内存充裕

    CE=Compile Easily=轻松通过编译

    RE=Run Excellently=完美运行

    UKE=Unbelievably Keep Enough Score=难以置信地保持足够的分数

    AU=All Unaccepted=全都不正确

    ———————————————————

    • AC = Apareciym 显形咒
    • CE = Cruciatus Curse 钻心咒
    • PE = Petrificus 石化咒
    • RE = Reducto 粉碎咒
    • WA = Wingardium Leviosa 悬浮咒
    • MLE = Muggle-Repelling 驱逐咒
    • TLE = Tarantollegra 舞步咒
    • OLE = Obliviate 遗忘咒

    ———————————————————

    越来越菜的过程

    • 可能是梗神,但一定是蒟蒻!!!
    • 英语不及格,说明我爱国;
    • 语文不及格,恋爱没资格;
    • 物理不及格,电死不负责;
    • 化学不及格,硫酸也喝得;
    • 政治不及格,老师没道德;
    • 信息不及格,网吧要打折;
    • 数学不及格,突出我性格;
    • 历史不及格,社会要改革;
    • 鸡学不及格,绿尸函打折;
    • 全科不及格,老妈动真格!
    • 语文老师一回头,此地空余黄鹤楼。
    • 数学老师一回头,二次函数对称轴。
    • 英语老师一回头,sorry加上栓Q油。
    • 化学老师一回头,二氧化碳变汽油。
    • 物理老师一回头,一跟杠杆撬地球.
    • 生物老师一回头,试管婴儿水中游。
    • 地理老师一回头,大陆版块乱漂流。
    • 历史老师一回头,秦始皇来推铅球。
    • 劳技老师一回头,破铜烂铁来走秀。
    • 政治老师一回头,布什改行卖豆油。
    • 美术老师一回头,蒙娜丽莎也风流。
    • 体育老师一回头,奥运取消扔铅球。
    • 电脑老师一回头,学生全成阿Q友。
    • 鸡学老师一回头,唱跳RAP打篮球。
    • 全体老师一回头,世界人民没自由。
    • 上课:是一个人的孤单,​逃课:是一群人的狂欢。
    • 世界上只有两句真理:1、人一定会死。2、程序一定会有Bug。

    ———————————————————

    暴力出奇迹,骗分过样例。

    数学先打表,DP看运气。

    穷举TLE,递推UKE。

    模拟MLE,贪心还CE。

    想要骗到分,就要有方法。

    图论背模板,数论背公式。

    动规背方程,高精背代码。

    如果都没背,干脆输样例。

    想要骗到分,就要有方法。

    图论背模板,数论背公式。

    动规背方程,高精背代码。

    如果都没背,干脆输样例。

    模拟只会猜题意,贪心只能过样例。

    数学上来先打表, DP 一般看规律。

    组合数学靠运气,计算几何瞎暴力。

    图论强行套模板,数论只会 G C D。

    递归递推伤不起,搜索茫然 T L E。

    分治做得像枚举,暴力枚举数第一。

    数据结构干瞪眼,怒刷水题找信心。

    ———————————————————

    西江月夜行·oi农场

    AC别枝惊犇,CE半夜鸣蒟。

    电脑香里说疯年,听取WA声一片。

    七八个TLE,两三点MLE。

    旧时广搜满分边,路转RE忽见。

    ———————————————————

    过坤坤庄

    故人名坤坤,邀我至球场。

    中分头上疏,背带身上穿。

    开场先胯下,铁山靠运球。

    待到只因叫,还来你干嘛。

    ———————————————————

    满江红

    怒发冲冠,凭栏处、潇潇雨歇。

    抬望眼,满天TLE,壮怀怒火。

    三十WA尘与土,八千RE云和月。

    莫抄袭,无AC记录,空悲切!

    CE耻,犹未雪。蒟蒻恨,何时灭!

    ———————————————————

    《乐于助人》 《翻车啦》

    以后就用这个做桌面吧