首页 > 编程语言 >C++暴力指南

C++暴力指南

时间:2024-03-22 20:00:13浏览次数:37  
标签:指南 map 运算 STL C++ 优化 暴力

关于暴力做法

暴力,非常直白的就是直接硬做,不管他循环有多大,不管他数据量有多大。你要记住的一个事情就是,暴力只面向小数据,但是必定能得到正确解(前提当然是你没写错)甚至你需要进行对拍的时候你也得先写一个暴力出来才能方便对拍。
但是也因此,为了尽可能的偷分,暴力里要做尽可能的比较常数级别的优化,不要小看了这些常数级优化,说不准就能帮你多拿下一个边界上的数据点。在这里也可以大概的概括一些常见的优化思路:

剪枝

不该做的事情就要立刻停手,既然能通过当前条件推断出后续步骤已经不对,那就不要浪费无用功,每一次计算都是在消耗我们宝贵的暴力时间。甚至有些简单题就是考你如何有效剪枝,防止他搜太多直接TLE了。

各类快速运算

就算你不明白题目原本要什么算法,你也应该至少掌握一些常规的快速计算法。例如位运算,快速幂。尤其是位运算,别小看了位运算的效率。例如我现在写有:x = x/2;,在做暴力的时候不如直接改写为x = x>>1;,你可能会说,这两个的最终结果都一样,何必呢?问题在于除法的单次计算效率真不如直接单次位运算快,属于常数级别的优化手段,在一些比较边界的数据条件会有玄学效应让你有可能过掉一个数据点。

STL

STL永远是你的好帮手,你永远不能忽视STL的作用,它能在你对算法一无所知的情况下仍然帮你实现功能。STL作为C++选手最强大的优势,该利用就好好利用。在这里列举一些常用的STL

sort();  //排序
next_permutation();  //列举全排列
vector<> ;  //自动扩容的数组
queue<> ;  //队列
stack<> ;  //栈
priority_queue<> ;  //优先队列,会自动帮你排序,本质是个堆
map< , > ;  //映射,帮你自动做映射
hash_map< , > ;  //哈希表,如果你不想自己构建的话,和map有点类似,但是速度比map还快

暂时想到这些,等以后想起来还有什么再做补充

标签:指南,map,运算,STL,C++,优化,暴力
From: https://www.cnblogs.com/ComputerEngine/p/18090298

相关文章

  • C++流媒体开源库Live555详细介绍
    C++流媒体开源库Live555详细介绍C语言资深大师  5人赞同了该文章1、Live555简介Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它使用了RTP/RTCP、RTSP、SIP开放标准协议,实现了标准流媒体传输。Live555实现了对多种音视频编码格式的音视频......
  • C++ 指针,指针引用,二级指针作为实参传入函数体,形参改变指向的问题
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、形参指向变化,实参指向不变二、指针引用传递改变实参指向三、二级指针**传递改变实参指向一、形参指向变化,实参指向不变前提了解:无论是值传递,指针传递,引用传递,形参和实参都是完全不同的......
  • C++中char,char*,char[],string存储中文的问题
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、使用char,char*,char[],string存储中文二、内存中是乱码,但是可以正常输出三、解决方法:w_char,前言学习时遇到的问题,如有不对,欢迎大佬们批评指正!一、使用char,char*,char[],string存......
  • [C++提高编程](一):模板----函数模板
    目录函数模板作用函数模板的语法注意事项普通函数与函数模板的区别普通函数与函数模板的调用规则模板的局限性案例--通用数组选择排序从大到小模板是C++中泛型编程的基础,一个模板就是一个创建类或函数的蓝图或者公式。函数模板作用建立一个通用函数,其函数返回值类型......
  • C++看程序写结果:类继承与类组合,默认与含参的构造先后顺序 易错
    C++类继承与类组合,默认与含参的构造先后顺序 易错这道题原本是没有那么多输出信息的,是我自己加上了调用什么函数的提示。一开始以为就输出两行,一行是构造父类时A:5,一行是构造子类时x=5,A::x=5。#include"bits/stdc++.h"usingnamespacestd;classA{public:A(){......
  • c++的链接器
    C++链接器是一个编译器工具,用于将编译器生成的目标文件(通常是对象文件)链接在一起,以生成可执行文件或共享库。在C++编程中,链接器负责解析函数和变量的引用,并将它们关联到正确的定义位置。链接器的主要任务包括:1.**符号解析**:解析目标文件中使用的函数和变量的符号引用。当编译器......
  • 【C++ leetcode】双指针问题
    1.  611.有效三角形的个数题目给定一个包含非负整数的数组nums,返回其中可以组成三角形三条边的三元组个数。题目链接.-力扣(LeetCode)画图和文字分析判断是否是三角形要得到三边,由于遍历三边要套三层循环,时间复杂度很大,所以这里我们需要借助双指针思想,可......
  • 【C++从0到1-黑马程序员】类和对象(一)
     C++从0到1-黑马程序员 课程学习笔记课程链接: 16类和对象-封装-属性和行为作为整体_哔哩哔哩_bilibiliC++面向对象三大特性封装继承多态C++认为万事万物皆为对象,对象有其属性和行为1.封装1.1.封装的意义(1)将属性和行为作为一个整体,表现生活中的事物类中的属......
  • C++11新特性
    1、成员变量默认初始化:构建一个类的对象不需要用构造函数初始化成员变量。2、auto关键字:用于定义变量,编译器可以自动判断的类型(前提:定义一个变量时对其进行初始化);3、智能指针;4、空指针:空指针从指向NULL变为指向nullptr;通过将指针初始化为nullptr(nullptr直接代表指针空值类型),可......
  • 复试C++19真题_看程序写结果_前置++运算符重载 易错
    考察前置++运算符设置为友元函数,这题的坑在于,返回值是不是对象的引用,形参也不是对象的引用,导致自增离开了作用域以后就不在有任何效果。#include<iostream>usingnamespacestd;classC{private:intxx,yy;public:C(intx,inty):xx(x),yy(y){}friendC......