弱鸡的福音(骗分论)

前言:如果你是c++大佬的话你就可以走了,这篇文章对你来说没有任何作用。但是如果你是c++弱鸡csp-J没有过的话这篇文章非常适合你。

引子:每当你在OI赛制中的题没有任何头时你会怎么做?这是你有四个选项1,把题目看一遍又一遍,直到看懂为止。2,在网上找答案。3,摆烂.4,骗分。我们先说第一种方案:把题目看一遍又一遍,直到看懂为止。首先我们要搞清楚我们参加比赛是为了什么,如果你是为了练习自己的代码功底的话,那么大门在右边你可以看别人的文章了。但是如果你是为了得分的话你可以排除第一个选项了。再说第二个选项:在网上找答案。如果你选了第二个选项的话,已经可以知道你的目的是得分了,但是通过我在洛谷月赛的题中发现比赛的题都是T开头的,这代表什么?这题是现出的,除非这题是道模板题,而且你还知道这题的模板。但是洛谷的那些出题“仙人”们可不会出模板题,就算出了像我们这样的弱鸡也看不出来。第三个选项:摆烂,不说了反正一分也没有。如果你在前三个选项中都没有中意的,那么你完全可以试试第四个选项:骗分。

正文

1,数据点

众所周知在OI赛制中是有数据点的,只要你的代码刚好卡在所有数据点中拿满分也是有可能的。就想一些题它会告诉你50%的数据K=0;但是这句话的意思可不是让你int K=0;就完事了,你要把这句话带到题目中。比如题目说有K个传送门,你要走几步?这是你只用把所有步数加起来就可以拿50%的分数了。在大不了这道题的数组小的话你写个长点的if判断,我就不行一场OI两三个小时你写不完。

2,暴力算法

我们刚刚学习了看数据点,我们只要通过看一些数据点就可以决定循环范围,把所有的可能性都枚举一遍就可以了只不过一些时间复杂度是log(N)的题就会TLE。

3,完美的优化时间复杂度:打表算法

我在小标题中把打表化分成了算法这是不对的大家别这么跟别人说,但是我觉得它也是种算法,只不过是人算,打表只是在你可以把正确答案算出来的情况下写个cout<<a*b<<endl;就能得分,因为它有关题的代码只有cout所以它的时间复杂度是O(N)的所以永远不会TLE。还有你们一定用过打表比如洛谷P1000A+B,这就是打表。在让你们明白一点就是用A+B的方法做算法题。

4,万能钥匙DFS

深度优先搜索
深度优先搜索算法(英语:Depth-First-Search,简称DFS)
是一种用于遍历或搜索树或图的算法。

沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。

整个进程反复进行直到所有节点都被访问为止。属于盲目搜索,最糟糕的情况算法时间复杂度为O(!n)。

思想:一直往深处走,直到找到解或者走不下去后回溯。
DFS和BFS的区别:

深搜和广搜在实现上
分别用的是栈(栈和函数递归本质是一样) 和队列。

一般来说,广搜常用于找单一的最短路线,
或者是规模小的路径搜索,它的特点是"搜到就是最优解",

而深搜用于
找多个解或者是步数已知(好比3步就必需达到前提)的标题,
它的空间效率高,然则找到的不必定是最优解,必需记实并完成**全数搜索,**故一般情况下,深搜需要很是高效的剪枝(优化)

以下是DFS模板

#include<bits/stdc++.h>
using namespace std;
int n, m;//n:有几个数  m:要几个 
bool used[ ];//是否用过 
int ans[ ];//答案 
void dfs(int u){
    if (出局判断){//到头就走 
        做要做的事
        return ;//退出 
    }
    for (int i = 开始的地方; i <= n; i++)//从上一个数开始依次增加,枚举每一种情况 
        if (used[i] == 0) {//判断是否用过
            加入结果 设为用过
            dfs(u + 1);//下一个数字 
            回溯:回到没用过
            }
    return ;//退出 
}
int main(){

    输入 初始化
    dfs(1);//开始搜索,从1开始 
    return 0;
}

5,傻子骗分

如果你在题目中看到如果没有.....输出"NO"。那么马上cout<<"NO"<<endl;至少可以拿5%的数据。如果没有上面这句话的话你可以直接输出样例。有78.984%的可能性得分。

6,宁为玉碎,不为瓦全

如果实在骗不道分的话我们可以报复一下出题者

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

这个代码是在主函数里申请主函数,所以这个代码会一直运行。考试的编译器会一直编译这个代码,除非考官换个编译器或者花半个小时重启编译器。但是也有可能考官会以你破坏考场纪律为理由气急败坏的给你零分。

尾声:

虽然我们学习了很多种骗分方法,但是我们要记住一点。骗分始终是不可靠的,想打对所有数据点只有去学习算法才能成为大神。骗分的最高境界就是不骗分。

  • 36
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值