骗分技巧大全

1|0目录:

  1. 骗分是什么

  2. 青铜:打表,最实用的骗分

  3. 白银:无解最好玩

  4. 黄金:小学数学找规律

  5. 铂金:千能的模拟

  6. 钻石:爆搜,最强的骗分技巧

  7. 王者:听天由命

  8. 天神:贪心的合并

  9. 上帝:报复性心理——死循环

  10. 实战演练

11.结语

2|0一. 骗分是什么

真香定律中说道,做出超范围的事总会遭受他人打脸,所以,骗分也是有坏处的。

骗分,顾名思义,不会写的题骗几分,积小成多,很可能骗分的蒟蒻就比认真做题xc的蒟蒻高出几分。接下来,就让我们学习骗分吧!

3|0二. 青铜:打表,最实用的骗分

打表是性价比比较高的骗分技巧。在赛场上的最后时刻,选择打表准没错。

1)样例——白送分

很多时候,样例是做题时的帮手,他可以帮助判断你的代码是否有明显错误,也同样可以用来骗分。美国比赛 USACO 当中,样例必须是第一个测试数据。具体操作贼简单,不讲了。

2)数学时间

有时候,关于数学的题目,且数据范围小,就直接把所有情况动手算出来,ifelse 直接输出。

让我们来看一道 例题

这题主要应用到栈,但是许多蒟蒻不会,只好骗分,那么这题怎么骗分呢?

我们定睛一看:n18

我天,真是的,这也太小了吧!

所以我们直接算算就算出来了。

int a[18] = {1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700}; cin >> n; cout << a[n - 1];

当然,直接就 AC 了。

3)打表的结论

打表实际上代码量有时较多,但是思考比较少,属于性价比较高的一种骗分方法。

4|0三. 白银:无解最好玩

接下来的这一章是所有蒟蒻最喜欢的:无解。话不多说,先来上例题:P1078 文化之旅

这是非常好的一个利用无解骗分的题目,对蒟蒻们来说,这道绿题有点难,但是请

看他的最后一句话:

一个整数,表示使者从起点国家到达终点国家最少需要走的距离数(如果无解则输出 1

看见没有!无解输出 1

所以只要输出 1 就可以得到 10 分,甚至 2030 分!

怎么样,是不是很神奇!!!

这种方法也可以用在输出 yesno情况 当中,或者是只有两三种输出文本的 情况 里。

那么,我们这一章就讲到这里。

5|0四. 黄金:小学数学找规律

首先声明:本节讲的规律不是正当的算法规律,而是数据的特点。


例题

如果不看题目,你会发现,这么一个算式,怎么算啊!

没事,你要用到找规律。

我们可以看到给了一组样例,好嘛,找不了规律。

那么这就要考验数学了,只需要用纸和笔算出来一两组小数据的结果,就能很容易发现这是斐波那契数列了。

其实就这么简单。

别看找规律麻烦,真正要用到它的时候就能派上大用场!

当然,找规律是所有的骗分技巧中最不实用的一种方法,他只能在合适的时候用,

例如斐波那契数列这道题就适用,文化之旅就不好用了。所以一定要谨慎地使用找规律。

某些题目会给你很多样例,你就可以观察他们的特点了。有时,数据中的某一个 (或几个)数,能通过简单的关系直接算出答案。

只要你找到了规律,在很多情况下你都能得到可观的分数。

这样的题目大多出现在 CFAtcoderNOI 或更高等级的比赛中,本人蒟蒻一个,就不举例了。传说某人去省选时专门琢磨数据的规律,结果有一题得了 30 分。

那么这一章就到此结束了。

6|0五. 铂金:千能的模拟

本章我们要进入算法了。

请蒟蒻中的蒟蒻自行退出。

正文:

模拟是一种朴素算法,他在骗分里却很实用。

他主要是骗一些高级数据结构的分,最常见的就是线段树。

那么我们就来看一道不在洛谷上的有技术含量但是能用模拟骗分的USACO线段树题目。

排 队(USACO 2007 January Silver) 【问题描述】 每天,农夫约翰的 N(1 ≤ N ≤ 50000)头奶牛总是按同一顺序排好队,有一天,约翰决定让一些牛玩一场飞盘游戏(Ultimate Frisbee),他决定在队列里选择一群位置连续的奶牛进行比赛,为了避免比赛结果过于悬殊,要求挑出的奶牛身高不要相差太大。 约翰准备了 Q1Q200000)组奶牛选择,并告诉你所有奶牛的身高 Hi(1 ≤ Hi ≤ 10^6)。他想知道每组里最高的奶牛和最矮的奶牛身高差是多少。 注意:在最大的数据上,输入输出将占据大部分时间。 【输入】 第一行,两个用空格隔开的整数 N 和 Q。 第 2 到第 N + 1 行,每行一个整数,第 i + 1 行表示第 i 头奶牛的身高 Hi 第 N + 2 到第 N + Q + 1 行,每行两个用空格隔开的整数 AB,表示选择从 AB 的所有牛(1AB ≤ N) 【输出】 Q 行,每行一个整数,代表每个询问的答案。 输入样例 输出样例 6 3 1 7 3 4 2 5 1 5 4 6 2 2 6 3 0

