-
个人简介
⎛⎝ ⏝⏝ ⎛⎝ 🚀️ 点进来康康我的主页 ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎ 🚀️
上面是给排行榜上的人看的
______ ______ __ __ ______ _____ ______ /\__ _\ /\ _ \/\ \/\ \ /\__ _\ /\ __ \/\__ _\ \/_/\ \/ \ \ \ \ \ \ \/ / \/_/\ \/ \ \ \/\ \/_/\ \/ \ \ \ \ \ __ \ \ < \ \ \ \ \ \ \ \ \ \ \ \_\ \__ \ \ \/\ \ \ \\ \ \_\ \__\ \ \_\ \ \_\ \__ /\_____\ \ \_\ \_\ \_\ \_\ /\_____\\ \_____\/\_____\ \/_____/ \/_/\/_/\/_/\/_/ \/_____/ \/_____/\/_____/
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耻,犹未雪。蒟蒻恨,何时灭!
———————————————————