基础知识
文章平均质量分 66
友人苏
一位让普通到不能在普通以至于让普通都惭愧的叫声爸爸的普通acmer,想通过竞赛,考研,让自己不至于让普通都叫声爸爸的普通学生
展开
-
灵能传输-蓝桥杯
灵能传输题目思路:这道题是一道贪心题,需要一定的数学证明, 同时我们还需要结合前缀和,寻找规律,从而找出最优解。分析:题目要求:对于灵能ai > 0的武士,会分别给ai - 1和ai + 1传输ai的灵能值对于灵能ai < 0的武士,需要ai - 1和ai + 1各传输ai的灵能值给它我们分别对这两种情况进行分析:ai > 0:ai < 0:我们可以发现,其实两种操作的结果都是一样的。这时我们在导入前缀和进行分析:这是我们可以发现:对ai原创 2022-03-18 08:42:38 · 1566 阅读 · 15 评论 -
Acwing第39场周赛题解
4302. 元素分类题目链接:4302. 元素分类分析:将一组数据进行分类,分为b、c两类,使得b类数据的和 - c类数据的和最大,并将差值输出,其中一类的数据可以为0。因此我们可以有三种情况:既有正数,也有负数只有正数只有负数通过分析我们可以很容易知道,将所有正数放入b组,负数放入c组即可得到最大差值。代码如下:#include <bits/stdc++.h>using namespace std;const int N = 110;int n, b.原创 2022-02-20 21:33:48 · 825 阅读 · 8 评论 -
Acwing第38场周赛题解
AcWing 4299. 删点题目链接:AcWing 4299. 删点第一题都是签到题,其实就是计算是否存在在y轴两边,是否有一边的点数小于等于1代码如下:#include <iostream>using namespace std;const int N = 110;int n, l, r;int main(){ cin >> n; for(int i = 0; i < n; i++){ int x, y;原创 2022-02-13 11:23:20 · 896 阅读 · 14 评论 -
七天玩转Redis | Day5、Java操作Redis小结
1. jedis类1. 首先我们要导入jedis包最新版jedis下好后,我们把它放入与src同级目录下,然后右击项目,找到:接下来我们进行测试,一开始我遇到了这样一个问题原因是我没打开服务器,所以大家一定要记得打开服务器。现在我们进行测试: public static void main(String[] args) throws InterruptedException {// 新建Jedis类对象 Jedis jedis = new Jed原创 2022-01-25 20:45:52 · 1064 阅读 · 2 评论 -
七天玩转Redis | Day4、Redis事务操作小结
1. Redis事务特点 Redis中的事务具有的特点是:一次性、顺序性、排他性。一次性:指的是Redis中的事务只执行一次,在该事务执行结束之后,这条事务的生命周期就结束了,再次执行事务时需要重新开启事务。顺序性:指Redis的事务中的所有命令,都是按照先后顺序依次执行的。排他性:指事务在对某一个数据进行操作的同时,其他事务或其他命令不能对这个数据进行操作。redis执行事务流程图如下:redis的单条命令具有原子性,但是对于存在多条命令的Redis事务来说,不具备原子性,也就是说原创 2022-01-24 19:56:46 · 211 阅读 · 0 评论 -
七天玩转Redis | Day3、Redis地理位置、基数统计、位图场景使用总结
1.Gaospatial地理位置添加一个或多个地理位置的坐标Redis的Gaospatial中添加地理位置坐标的命令是GEOADD,格式如下:GEOADD key longitude latitude member [longitude latitude member …]key为该地理位置的索引longitude表示该位置的经度latitude表示该位置的纬度member表示地名[longitude latitude member …]表示可以重复添加,中间以空格分隔127.0.原创 2022-01-23 20:18:07 · 816 阅读 · 0 评论 -
七天玩转Redis | Day2、Redis五大数据类型使用详解总结
1. string类型设定指定的key值语法格式: set key valuekey为键,value为值127.0.0.1:6379[6]> set k1 v1OK获取指定key的值get key127.0.0.1:6379[6]> get k1"v1"返回key中字符的子串GETRANGE key start endstart是截取开始的下标,end是截取结束的下标127.0.0.1:6379[6]> getrange k2 2 5"llo"原创 2022-01-22 17:40:17 · 686 阅读 · 1 评论 -
七天玩转Redis | Day1、Redis认识与基础操作总结
今天我们要认识的是Redis数据库 在此之前我们都学习过MySQL这一类关系型数据库,而Redis数据库是一种非关系型数据库,它采用的是键值对(key-value)的存储方式,其时键值对可以这样理解,以前我们的锁都有一把对应的钥匙,只有对应形状的钥匙,才能解开对应的锁,而这里的钥匙就是所谓的key,锁就是这里的value,每一个key对应一个value,我们查看value就是通过key来查看,其实我们学的编程语言的下标也是这样的道理。而关系型数据库和非关系型数据库有上面区别呢?1、数据存储原创 2022-01-22 14:08:39 · 597 阅读 · 0 评论 -
第四届“传智杯”全国大学生IT技能大赛(初赛B组)
目录A. 组员成绩B. 报告赋分C. 竞争得分D. 小卡与质数2E. 萝卜数据库这个比赛太水了,五道题,四道水题,只有D题有点难度╭つ﹏⊂A. 组员成绩组员成绩普通的计算问题,基础到不能再基础,注意一下类型的转换即可。#include <stdio.h>int main(){ double t,h,e; scanf("%lf%lf%lf",&t,&h,&e); int w = 0; w = t * 0.2+h * 0.3+e * 0.5; pr原创 2021-12-22 16:05:55 · 2877 阅读 · 4 评论 -
《C语言入门100例》(第5例) 绝对值
文章目录一.概念定义二.课后习题2006. 差的绝对值为 K 的数对数目一.概念定义绝对值:两个数之间的差值int abs(int a){ if(a >= 0){ return a; } return -a;}二.课后习题2006. 差的绝对值为 K 的数对数目2006. 差的绝对值为 K 的数对数目分析: 题目要求找出有多少组数据的差值绝对值等于k,绝对值我们可以用库函数abs()来计算,我已我们只需要枚举组所有组的数据。代码如下:int countKDif原创 2021-11-06 21:07:54 · 500 阅读 · 0 评论 -
《算法零基础100讲》(第17讲) 线性枚举(一) - 最值算法
文章目录一.概念定义两个数的最小值n个数的最小值课后习题485. 最大连续 1 的个数1464. 数组中两元素的最大乘积153. 寻找旋转排序数组中的最小值154. 寻找旋转排序数组中的最小值 II414. 第三大的数628. 三个数的最大乘积一.概念定义两个数的最小值 两个数的最小值可以用if语句判断,也可以用C语言的三元运算符。//if语句判断int max(int a, int b){ if(a < b) return b; return a;}//三元运算符int原创 2021-11-06 20:49:24 · 339 阅读 · 0 评论 -
[C语言题解]《算法零基础100讲》(第16讲) 变量交换算法
变量交换算法概念定义课后练习面试题 05.07. 配对交换概念定义 交换变量,就是把两个数据的变量进行一次交换。如:a = 1,b = 2,交换后a = 2,b = 1。对于交换的方法,可以看一下这篇博客变量交换课后练习面试题 05.07. 配对交换这道题较笨的思路就是先将其转化为二进制,然后进行奇偶位的交换,再将交换后的二进制数转化为十进制。代码如下:int Mypower(int x, int n){ if(n == 0){ return 1; }原创 2021-11-05 09:34:23 · 176 阅读 · 0 评论 -
《C语言入门100例》(第3例) 交换变量
交换变量交换变量的方式有很多,其中我们比较常用的就是设置一个中间变量进行交换。#include <stdio.h>int main(){ int a, b; scanf("%d %d", &a, &b); int temp = a; a = b; b = temp; printf("a = %d\nb = %d\n", a, b);}如果不引用中间变量,我们可以通过运算进行交换int main(){ int a, b; scanf("%d %d",原创 2021-11-04 17:52:41 · 250 阅读 · 0 评论 -
[题解]《C语言入门100例》(第2例) 数列求和
剑指 Offer 64. 求1+2+…+n这题很简单,不能用循环,那就直接用递归。int sumNums(int n){ if(n == 1){ return 1; } return n + sumNums(n - 1);}Sum Problem这道题和上面的一样,但没有限制,所以我们直接用循环来解题。#include <stdio.h>int main(){ int n; while (~scanf("%d", &a原创 2021-11-03 09:48:13 · 263 阅读 · 0 评论 -
[题解]《算法零基础100讲》(第13讲) 最大公约数
1979. 找出数组的最大公约数分析:首先遍历数组nums,找到max和min求gcd(max, min)然后如何实现函数gcd呢,实现gcd有两种办法。遍历出min约数,并判断该数是否能整除max,从而找出最大的公约数。代码:int gcd(int max, int min){ int ret = 0; for(int i = 1; i <= min; i++){ if(min % i == 0 && max % i == 0){ ret = i原创 2021-11-02 10:46:42 · 241 阅读 · 0 评论 -
[今日题解]《算法零基础100讲》(第12讲) 因子和
1390. 四因数对于这到题我们首先要了解一个定理——约数和定理约数和定理: 对于一个大于1正整数n可以分解质因数:n=p1a1*p2a2*p3a3*…*pkak,则由约数个数定理可知n的正约数有(a₁+1)(a₂+1)(a₃+1)…(ak+1)个,那么n的(a₁+1)(a₂+1)(a₃+1)…(ak+1)个正约数的和为:f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)但是这道题是让我们找因原创 2021-11-01 21:56:29 · 161 阅读 · 0 评论 -
[解题报告]《算法零基础100讲》(第11讲) 因子数
The number of divisors(约数) about Humble Numbers分析:这道题其实是叫我们求一个数的质因数2, 3, 5, 7的个数,所以我们可以根据公式,求出每个因子数量,然后进行乘积。公式如下:代码:#include <iostream>using namespace std;int main(){ long long n = 1; int arr[] = { 2, 3, 5, 7 }; while (cin >原创 2021-10-31 21:53:04 · 169 阅读 · 0 评论 -
《算法零基础100讲》(第10讲) 因子分解和枚举(C语言题解)
今日题解1492. n 的第 k 个因子1362.最接近的因数1492. n 的第 k 个因子说句实话,这道题好水呀,这种难度的题也被放在中等难度。直接遍历,时间复杂度为O(n),遍历区间为[1,n],如果n % i == 0,k–,直到k==0,返回i,如果遍历结束,还未找到第k个因子,return -1。直接上代码:int kthFactor(int n, int k){ for(int i = 1; i <= n; i++){ //判断是否为因子 if(n原创 2021-10-30 17:01:24 · 208 阅读 · 0 评论 -
《算法零基础100讲》(第9讲) 算术基本定理(C语言题解)
算数基本定理507.完美数263. 丑数507.完美数这道题十分简单,我觉得也没必要说太多,我们只需在[1, √n]这个区间内找出他的所有因子,并加起来,最后判断是否与n相等。直接上代码:bool checkPerfectNumber(int num){ if(num == 1){ return false; } int sum = 0; for(int i = 1; i * i <= num; i++){ //判断是否是因子原创 2021-10-29 10:22:10 · 642 阅读 · 1 评论 -
《算法零基础100讲》(第8讲) 素数筛选(C语言解题)
204.计算质数 质数在之前的篇章中我们也进行过一个初步的了解,质数的定义是:只包含1和本身为因子的数就叫做质数,质数又称为素数。例如2,3,5,7,11等,他们的因子都只有两个,那就是1和他们本身。 今天这道题我们是要计算出小于n的质数有多少个,大多数人第一想法就是遍历,当然这也是最直接,最方便的解法,思维方式也不算复杂,只需在区间[2,√n]中查询是否还有能够整除n的数,有则返回true,否则返回false。代码如下:bool isPrime(int n) {原创 2021-10-29 09:10:00 · 217 阅读 · 0 评论 -
《算法零基础100讲》(第7讲) 素数判定(题解)
今日题解866. 回文素数剑指 Offer 49. 丑数866. 回文素数对于这道题,我们可以先将它拆分为两部分,回文和素数。一. 首先我们先判断回文数,回文数的意思就是一个数的正向和反向的数字是一样的,例如:121,1221,12321等。得到一个数的反向我们只需要通过 % 和 / 两个操作符,不断辗转,最后得到。但是这种将一个整数整个反转的方法有点费时,毕竟我们只需判断,不需要计算。通过分析我们很容易可以看出,每个回文数都有一个对称轴可以将其对半划分,并且两边时一样得,所以我们可以反转原创 2021-10-28 17:11:35 · 445 阅读 · 5 评论 -
《算法零基础100讲》(第6讲) 日期算法
今日题解1185. 一周中的第几天1154. 一年中的第几天1360. 日期之间隔几天1185. 一周中的第几天Constraints:The given dates are valid dates between the years 1971 and 2100.分析:题目给定的年份范围是[1971,2100],然后我们可以根据力扣的数据测试得出1971年1月1日是Friday,当然不嫌麻烦的话也可以去查日历。既然知道初始条件,那目前最简单暴力的方法就是直接计算他们相差有多少天。因为一周的原创 2021-10-27 10:08:38 · 354 阅读 · 0 评论 -
《算法零基础100讲》(第5讲) 计数法(c语言解题)
今日题解1748. Sum of Unique Elements1748.唯一元素和 Constraints:1 <= nums.length <= 1001 <= nums[i] <= 100这道题是一道十分基础的计数题,并且数据范围也比较小,可以利用数组下标来记录每个数出现的次数。代码如下:int sumOfUnique(int* nums, int numsSize){ //元素大小在1-100,所以我们定义一个长度为101的数组 int arr[原创 2021-10-26 14:36:22 · 695 阅读 · 8 评论 -
LeetCode 杨辉三角
杨辉三角是一个比较经典的动态规划,它的状态方程也很简单,当j == 0 || i== j时,dp[ i ][ j ] = 1,其他情况则是 dp[i][j] = dp[i - 1][j -1] + dp[i - 1][ j ]。代码如下:int** generate(int numRows, int* returnSize, int** returnColumnSizes){ //用malloc申请一块连续的空间,该空间内的元素都是指针类型,所以ret因定义为一个二级指针 int** ret.原创 2021-10-25 22:10:38 · 246 阅读 · 0 评论 -
万字Golang基础知识(肝爆三天三夜,手撕Golang基本语法结构)
Golang1.2初识Golang1.3 Go的语法要求1.3.1 token1.2初识Golang首先让我们问候一下世界package mainimport "fmt"func main(){ fmt.Println("Hello, world!\n")}运行结果:对世界进行了一波问候后,我们对这个简单的程序进行解读分析(1)第一行我们定义了一个名为 package 的包,main是可执行程序的包名,所有的Go源程序文件头部必须有一个包声明语句。(2)然后用 关键字 impo原创 2021-09-15 18:35:37 · 1796 阅读 · 16 评论