这道题一瞅就很难,我们蒟蒻不能硬啃。

我们来看看这道题怎么骗分。

找规律找不了,没有无解操作。

难道只能打表吗?

然而我们发现,这题是个线段树题,所以我们可以用模拟来骗分!

所以,我们只需要写一个程序,模拟程序,4050 分就有了!

for(int i = 1; i <= q; i ++){ scanf("%d %d", &a, &b); int min = 0x3f3f3f3f, max = 0x3f3f3f3f; for(int i = a; i <= b; i ++){ if(h[i] < min) min = h[i]; if(h[i] > max) max = h[i]; } printf("%d\n", max - min); }

搞定了!50 分!

那么我们这章就到这儿了。

7|0六. 钻石:爆搜,最强的骗分技巧

欢迎来到爆搜这章。

爆搜,顾名思义,暴力枚举和搜索。

1)暴力枚举

暴力枚举不用说,三连击 是一道很好的练习题。

那我们怎样用暴力枚举骗分呢?这块就不上代码了,累了

首先我们要清楚,暴力枚举只有在有思路的时候用。

暴力枚举一般用来骗什么分呢?有三种。

1.搜索
2.DP
3.所有只能看明白有思路不会写的题目
所有的题有思路不会写的时候,不用想那些类似贪心、dp 这类高级算法,用暴力直接求得分,有时间再钻研。

2)万能 DFS

搜索里有 DFSBFS,但是 BFS 不适合骗分。

DFS 是搜索中的重要算法,包括着回溯,但我们看来,图论神马的都是浮云,关键就是如何骗分。

DFS 对于骗分是至关重要的。比如说,一些 dp,可以 DFS;数论,可以 DFS;剪枝的题,更能 DFS。下面有一道 dp 例题

看到没!3010 以内的!

我们的 DFS 就要瞄准这里。

就像这样:

void DFS(int d, int c){ if(d == n){ if(c > ans) ans = c; return; } DFS(d + 1, c + w[i]); DFS(d + 1, c); }

那么这一章就到此结束了。

8|0七. 王者:听天由命

1)随机数

如果你觉得你的人品很好,可以试试这一招——输出随机数。

先看一下代码:

#include<stdlib.h> #include<time.h> //以上两个头文件必须加 int main() { srand(time(NULL)); //输出随机数前执行此语句 printf("%d",rand() % X); //输出一个0~X-1的随机整数。 return 0; }

这种方法适用于输出一个整数(或判断是否)的题目中,答案的范围越小越好。让老天爷决定你的得分吧。

据说,在 NOIP2013 中,有人 最后一题 不会,愤然打了个随机数,结果得了70 分啊!!

2)蒙的基本对

让我们来看看 这道题

发现:只有 JollyNot jolly 两种,而满足条件的几率很小,那我们就直接输出 Not jolly 就行了啊!

像这样:

#include<bits/stdc++.h> using namespace std; int main(){ cout << "Not jolly"; return 0; }

