精华内容
下载资源
问答
  • 做题经验
    千次阅读 多人点赞
    2020-02-12 16:06:14

    闲来无事翻以前竞赛的记录,发现在准备蓝桥杯的时候还是下了点功夫的,当时竟然这么认真,我都忘记了。

    以下是我当时比赛之前根据自己的个人情况总结的做题经验。

    (因为我几乎是从小白的水平开始练习的,练习了不到两个星期,比赛的时候拿了省二。。。当然也很垃圾,不过从我的角度看还是很满意的。经验仅供参考,我放出来主要是想纪念一下认真努力的时光,也想要告诉大家做题一定根据自己的情况多总结,找到适合自己的方式。)

    正文

    考试需要带:身份证、准考证、(四色圆珠笔、眼镜)。提前半小时进考场。

    1、做题之前先把计算器,文本文档和表格打开,把头文件和main函数写好,另外使用一个空间存放。

    2、填空题能借助表格尽量借助表格,看一个填空题十分钟还没有思路,就换别的。毕竟大题还有多组样例,填空题做不出来就是做不出来了。

    3、注意题目中的提示,没有思路的话就按照题目中的描述实操一下。

    4、大题做完之后一定测试样例!边界和易错点自己多想想再交!

    5、第十题不一定是最难的,第十题一般需要考虑会不会超时,常用节约时间的方法,打表,二分,剪枝。估算是否超时:10的8次方是1s。

    6、大题注意数据范围和时间,意识到要使用更大的数据类型时不要犹豫,马上换。

    7、代码填空自己拷下来编译一下看一看,先做代码填空。

    8、填空做不出来可以写个19,0,1啥的。。。(蒙)

    9、三个值进行比较时不能写成连续的:a<b<c!应该分着写a<b&&a<c

    10、对复杂的表达式进行化简又是不仅能减少计算量,还能减少甚至避免中间结果溢出 。

    11、看坐标找规律的可以将不同象限分类之后再找。

    12、递归出口一定不要忘记,快排,归并。。。。

    13、不要被样例迷惑,如果思路简单的话,多举几组数据测试一下看看是否符合自己的思路。试图反驳一下自己的思路。

    14、做题要看本质,不要盲目的按照题目的思路一步步走,得出正确答案最重要。

    15、动态规划实在不会就想别的办法:不要在一棵树上吊死!
    不使用动态规划,别的方法可能更简单。

    16、图或者树的边使用邻接表存储 : vector s[10];

    17、做完之后要回过头看看数据规模,和结果的范围,是否需要改成long long 。

    更多相关内容
  • 2018考研英语阅读做题经验和方法.doc
  • 脑洞da开-CTF做题经验分享

    千次阅读 2021-10-23 11:20:18
    作为一个 ctfer 做题时的思维真的太重要了,有的题明明很简单却总是卡在最后一步,以几个题为例说一下啥是逆向思维和发散思维 逆向思维 逆向思维当然在逆向中是最常用的,但是misc,web中也会遇到 一个misc题: # js...

    作为一个 ctfer 做题时的思维真的太重要了,有的题明明很简单却总是卡在最后一步,以几个题为例说一下做题时需要具备的思维

    逆向思维

    逆向思维当然在逆向中是最常用的,但是misc,web中也会遇到

    一个misc题:

    # js逆向算法
    /**
     * Pseudo md5 hash function
     * @param {string} string
     * @param {string} method The function method, can be 'ENCRYPT' or 'DECRYPT'
     * @return {string}
     */
    function pseudoHash(string, method) {
      // Default method is encryption
      if (!('ENCRYPT' == method || 'DECRYPT' == method)) {
        method = 'ENCRYPT';
      }
      // Run algorithm with the right method
      if ('ENCRYPT' == method) {
        // Variable for output string
        var output = '';
        // Algorithm to encrypt
        for (var x = 0, y = string.length, charCode, hexCode; x < y; ++x) {
          charCode = string.charCodeAt(x);
          if (128 > charCode) {
            charCode += 128;
          } else if (127 < charCode) {
            charCode -= 128;
          }
          charCode = 255 - charCode;
          hexCode = charCode.toString(16);
          if (2 > hexCode.length) {
            hexCode = '0' + hexCode;
          }
          
          output += hexCode;
          
        }
        // Return output
    
        return output;
      } else if ('DECRYPT' == method) {
        // DECODE MISS
        // Return ASCII value of character
        return string;
      }
    }
    document.getElementById('password').value = pseudoHash('19131e18041b1d4c47191d19194f1949481a481a1d4c1c461b4d484b191b4e474f1e4b1d4c02', 'DECRYPT');
    

    看到这个题目一般可能直接想到去逆推过程,写一个逆向脚本

    import re
    str = "19131e18041b1d4c47191d19194f1949481a481a1d4c1c461b4d484b191b4e474f1e4b1d4c02"
    
    strs = re.findall(".{2}", str)
    
    for i in strs:
        item = 255-int(i, 16)
        if item > 128:
            item = item-128
        print(chr(item), end="")
    

    如果你的脚本能力不太行,或者短时间内想不过来逆向过程,可以用另一种方法

    仔细看下 js 脚本,是将输入的一个字符变成了两个字符,而且是固定的,比如 a 加密之后是 1e

    image-20211023100601244

    那么就可以直接把26个英文字符加数字全部加密一遍,19131e18041b1d4c47191d19194f1949481a481a1d4c1c461b4d484b191b4e474f1e4b1d4c02然后替换为英文字符就ok了

    pseudoHash('abcdefghijklmnopqrstuvwxyz0123456789{}', 'ENCRYPT');
    '1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706054f4e4d4c4b4a494847460402'
    

    新建一个文档把字符放进去

    因为 terminal 是等宽字体,可以在这里做参考,然后文本中 ctrl+h 替换第一排字符串

    image-20211023101240993

    image-20211023101459428

    最终得到flag

    flag{db38fbff0f67e7eb3c9d274fd180a4b3}
    

    当然如果脚本写的够快,别用这种方法,只是提供一种思路

    web中可能会出现游戏题目,做这种题目是就需要多方面考虑

    比如2021莲城杯-Minesweepe

    题目提供了三个难度的扫雷,分别是flag的三部分,如果能玩通关是可以拿到flag的,但是不是每个人都是游戏高手,靠玩游戏通过花费的时间要比较多,而且这是一个ctf题,当然会有别的方法去拿到flag

    2

    这个题就是一个js题目,但是在源码中flag是被编码的,和上题类似你可以用逆向的方法倒推出flag

    但是还有更简单的方法,你想一想,作为一个 js 本地扫雷游戏,需要啥数据直接改不就行了,找找有啥功能点、游戏是如何计分的、游戏有啥加分道具,改改改

    以这个题目为例,发现js中保存了炸弹数量,那改就完了

    4

    就出现了第一张图的效果,直接通过

    发散思维

    发散思维就是联想呗,比如给你一句话你就能扩展做题思路的题目描述或者hint就是发散的起点

    发散思维在misc中更是常见,啥稀奇古怪的图形密码和各种隐写

    misc中用到发散思维的例子:WHUCTF-版权保护

    下载附件得到两个 txt 文件,查看说明

    小p发现自己的文章被别人复制粘贴了,感到很气愤,于是他偷偷地将flag藏到了文章中,你能找到flag吗? 格式 whuctf{}
    

    再查看题目. txt,能看到的里面都是重复的我很帅三个字,结合题名版权保护和题目描述,很容易想到出题人利用零宽度字符进行隐写(因为零宽度字符可以用来作为一种水印,可参考这篇文章,用 vim 查看

    image-20211023104434467

    这个题题目就是提示,能从版权保护想到零宽度字符就是发散思维,当然这个联想并不是凭空想象,而是做题经验

    再举一个web方向的例子

    web题目:virink_2019_files_share

    源码中提示

    <!-- Hint : flag in f1ag_Is_h3re -->
    

    题目中存在文件读取,一般可能会想题目环境中存在一个 f1ag_Is_h3re 文件 flag 在这个文件中,但是实际上却没有这个文件,这时候就需要发散一下思维想一下会不会有别的可能,答案是有一个 f1ag_Is_h3re 文件夹,文件夹中有 flag 文件,文件包含 f1ag_Is_h3re/flag 即可

    总的来说,这东西还是很靠经验和脑洞的,做的多了也就知道有啥可以利用的点了,才能确保你发散的方向是对的,所谓熟能生巧,发散逆向更是需要结合使用

    展开全文
  • CTF-misc(解题思路/做题经验)

    千次阅读 2020-06-15 21:44:07
    1.普通图片 可以右键点击,在属性里看看有没有信息,所有图片都可先尝试一下,万一就是送分呢。 1.PDF图片 放到PDF编辑器中移动图片位置,flag可能藏在下面。 ...

    仅提供思路,部分思路给出例子(后面不定时更新)

    1.基本操作
    可以右键点击,在属性里看看有没有信息,所有图片都可先尝试一下,万一就是送分题呢。
    (有的时候一步还不够,可能在备注信息里面藏的是密文)

    2.gif图
    放到stegsolve或者PS中,一帧帧地分离

    3.PDF图片

    • 放到PDF编辑器中移动图片位置,flag可能藏在下面(如果题目给出的附件不是pdf可以先改后缀再编辑)
    • Linux中查看PDF信息:使用命令pdfinfo
    • 在浏览器中打开,ctrl+a全选,将内容复制到txt文本中拿到新信息
      例子:https://blog.csdn.net/weixin_45254208/article/details/105506090

    4.信息>>二进制>>flag

    • 黑白图片代表1和0
    • 长短符号代表1和0、
    • ……

    总之就是将信息转为二进制再转为字符串(flag),用python脚本实现

    5.Linux日志文件ext3

    使用strings命令查看指定文件下有没有flag这样的字符串

    strings 文件名 | grep flag
    

    找到flag.txt后,把文件挂载到linux系统上(mnt目录)

    mount 文件名 /mnt
    

    查看flag.txt

    cat /.../flag.txt
    

    例子:https://blog.csdn.net/weixin_45254208/article/details/105510124

    6.binwalk
    题目给出附件,用binwalk分析搜索附件中嵌入的文件并分离出来,通常这个文件是被加密的,密码需要通过其他手段来获得,例如用wireshark分析流量包,或者是暴力破解等等

    例子:https://blog.csdn.net/weixin_45254208/article/details/105519269

    展开全文
  • 文章目录 外话 1.游戏开发可能使用栈结构 2.编程语言的一些功能实现也会使用栈结构 Leetcode 1047.删除字符串中的所有相邻重复项 1.问题描述 2.解决方案 Leetcode 6120.数组能形成多少数对 1.问题描述 2.解决方案 ...



    题外话

    1.游戏开发可能使用栈结构

    在这里插入图片描述

    2.编程语言的一些功能实现也会使用栈结构

    在这里插入图片描述



    Leetcode 1047.删除字符串中的所有相邻重复项

    1.问题描述

    在这里插入图片描述

    2.解决方案

    1.其实这题吧,如果不是一开始就告诉本题使用栈队列,我可能还真想不到使用栈可以遍历一遍就消除这种相邻相同元素,我可能首先想到的时候用一个while(1),多次遍历整个数组,知道没办法消除了再退出循环,很明显这种方法很傻!!
    2.经过这道题,可以多增加一点思路,首先就是一个数组处理相邻关系等等,可以试着看看栈队列能不能使用一下,尤其是这种暴力思路需要多次遍历的对对碰题目,刚好适合栈的特性!!

    在这里插入图片描述

    class Solution {
    public:
        string removeDuplicates(string s) {
            //1.先将s遍历加入栈,如果和栈顶相同就跳过并且把栈顶也删除
            stack<char> stack;
            for (auto item: s) {
                if(stack.empty()== true) stack.push(item);
                else{
                    if(item==stack.top()){
                        stack.pop();
                        continue;
                    } else{
                        stack.push(item);
                    }
                }
            }
            //2.现在的栈应该是最终的结果,输出到str并反转就是最终结果
            string str;
            while(stack.size()!=0){
                str.push_back(stack.top());
                stack.pop();
            }
            reverse(str.begin(),str.end());
            return str;
        }
    };
    


    拿字符串直接当作栈省去了栈的操作了!

    class Solution {
    public:
        string removeDuplicates(string S) {
            string result;
            for(char s : S) {
                if(result.empty() || result.back() != s) {
                    result.push_back(s);
                }
                else {
                    result.pop_back();
                }
            }
            return result;
        }
    };
    



    Leetcode 6120.数组能形成多少数对

    1.问题描述

    在这里插入图片描述

    2.解决方案

    对于数组的题目,谨记可以先排序再说!!
    排完序之后,相邻相同的就可以直接对对碰!!

    class Solution {
        public int[] numberOfPairs(int[] nums) {
            Arrays.sort(nums);
            LinkedList<Integer> stack = new LinkedList<>();
            int cnt = 0;
            for(int i : nums){
                if(stack.size()==0||stack.getLast()!=i){
                    stack.addLast(i);
                }else{
                    cnt++;
                    stack.removeLast();
                }
            }
            return new int[]{cnt, stack.size()};
        }
    }
    
    展开全文
  • 政治经验2、政治91分学姐告诉你该如何多选和大.pdf
  • 相信很多人都有过这样的经历,就是去面试的时候,先被要求做题。 如果像下面的判断选择还好! 如果是让写个什么算法之类的,那就呵呵了!每天和鼠标握手,还哪会写字啊! 关于这件事,很多小伙伴纷纷吐槽。 ...
  • 苏步青谈读书与做题

    千次阅读 多人点赞 2018-01-14 00:00:00
    学数学就是除了做题还是做题吗?为什么不少同学做了那么多题,成绩还是难以提高?看数学书是浪费时间、影响做题吗?下面将苏步青的读书经历分享给大家,相信定会让你得到启发:原来,读书和解题都是数学学习的重要...
  • JAVA三年经验面试总结

    千次阅读 2021-06-21 19:54:35
    文章目录前言:面试javajvm、gcjdk1.8的新特性java基础框架springspring bootmybatis/mybatis-plus/springDataJpamysqlsql优化索引事务redis应用场景多线程服务器相关算法TCP/HTTP/WebSocket业务 前言: 2021年6月...
  • 中值定理 一张思维导图解决中值定理所有题型 考研思修 知识点 做题技巧 同类比较 重要会议 1800易错题 思维导图整理 考研近代史 知识点 做题技巧 同类比较 重要会议 1800易错题 思维导图整理 考研马原 知识点 做题...
  • 其实想一下,网络协议和数据结构确实是基础,大学都是学过的,可是万丈高楼平地起,基础的东西太多了,每次面试面试官的侧重点又不同,我们唯一能的就是复习基础,拔高水平,一个德智体美劳全面发展的四有青年...
  • 下个月入职,享受最后休闲的时光,总结一下所遇到的前端面试。 。。。下面的我会慢慢补充并且把罗列的问题对应的答案一点一点整理起来 基础:(我基础太差,恶补了一段时间,还是不行。。。。所以,就算上班了,...
  • 小编在软考最后一周,破釜沉舟的学习软考的大题,找到了一些大题的做题技巧,特此分享给大家,希望所有参加软考的同学都能尽自己百分百的努力,收获最好的结果。 做题时可以重点找一下每类问题考察的考点以及提问...
  • 2.从笔试的算法入手,详细讲讲自己的思路。 然后分析一下时间,空间复杂度 提出优化和改进的方法 3.再加一道手撕算法 4.考察了http,tcp等计算机网络知识 5.涉及了一小部分的操作系统 6.常见的数据结构 包括堆栈...
  • 为小学的广大学子写一个,加减乘除法做题系统,思路简单清晰,欢迎品尝 文章目录为小学的广大学子写一个,加减乘除法做题系统,思路简单清晰,欢迎品尝代码应解决的问题:一、代码如下二、对代码进行测试总结: ...
  • 70道Dubbo面试及答案(最新整理)

    千次阅读 2021-11-28 13:44:20
    Dubbo面试及答案【最新版】Dubbo面试大全(2021版),发现网上很多Dubbo面试及答案整理都没有答案,所以花了很长时间搜集,本套Dubbo面试大全 如果不背 Dubbo面试的答案,肯定面试会挂! 这套Dubbo面试...
  • Java中级面试及答案【最新版及答案,干货!!!这是一个中级Java面试系列中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。 Java中级面试永远是程序员...
  • Qt面试笔试问答经验总结

    万次阅读 多人点赞 2019-10-19 20:05:24
    感觉网上也比较少,所以根据个人的面试经验,总结了一些面试qt的问题。答案为我自己的理解总结,有问题还请大佬指出。 1.为什么要用qt来界面 Qt的跨平台性很强,比如同样一套代码写好pro文件可以在windows/linux/...
  • 今天同学去面试,对我说题目有点不会,脑子有点懵。后来她看到其他面试者直接上网查答案了,她说早知道她也这样子了。 我分享一下我的观点,我不认同这种做法哦! 每一场面试之前做好充足的准备,你可以自己在...
  • Java 基础高频面试(2022年最新版)

    万次阅读 多人点赞 2021-03-31 23:39:26
    最新 Java 基础高频面试
  • 1 如果是大学里刚出来,或者是工作经历不足3年的,一般仅仅按工作年限来保证,比如了2年活,但不是IT,那一般让学员写2年IT经验,把之前的经历全往it上写。 2 3年工作经验的那不说了,一般也就包装成3年。 3 但...
  • 软考之下午题做题技巧

    万次阅读 多人点赞 2013-05-22 19:12:13
    上午题虽然很零散,但是很简单,下午题虽然就5道,但是做题时需要认真、认真再认真,答案题中找,好好读题,说不定算法都能懵对几分……  做题的时候,要从精神上藐视它,告诉自己这题会做;要从心里重视它,读题...
  • 华为od 研发岗一手笔试题

    千次阅读 2021-12-05 23:47:23
    然后我今天了这个跟大家一起分享一下。 (个人感觉第一次是华为招的正式员工把我简历刷了,第二个是华为od,不懂的同学可以去查一查有啥区别,不过od一般也能给到20k+起步) 以下是题目正文(个人回忆的,尽量...
  • 渗透测试实习生和安全服务实习生的面试,企业有知道创宇,安恒信息,默安科技,奇安信四个企业。面试本人能记多少就写多少,可供参考,祝大家成功拿到offer。
  • 今年10月份刚刚整理出来的SpringBoot面试,时间比较赶就没有按照模块分类排序了。总而言之,顺序比较乱,希望大家耐着性子 看。如果实在介意,评论告知,我会视情况作修改的。另外如果大家觉得我找的SpringBoot...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 202,932
精华内容 81,172
关键字:

做题经验