自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(140)
  • 资源 (1)
  • 收藏
  • 关注

原创 【个人项目】图书馆选座管理系统

灵感来源于本科学校的图书馆选座系统,当然比那个功能少了不少。具有超级管理员、阅览室管理员、学生三类用户。学生可以预定座位、签到签退、查看自己的预定历史等;阅览室管理员可以管理自己管理的阅览室的座位,还可以查看用户、阅览室和座位信息;超级管理员权限较大,系统中只有一个,可以对用户、阅览室、座位、预定信息进行增删改查操作,但是也有限制,比如删除座位前必须确保座位空闲等。项目采用了Spring+SpringMVC作为后端Web开发框架。

2024-03-14 10:43:36 428

原创 基于SVM的人脸图像性别分类

做了一个识别人脸性别的程序,第一个机器学习的小demo,记一下过程

2022-12-11 15:01:24 697 1

原创 蓝桥杯总结及经验教训

蓝桥杯总结&经验教训

2022-07-06 16:39:05 1841

原创 使用QT开发的简易音乐播放器

使用QT5制作的简单音乐播放器

2022-06-14 17:28:34 929 1

原创 做题记录22.3.6洛谷P1134

数学问题。

2022-03-06 16:07:05 129

原创 牛客XBal月赛45做题记录

牛客月赛45

2022-03-05 15:23:27 325

原创 做题记录2022.3.3

洛谷

2022-03-03 18:29:46 298

原创 寒假总结 2022.2.19

2022寒假

2022-02-26 15:47:09 904 1

原创 做题记录 2022.2.26

洛谷P2385&P1076

2022-02-26 15:38:13 141

原创 学习记录 状压DP(二)