最后竟然得了 50 分!

那么这一章就到此结束了。

9|0八. 天神:贪心的合并

1)贪心算法

dp —— 动态规划,是一种很难的算法。你做了 1000dp,第 1001 道还是不会。

考场上遇到 dp 我们要怎么做呢?

首先需要做的就是:贪心。

在这里声明:不要害怕没过样例,直接去测试就好了。

利用贪心,谁最大就用谁,最多能得到 30 分。

2)合并

我们已经学了很多骗分方法,但他们中的大多效率并不高,一般能骗 10 20 分。这不

能满足我们的骗分要求。

然而,我们可以合并骗分的程序。举个最简单的例子,有些 含有无解情况的题目,

它们同样有样例。我们可以写这个程序:

if(是样例) cout << 样例; else cout << -1;

这样也许能变 10 分为 20 分,甚至更多。

当然,合并骗分方法时要注意,不要重复骗同一种情况,或漏考虑一些情况。

大量能骗分的问题都能用此法,大家可以试试用新方法骗 文化之旅

3) C++ 党的福利 —— STL

快速排序是一个经典算法,也是 C++ 党的经典福利。他们有这样的代码:

#include<algorithm>//这是必须的 sort(A + 1, A + n + 1); //对一个下标从 1 开始存储,长度为 n 的数组升序排序

就这么简单,完成了 P 党一大堆代码干的事情。

C++ 里还有一种东西,叫 vector 容器。它可以随着元素的数量而改变大小。它其实就是数组,却比数组强得多。

下面看看它的几种操作:

vector<int> v; //定义 v.push_back(x); //末尾增加一个元素x v.pop_back(); //末尾删除一个元素 v.size(); //返回容器中的元素个数

它同样可以使用下标访问。(从 0 开始)

那这一章就介绍完了。

10|0九. 上帝:报复性心理——死循环

至此,我已介绍完了我所知的骗分方法。如果上面的方法都不奏效,我也无能为力。但是,我还有最后一招——

有句古话说:“宁为玉碎,不为瓦全”。我们蒟蒻也应有这样的精神。骗不到分,就报复一下,卡评测以泄愤吧! 卡评测主要有两种方法:一是死循环,故意超时;二是进入终端,卡住编译器。 先介绍下第一种。代码很简单,请看:

while(1);

就是这短短一句话,就能卡住评测机长达 10s20s,甚至更多!

对于测试点多、时 限长的题目,这是个不错的方法。

第二种方法也很简单,但危害性较大,建议不要在重要比赛中使用,

否则可能让你追悔莫及。它就是:

include<con> //Windows系统中使用 include</dev/console> //Linux系统中使用

它非常强大,可以卡住评测系统,使其永远停止不了编译你的程序。

唯一的解除方法是,工作人员强行关机,重启,重测。

当然,我不保证他们不会气愤地把你的成绩变成 0 分。请慎用此方法。

11|0十. 实战演练

下面我们来做一些习题,练习骗分技巧。

我们来一起分析一下 NOIP2013 普及组的试题吧。

第一题

第二题

第三题

第四题

1 题,太弱了,蒟蒻都能做,不用骗,得 100 分。

2 题,数据很大,但是可以直接输入一个数,输出它 mod 10000 的值。得 10分。

3 题,是一道非常基础的 DP,但对于不知 DP 为何物的蒟蒻来说,就使用暴力算法(即 DFS)。得 20 分。

4 题,我们可以寻找一下数据的规律,你会发现,在所有样例中,M 值即为答案。所以直接输出 M,得 10 分。

这样下来,一共得 140 分,比一等分数线还高 20 分!你的信心一定会得到鼓舞的。这就是骗分的神奇。

12|0十一. 结语

骗分是蒟蒻的有力武器,可以在比赛中骗得大量分数。

相信大家在这个博客中收获了很多,希望本帖子能帮助你多得一些分。

但是,最后我还是要说一句:

只有做到不骗分,才是最好的骗分。


__EOF__

本文作者So_noSlack
本文链接https://www.cnblogs.com/So-noSlack/p/17571686.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   So_noSlack  阅读(697)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示