前言很长一段时间,我都崇尚“暴力出奇迹”的解题大法。而今天做的一道题,则经过一次“暴力”与“数学”的pk,让我有了全新的认识。因此,本次的主题就是 ”暴力VS数学“ 。究竟怎么回事呢?且看下文分说~“争雄”题目暴力出招思路:按照每个子集的数目从1到n枚举出所有的子集(这里用编号从1开始,由编号找到对应的值)。怎么实现呢?见代码:#include<bits/stdc++.h>u
说起位运算,可谓是程序设计基础的知识。那可以如何应用到题目上呢?今天就来这样一道~一、例题:二、思路题目可以这样理解,在所有涉及的编号中,除一个编号出现了1次外,其余编号都出现了2次,由此特点,我们可以联想到异或运算,为啥呢?请看下面这个例子: 异或的数学符号为“⊕”异或运算性质:a=b,a⊕b=0b=0,a⊕b=a1⊕2⊕3⊕4⊕8⊕9⊕3⊕1⊕4⊕8⊕9,里面只有2出现了1次,其余都出现了2次
有时候做题做惯了稍微有难度的题,再去做简单题,总会多想,把它简单的问题复杂化,至少我是这样的哈哈。今天就来分享一下我这个“被自己困住”的经历吧~一、题目二、我的错误理解和正确理解(1)错误理解我本以为,是说这个字符串里面除了VK还有其他的字母,然后统计改变一个字母为“V”或“K”来使“VK”的数目最多的一个排列组合问题,然后就错了……(2)正确理解看完题解恍然大悟,原来,里面除了V就是K,改变一个
桶排序 (时间复杂度,O(n),空间复杂度O(n),以空间换时间)例子:对,1 3 5 6 6 0 9 10000 999进行升序排序思路:min=0,max=10000;int a[10005];a[0]=1,a[1]=1,a[3]=1,a[5]=1,a[6]=2,a[9]=1,a[999]=1,a[10000]=1答案:0 1 3 5 6 6 9 999 10000强化:(有负数)对 -1 0
最近刷到一道字符串的题,难度倒不是很大,就是输入时非常之“恶心”。先看题:由于每行输入几个数据是不确定的(有时2,有时3),因此我最先想到的是用getline,可以处理一整行的输入,提交上去,结果,结果,他就全部“re”了。当时很奇怪,以为我的代码算法有了问题,后来经过查阅资料和再三确认后,问题发现是getline的问题。原因:洛谷测评系统搭建在Linux系统处理方法:就是不用getline了。那
又是在洛谷刷题的一天,因为我是从入门级别开始做的,所以题目开始很简单,知道往后面刷,遇到了一道比较有代码量的题目。一般代码较长的代码调试起来会比较麻烦,不知从何下手,今天就给大家分享一个debug小技巧—— “注释+输出”调试法 话不多说,咱们先看题目和代码:题目 代码 #include<bits/stdc++.h>using namespace std;
今天一如往常的刷洛谷题,遇到了一道题,算法逻辑没有什么难点,反而是处理输入时给我造成了不小的麻烦。于是我找到了一个不错的方法,分享给大家例题!image.png(https://s2.51cto.com/images/20220418/1650267244823932.png?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,col
最近在洛谷刷题,遇到了几道能够使用“打表法”的题。之前我是完全不知道还有这种“旁门左道”的(doge),在打比赛的时候还是挺受用的,不过如果在平时练习,还是一板一眼来就好~那我们话不多说,先简单了解一下“打表法”是个啥吧。举个简单的例子:中学语文有一种题型,叫“古诗词默写”,给你上一句,我来下一句。做这种题,理论上有两种方法,一,是像“诗人”一样去推敲,去创造,凭借语感和文化底蕴去填;二,就是我们
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号