0.1 介绍
任何蒟蒻必须经过大量的刷题练习才能成为大牛乃至于神牛
这就是著名的 lzn 定理。然而,我们这些蒟蒻们,没有经过那么多历练,却要和大牛们同场竞技,我们该怎么以弱胜强呢?
答案就是:骗分
骗分是什么呢?骗分就是用不是正解的程序(保证我们能轻松搞定的程序),尽可能多得骗取分数(以便骗取 1=)。
接下来,就让我们走进这本大作《OI骗分导论》。
0.2 部分内容引用及参考
新版骗分导论 BY秋名山码民
骗分导论 BY李博杰
Part.1 从无解出发
1.1 无解情况
在很多题目中都有这句话:若无解,请输出-1
于是我们只要 cout<<-1;
就可。
如:文化之旅(P1024)
仅需输出 -1
就可得 2828 分
1.2 骗样例
每道题目的后面,都有一组“样例输入”和“样例输出”。它们的价值极大,不仅能初步帮你检验程序的对错(特别坑的样例除外),而且,如果你不会做这道题(这种情况蒟蒻们已经司空见惯了),你就可以直接输出样例!
如 USACO,每题输出样例就可得 11 个测试点的分。
Part.2 非完美的算法
2.1 暴力
暴力可以骗一些有规律的但你想不出来的题目。
例子:辗转相除法(P1015)
long long exgcd(long long x,long long y,long long cs){
if(y==0) return cs;
else return exgcd(y,x%y,cs+1);
}
int main(){
long long n,maxcs=0,ma=-1,mb=-1;
cin>>n;
for(long long a=1;a<=n;a++){
for(long long b=1;b<=a;b++){
long long ccs=exgcd(a,b,0);
if(ccs>maxcs){
maxcs=ccs;
ma=a;
mb=b;
}
}
}
cout<<ma<<" "<<mb<<" "<<maxcs;
return 0;
}
2.2 DFS
这对于你的骗分是至关重要的。比如说,一些动态规划题,可以DFSDFS;数学