自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 设计模式-观察者模式

定义对象间的一种一对多依赖关系,每当一个对象状态发生改变时,其相关依赖对象皆会得到通知并执行相应的逻辑处理。

2023-07-11 14:43:35 61

原创 设计模式-单例模式

【代码】设计模式-单例模式。

2023-07-09 20:51:03 69

原创 Java线程池

线程的创建和关闭是需要花费时间的,当频繁创建和关闭线程会对系统性能产生影响,而线程池可以让创建的线程复用,避免系统频繁地创建和销毁线程。

2023-06-11 16:40:46 85

原创 代码源每日一题---质区间长度(二分)

题目链接:质区间长度 - 题目 - Daimayuan Online Judge题意:思路:首先分析题目,可以发现[x, x + len - 1], len越大,[x, x + len - 1]这个区间的质因数要么不变要么增加,不可能不出现减少的情况,因此它具有单调性,所以可以用二分答案来解决。二分的关键在于如何check这个方案是否合法,在这里我们即判断[x, x + mid -1](l<= x <=r-len+1)这些区间里面的质数数量是否都不小于k。在这里我们可以用线性筛预..

2022-04-16 10:07:26 85

原创 代码源每日一题------最长有趣子序列(DP)

题目链接:http://oj.daimayuan.top/course/10/problem/741题意: 给你n个数,让你求出最长的有趣子序列的长度,有趣子序列定义为相邻两项的与运算不能为0.思路:用 f[i][j] 表示前i个数组成的有趣子序列结尾的数中其二进制表示下第j位为1的最长的有趣子序列长度,接下来讨论状态转移,从最后一步考虑有两种决策代码:...

2022-04-16 09:29:47 120

原创 AtCoder Beginner Contest 242(C-E, G)

C - 1111gal password (DP)题意:找到长度为n的且满足相邻位之差的绝对值不超过1的方案数思路:f[i][j]表示前i个位且第i位填j满足要求的方案数, 第i位填j,那么第i-1位肯定就只能填(j-1, j, j + 1)这三个数,因此可以得到转移方程: f[i][j] = f[i-1][j-1] + f[i-1][j] + f[i-1][j+1];时间复杂度是O(10*N)代码:#include <bits/stdc++.h>using namespac

2022-03-06 10:37:06 456 9

原创 Educational Codeforces Round 123 (Rated for Div. 2) (A-D)

A. Doors and Keys题意:在水平轴上有三个有颜色的门以及其对于颜色的钥匙,要穿过门必须要拿到相应颜色的钥匙才能通过,给出门和钥匙在水平轴上的分布,询问是否能穿过这三条门。题解:模拟即可,遇到门时查看是否有钥匙就行,没有就是不能穿过这三条门,否则当前这条门就可通过。代码:#include <bits/stdc++.h>using namespace std;typedef pair<int, int> PII;typedef long long

2022-02-25 23:10:29 260

原创 AtCoder Beginner Contest 239 (C-E)

C - Knight Fork题意: 给定两个点(x1, y1) (x2, y2), 询问是否存在一个点(x, y) (x y均为整数)使得这个点到这两个点的距离都是 根号5思路:两个整数加起来等于5的方案有0 + 5, 1 + 4, 2 + 3三种方案,根据两点之间的距离公式可得只有1 + 4 = 1^2 + 2^2符合,因此我们可以用(x1, y1)来得到(x, y), 然后再用两点之间的距离公式来判断(x, y)到(x2, y2)的距离是否为 根号5 即可代码:#include &

2022-02-21 14:37:39 467

原创 AtCoder Beginner Contest 237(C-E)

C - kasaka题意:给定字符串S,询问是否在S串前任意个(可以是0个)字符‘a’是的新生成的S是个回文串题解: 在S串前添加字符’a’使得S串最前面连续的a等于S串最后面连续的,然后check这个字符串是否为回文串就行。AC代码:#include <iostream>#include <algorithm>#include <cstring>#include <queue>#include <string>#includ

2022-01-30 23:45:06 1359 5

原创 AtCoder Beginner Contest 236 (C-E)

C - Route Map题意:给定n个S串和m个T串,对于每一个S串问是否其出现在T串中。题解:map模拟记录T串,对于S,询问map中是否存在就行。AC代码:#include <iostream>#include <algorithm>#include <cstring>#include <queue>#include <string>#include <vector>#include <map>

2022-01-25 21:50:17 645

原创 AtCoder Beginner Contest 235 (C-F)

C - The Kth Time Query (模拟)题意:给定长度为n的数组,然后有m个询问,每个询问给出一个二元组(x, k),即询问值为x的数在数组里面从左到右第k次出现的下标是多少,如果不存在就输出-1.题解:可以将值相同的下标都放到一个数组里面去,查询的时候直接访问到这个x数组的第k个下标即可,但是注意到这里的数达到了1e9级别,因此需要用到离散化AC代码:#include <iostream>#include <algorithm>#include &l

2022-01-19 20:15:28 509 3

原创 AtCoder Beginner Contest 234 (D-F)

D、Prefix K-th Max题目大意:给定一个长度为n的数组和一个k,对于每一个i(i >= k&&i <= n), 求前i个数字中第k大的数字是什么。题解: 此题可以用优先队列来解决, 我们可以维护一个小根堆,然后维护其里面的size,一旦大于k则进行pop,这样的话每次输出答案时列头就是我们所需的答案,由于每个值只进来一次只出去一次,因此时间复杂度时O(nlogn) !AC代码:#include <iostream>#include <a

2022-01-10 12:55:33 625 3

原创 树上启发式合并(作为初学者的一点领悟)

浅谈启发式合并,顾名思义就是用来处理合并类的问题的。它是数据结构相关问题中的一种重要思想,原则是:把“小的结构”合并到“大的结构”中,并且只增加“小的结构的代价”,因此可以减少时间复杂度正文先来一道例题吧!E. Lomsat gelral大意即为:给定一颗树(以1为根节点), 每棵树上都有一种颜色, 对于每个顶点v,找出顶点v的子树中所有数量最多的颜色的编号总和。一个朴素做法的时间复杂度是O(n2)的, 这道题用到的启发式合并就是用来优化这个朴素做法的。朴素做法:对于每个节点,暴力遍历子树,将它

2021-08-29 09:52:49 1539 3

空空如也

空空如也

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

TA关注的人

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