例题3这题与上面的题目类似,不过限制了可选的总数。令dp[i][j][k]表示前i行,状态为j,共计k个。按照之前的思路,我们选定了状态j后,这一行的“国王”总数就确定为j中二进制1的个数(记为popcnt(j))了,因此前i-1行还要k-popcnt(j)个。代码如下:int tot=(n<2)?2:(1<<(n-1))+(1<<(n-2));for(int i=1; i<=n; i++) { for(int j=0; j<tot; j++) { i

2022-02-07 16:31:02 56

原创 学习记录 状压DP(一)

状压DP是一种在与选集合有关的DP,一般借助二进制枚举状态。下面是典型例题:例题1这题如果直接搜索,复杂度会很高。经过观察发现一旦某一行选好,那么下一行所有合法的状态就能表示出来。可以借助用二进制数[0…2m)表示某一行的所有状态,其中m为列数。(举例:二进制数00101表示选了第0和第2列)。对于任意一个状态t,若t&(t>>1)不为0则表明行内选了相邻的,是不合法状态;若它与上一行另一个状态k满足j&k不为0说明选择了两行之间有相邻的,也是不合法的。另外,如果已确定

2022-02-06 16:33:51 511

原创 做题记录 牛客寒假基础训练3-I

题目链接此题我原本的思路是:建立前缀和数组t[],表示前i个字符的种类总数。对于任意的i,在i+l-1之后找到第一个j使得j>=i+2即可。注意j之后剩下的字符数是否大于等于r。但这种做法是错误的。考虑IE$abQ这样的字符串,这种方法会少统计$abQ从而得到错误答案。 看起来比起从第一个字符开始有多少种类型,我们似乎更应关心从i开始有多少类型。因此将t数组的定义改为:从i开始,第一次遇到第j,(j∈[0,4))种类型的位置是哪儿。最后找到t[]中第三大的数对应的位置即可。这一过程可以用std:

2022-02-02 15:21:42 570

原创 做题记录 牛客寒假基础训练1-H

牛客寒假基础训练营 题解&补题

2022-01-25 14:37:42 298

原创 C++虚函数总结

虚函数的应用注意事项。

2022-01-23 10:11:50 355

原创 C++运算符重载总结

1.赋值运算符(=)形式:T &operator=(const T another);注意:判断是否自我赋值,有指针成员时,注意判断是否为空。2.流插入(>>),流提取(<<)形式:friend istream &operator>>(istream &is,T &a);friend ostream &operator<<(ostream &os,T &a);注意:只能重载为非成员函数。3.

2022-01-20 11:33:57 324

原创 牛客XBal月赛43总结

假期前的最后一次比赛,写完这篇就收拾收拾准备回家~暂时都是做出来的题目,没做出来的等过两天再补题吧。A:由于可以包含自身,而最大因数必然是自身,故答案显然为n。B:看到数据范围,首先想到应该是有固定结论或单次不超过O(log(target))的解法。首先,由于每次操作都要乘2,所以除非一开始就有一个瓶子的体积与目标相等,否则若目标为奇数,即不可完成。否则,如果目标<max(a,b),假设a>b,那么只要从A瓶中倒掉2a−target2\frac {2a-target}{2.

2022-01-14 13:45:40 305

原创 做题记录 2022.1.12

题目链接这题乍看是贪心,好像每次取首尾两个的较小者就行。但这是错误的。考虑5 5 1 6这组数据,贪心得到的答案是42,正确答案是43。可以采用搜索,设计搜索函数为int dfs(int from,int to,int day); 返回[from,to]区间内第day天的最大值。但搜索速度太慢。而画出搜索树发现,当[from][to]确定时day也随之确定,故可以采取记忆化。int dfs(int from,int to,int day=1) { if(dp[from][to]!=0) r

2022-01-12 10:51:58 113

原创 大整数乘除法的实现(二)

第二部分:除法的试商及估商法

2022-01-10 17:11:01 692

原创 学习记录 单调队列

题目链接此题可以用RMQ在O(nlogn)的时间内解决。可以选用的的方法有线段树、ST表等。但线段树常数太大,经实测会T 2个点,而ST表空间复杂度太大,会MLE。分块就不说了。那么可以用什么办法呢?正解是单调队列。以求解最小值为例,先初始化队列为空,每遇到一个值就将它的下标与队尾比较,如果当前值比队尾还小或队列已空就入队,否则将队尾出队(没错是队尾)。若当前下标大于等于m,则取出队头。若队头是本“窗口”的第一个值对应的下标,就将其出队,以避免下一个“窗口”中仍有它。由上面的分析不难看出这个队列要在

2022-01-08 16:29:48 554

原创 大数乘除法的实现(一)

第一部分:乘法与二分除法

2022-01-03 11:19:55 384

原创 2021年度总结

个人2021年度总结与展望。

2022-01-01 20:40:41 4492 2

原创 Java多线程笔记(一)

0.线程的概念后续《操作系统》中补充,现只需知道线程是系统与硬件层面的概念。1.创建线程1.继承Thread类,重写run()方法并创建对象执行。2.实现Runnable接口,用接口的实现类的对象实例化Thread类并执行start()方法。2.线程安全当多个线程存在共享数据时,会存在线程安全问题。如:实现一个“多窗口卖票”功能,票数是统一的,如果不解决线程安全问题,则会导致重票或错票。

2021-12-18 10:48:20 608

原创 树形DP学习笔记

介绍树形DP的应用,包含例题。

2021-12-09 18:48:56 218

原创 实数在计算机中的表示

之前在学习计算机实数在计算机中的表示时,有点糊涂,最近重新学习,明白了一些,在此记录:众所周知,计算机中是没有小数点的,因此就要规定实数的表示方式,目前的方式有以下两种:若无特殊说明,所有数字均用补码表示。文章目录1.定点表示2.浮点表示1.定点表示以下均假设机器字长为n+1位分为整数定点和小数定点。整数定点把小数点看成在最后,相当于整数表示了,其范围是[−2n,2n−1][-2^{n},2^{n}-1][−2n,2n−1]。而小数定点,则是把小数点看成在最高位(即符号位)后面,因而只能表示纯

2021-12-06 21:32:05 4720

原创 蓝桥杯模拟赛记录

1:大意就是给一个IP地址,里面有一个数不知道,问该数最大是多少答案:常识,显然2552:如果一个整数 g 能同时整除整数 A 和 B,则称 g 是 A 和 B 的公约数。例如:43 是 86 和 2021 的公约数。请问在 1(含) 到 2021(含) 中,有多少个数与 2021 存在大于 1 的公约数。请注意 2021 和 2021 有大于 1 的公约数,因此在计算的时候要算一个。只要计算出所有因数放到集合里,并把它们的倍数也放到集合里就可以了。做的时候出了点低级的错误:把每个因数都设

2021-11-28 12:16:48 1460 2

原创 做题记录 P1441砝码称重

题目链接原本以为这题就是简单一搜索,直接套DFS模板发现样例也能过,但后来发现只是凑巧正确。因为题目要求的是选出n-m个后,再在n-m个当中选若干个并计算能出现多少个和。选哪n-m个不确定,这部分不得不爆搜(至少我只会这样)。那在n-m个中选的过程难道也只能爆搜了吗?显然不是,我们可以用DP完成这一过程(01背包)。代码如下:#include <cstdio>#include <algorithm>const int M=22,MAXW=2001;using name

2021-11-26 15:29:54 150

原创 做题记录 洛谷P2671求和

题目链接思路1:三层循环暴力枚举,复杂度O(n3)O(n^3)O(n3),对应20分。没用这种方法,代码就不水了。思路2:不难发现与中间点y没什么关系,只需保证x,y,z成等差数列即可。因此枚举x,z,若(x+z)/2到x和z的距离相等,则可以判断是否满足条件。优化:容易发现公差必然为偶数,所以枚举x+2,x+4…z即可,复杂度仍为O(n2)O(n^2)O(n2)但常数降低一半,能得40分。for(int i=1; i<n-1; i++) { for(int j=i+2; j&l

2021-11-23 16:34:35 617

原创 做题记录2021.11.19 洛谷P1103书本整理

题目链接本题很明显的DP。但转移方程如何制定是关键。去掉k本,就是选择n-k本。(不知道这里的高度有什么用 )因此可定义dp[i][j]:前i本中选j本的最小代价。很明显,∀i∈[1,n]\forall i \in[1,n]∀i∈[1,n],dp[i][1]=0。在背包问题中,我们选第i个物品时,它的前一个物品是任意的i∈[1,i−1]i \in [1,i-1]i∈[1,i−1]。但此问题需要我们知道上一个物品的宽度,因此就比较棘手。其实可以枚举上一个物品,但应注意在选了j个的前提下,上一个物品至

2021-11-19 20:45:13 329

原创 学习记录 ST表

稀疏表(ST表)也是一种用于RMQ的数据结构,它利用了倍增与动态规划的思想。如果只存在区间查询,不存在区间查找,则ST表是一种不错的选择。为了能在O(1)的时间完成查询,可以这样预处理:如果记maxn[i][j]为[i,j]区间上的最大值,易得max[i][j]=maxn([i][j-1],a[i])。但此种方法预处理的复杂度为O(n2)O(n^2)O(n2),为了简化,我们可以用倍增思想。记st[i][j]为从i开始连续2j2^j2j个元素的最大值。则有st[i][j]=max(st[i][j−1],

2021-11-14 09:47:34 350

原创 做题记录 洛谷P2004领地选择

题目链接这几乎是二维前缀和的模板题。众所周知,一维前缀和sumisum_isumi​的定义为:对有n个数的数列,sumi=∑k=1iaisum_i=\sum \limits_{k=1}^{i}a_isumi​=k=1∑i​ai​那么,二维前缀和sumi,jsum_{i,j}sumi,j​ 自然就是对有n行m列的矩阵,sumi,j=∑i=1n∑j=1mai,jsum_{i,j}=\sum \limits_{i=1}^{n}\sum \limits_{j=1}^{m}a_{i,j}sumi,j​=i=1∑

2021-11-06 15:41:15 172

原创 用C++实现Bigintger类

前几天受到Java中Biginteger类的启发,自己用C++ 写了一个大整数类,目前功能还很不完善,只支持加、减、乘、比较大小而且不支持负数。代码如下:/*注意点 *1.数字存储方式:data[0]为最低位,往后依次升高 *2.注意0的特殊处理 */#ifndef BIGINT_H#define BIGINT_H#include <cstring>#include <string>#include <algorithm> //std::reverse

2021-11-04 20:59:43 541

原创 做题记录2021.11.3 洛谷P1521逆序对

题目链接近两天都在写一个C++的Biginteger类,一直没刷题,今天补一下。解法1.纯暴力解法  枚举所有全排列并求其逆序对,即使采用树状数组等高效方式求逆序对仍要O(nlogn∗n!)O(nlogn*n!)O(nlogn∗n!),完全不可行。解法2.动态规划定义dp[i][j]为前i个数的全排列中逆序对为j的个数。我一开始是考虑最后一个数字,但压根没有思路。正确方法是:考虑有i-1个数的序列,将第i个数插入,由于它是序列中最大的,所以插入其中最后一个位置,可以新增0个逆序

2021-11-03 21:03:16 136

原创 做题记录 石子合并

题目链接这个题目,我一开始的思路是这样的:先计算出前缀和sum[],对于新加进去的第i个石头堆,存在两种合并方式:1.将它与第i-1堆合并2.将前i-2堆合并,再将它并入第i-1堆中。然而这种思路就是默认了必须从1,2两个开始合并,实际上我们第一次可以合并其他的堆。所以是错误的。因此正确方法是区间DP。即枚举起点i、终点j、中间点k,然后dp[i][j]=dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]。然而如果这样枚举,就会造成需要使用没更新过的结果的情况。因此枚举长度和

2021-10-31 15:50:36 61

原创 做题记录2021.10.27 洛谷P2672推销员

题目链接我的想法是:假设当前选第i个,那么在前i-1个的基础上有下面两种方法:向前选:距离不变,选价值最大的(假设是第j个),那么res+=a[j].val;向后选:此时距离变大,要选(距离*2+当前已选的元素的价值和)最大的元素。由于要反复查找最大值,我一开始是想用分块或线段树做,但这两种方法似乎很难获取最大元素的下标(第二种方法要获取下标以更新当前距离),所以直接写了个暴力,复杂度为O(n2)O(n^2)O(n2),结果当然是TLE了。然而,我们可以用优先队列优化第一种情况选最大值的过程。

2021-10-27 16:50:43 117

原创 牛客XBai月赛39 做题记录

本次比赛应该是我做的最好的一场ACM赛制的比赛了。其实一共就3场 ,8题AC了3个当然主要是因为题目比较水。下面是我做出来的A:看到数据范围,想到直接O(n2)O(n^2)O(n2)暴力。我想的是把所有向量都简化然后暴力求解任意两个加起来再简化后是否可以为目标向量。但实际上这会导致错误(比如(2,0)+(4,1)=(6,1),但简化(2,0)将导致错误结果),只简化最后一个向量即可。然而我居然没想到可以直接x1y2=x2y1,看来数学不好有时候很麻烦呢~#include <cstdio&

2021-10-23 10:17:30 103

原创 做题记录 2021.10.21 POJ2376CleaningShifts

题目链接

2021-10-21 18:23:22 52

原创 做题记录 2021.10.20 被3整除的子序列

给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除答案对1e9+7取模思路:由小学数学知识可以看出是DP,但如果直接定义dp数组表示能整除的个数,状态转移就很困难。因此定义dp[i][j]=前i个数中对3的模为j的个数。只要输出dp[n][0] (n为字符串的长度)即可。dp[i][j]可分为两种情况:1.不将第i个数加进序列;2.将第i个数加进序列;因此可以得到dp[i][j]=dp[i-1][j]+dp[i-1][?]其中?处我想了很久,最终还是没想出来一个通用的式子.

2021-10-20 19:57:41 148

原创 做题记录 洛谷P1230 智力大冲浪

题目描述小伟报名参加中央电视台的智力大冲浪节目。本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元。先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则:首先,比赛时间分为n个时段(n≤500),它又给出了很多小游戏,每个小游戏都必须在规定期限ti前完成(1≤ti≤n)。如果一个游戏没能在规定期限前完成,则要从奖励费m元中扣去一部分钱wi,wi为自然数,不同的游戏扣去的钱是不一样的。当然,每个游戏本身都很简单,保证每个参赛者都能在一个时段内完成,而且都必须从整.

2021-10-20 14:43:52 164

原创 做题记录2021.10.18 SequenceGame(历史问题)

来源:牛客网题目描述 由于你帮助 Alice 回答得非常好,Sept 又找到了 Bob,希望能难倒他。 他给了要求 Bob 组成一个长度为 nnn 的新的数列 aaa,其中数列 aaa 的每一个元素ai都有k个取值。求所有可能的数列a中的最长上升子序列的的最大长度。 由于 Sept 怕题目钛难,所以他答应 Bob,对于每个i,k个取值不降。输入描述: 第一行两个数 k,n,意义如题述。 接下来n行,每行k个数,即ai的k个取值。输出描述: 仅一行一个整数,即所有可能的数列 aaa 中的最长上升子序.

2021-10-18 16:48:41 338

原创 做题记录 2021.10.17 洛谷P2431

题目链接首先,看到 1,2,4,8…… 这样的序列一定要想到二进制。不难发现,此题就是要我们求[a,b]的所有数中,二进制1最多的那个数的二进制有多少个1。前置知识:__builtin_popcount:GCC中内置的函数,可用于快速计算二进制中1的个数。其对应的64位整数版本为__builtin_popcountll。当然也可以自行实现,但以我的水平只能实现一个O(logn)的。不难发现:如果⌊log2a⌋≠⌊log2b⌋\lfloor log_2a\rfloor\neq \lfloor lo

2021-10-17 09:44:25 84

86box 旧电脑模拟器

86box 旧电脑模拟器,可以模拟一些旧的电脑设备,从IBM PC到Pentium II的都有

2021-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除