自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 全排列实现,O(n!)

想不通为什么要交换回去的话,画一个树状图就懂了。

2023-03-26 22:54:54 111

原创 怪事,int数组改成integer数组,arrays.sort速度快10倍?

以上是修改后的,仅仅把数组类型从int改为integer。就从2000ms超时变为400ms ac。

2023-01-22 18:05:15 179

原创 洛谷P1144 最短路计数(dijkstra、最短路条数)

用了一个和《dijkstra、heap+dijkstra、扩展应用》这篇文章中不同的最短路条数统计方式。

2022-10-20 17:45:15 377

原创 dij求最长路

4.更新d[]时,d[v]=Math.max(d[v], Math.min(w[u][v], d[u]));2.所有d[i]初始值为cost[1][i],而非将d[i]初始化为INF的d[1]为0。1.改变cost[][]的初始值为0,而非INF.因为更新d[]时要选最大的啦!1.变形的dijkstra,寻找从1到N的所有[通路中的那条最小边]的值中的。3.寻找要放入vis的点u时,找值最大的,而非最小的。2.用于求多点到固定点的最短路。以下为AC代码,注意注释。

2022-10-20 17:41:20 612

原创 快速幂大数求余

【代码】快速幂大数求余。

2022-09-26 17:16:46 339

原创 String、StringBuffer与Object的equals()方法

它的本质就是char的数组,equals方法继承自object,是对内存位置等的比较。因此两个内容相同的stringbuffer、或者内容相同的stringbuffer和string对象进行equals方法的调用,均返回false。以下为String类对equals方法的重写,可以看到string重写的equals不包括强制类型转换。基本类型如char,判断内容是否相同直接用==,而没有equals方法。String类的equals方法并没有强制转换的功能,也就是说。

2022-09-16 15:49:04 251

原创 模运算运算法则,求解逆元的方法,以及利用逆元求组合数

若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),注意,模数P应该取比要求逆元的数大的素数,这样可以保证P与该数互质,只有满足互质前提,扩展欧几里得算法得到的x才是逆元。若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p);如果p为素数,且gcd(b,p)=1,那么就有b。=1(modP),则b。..

2022-08-27 13:10:14 394

原创 codeforces 1714D - Color with Occurrences(覆盖,字符串)

2,在t的下标[1,1+len(s1)]范围内,找到一个可以匹配的最长的短字符串s2,记录此时t的被覆盖部分的最右下标为MAX。记录s2在字符串t的匹配起始位置下标为position。题意为,给一个长字符串t,和几个短字符串s[],求可完全覆盖t的使用的s的最少个数。3,在t的下标[position+1,MAX+1]范围内,找最长的匹配…1,从t的下标0开始,找到一个可以匹配的最长的短字符串s1。...

2022-08-17 15:25:31 297

原创 CF 1608C - Game Master(思维,图,dfs)

就不写摘要

2022-07-01 22:21:51 238 2

原创 【codeforces】1673C. Palindrome Basis(DP划分,回文数判定)

DP划分,回文数判定

2022-06-24 20:03:35 164

原创 1681D - Required Length(dp,bfs,素因子)

题目链接这个题就是bfs。不过我错误地估计了时间复杂度为O(2!+3!+…+19!)。其实不会有这么多枝,因为最后得到的位数满足要求的数一定可以被表示为x∗x*x∗2a∗2^a*2a∗3b∗3^b*3b∗5c∗5^c*5c∗7d7^d7d的形式(因为x每次只乘10以内的数)。我们知道最后的数一定是不大于1e18的,因此 a is not greater than 63, b is not greater than 39, c is not greater than 27, and d is not gr

2022-05-30 17:26:29 149

原创 CodeForces 1554B-Cobb(bitmask,logic,math,greedy)

题目题目大意:n个数的数组a,值范围[0,n],给定一个不大于100的值k,要求找出一对下标i<j,使得f(i,j)= ij-k(ai|aj) 取得最大值。n的数量级为1E5。题解:由于a最大值为n,所以(ai|aj)最大值小于2n。把f分为两部分,即ij和k*(ai|aj)这第一第二两部分,则f(i,j)的最大值不会小于这两部分分别可能取到的最大值之差,即(n-1)n-2kn。记为f(n-1,n)。在f(i,j)的式子里, i⋅j can be O(n^2), but k⋅(ai|aj)

2022-04-29 17:34:20 270

原创 codeforces 1592C - Bakry and Partitioning (bitmasks,dp,dfs)

1.如果一个数列中的所有值进行异或后,得到的值为0,则说明将这个数列分为任意两组后,这两组的异或值是相等的。2.两数异或值为0<==>这两个数相等。3.若干个相同的值x进行异或,得到的结果为x或者0。奇数个x异或为x,偶数个则为0。关于本题。m组异或值为x的数,若将其中三个组合并为一个组,则可以得到m-2组异或值为x的数。执行此步,最终得到3组或2组异或值为x的数。如果最终得到的是2组,则必有且仅有所有数的异或值为0。又因为如果所有数异或值为0,则数列可以被分为任意两组都能使这两组异或值

2022-04-15 17:25:03 270

原创 Codeforces 1658D1 - 388535 (Easy Version)(bitmask)

题解:对一组从0开始累加1的数,列出它们的二进制表示,会发现,每一位的0的总数一定是大于1的总数的。以0~7为例:因此,因为题中给出的输入,即经x按位异或后的数组a,一定是从0~n的原数组合法变换过来的,那么复原后,原数组一定符合前述规律。所谓复原,无非就是把x的第i位取1,使数组a中每个数的第i位取反——这会使0的综述与1的总数的大小关系变换;或者把x的第i位取0,这样数组a中每个数的第i位不变。对每一位,这两种操作取其一。因此,如果a中第i位0的个数大于1的个数,则x的第i位只能取0;如果.

2022-04-08 16:11:10 172

原创 Java怎样自定义某类对象的集合Set的contains()方法的判定方式?

举个例子,比如说我们自定义了一个Node类如下:class Node{ int x; int y; public Node(int x,int y){ this.x=x; this.y=y; }}然后,创建一个Node的Set集合,并add一个Node对象nd1,同时new一个xy值与nd1相同的nd2:Node nd1 = new Node(1,2);Node nd2 = new Node(1,2);Set<Node> st=new HashSet<>

2022-03-22 19:03:56 958

原创 不可说之YouKnowWho

如同架设了一个专用网络一样,所有与内网之间的通信都要经过这个服务器。属于基础设施虚拟化的一种。真的只是在学习quq

2022-03-21 21:27:27 141

原创 二项式展开式系数和、二项式展开式奇偶项系数和的相关定理及证明

定理(1)二项式系数和、定理(2)二项式系数奇偶项和证明如下:

2022-01-19 10:34:49 4746

原创 CF上分日记

1621B-1500分大意:给一堆区间,每个区间有标价。某人要买一个或两个区间,要求这些区间中包含的数的最小值和最大值差距尽量大,在此基础上花费尽量少。求这个花费。钻进了非要在线处理的牛角尖,不知道该怎么维护最优的选择,因为存在选择一个长区间和两个短区间的交替。其实,用离线的眼光来看,我们在拿到所有区间后,想要得到答案,只需维护三个东西:1,左端最小的区间的花费,以及这个左端值2,右端最大的区间的花费,以及这个右端值3,区间长度最大的区间的花费,以及这个长度注意,3中区间也会被收入1或2中。

2022-01-17 16:05:39 316

原创 JAVA快排数组被卡常?试试优先队列(堆排)

对时限一秒的题目采用O(nlogn)的算法,如果写法没问题是不会被T的。但是快排是个例外,如果测试数据被精心安排过,时间复杂度就会接近O(n^2)。因此保险起见,在对初始的无序

2022-01-09 17:11:47 301

转载 C/C++中关键字详解

C/C++中extern关键字详解

2022-01-07 19:09:24 66

转载 C++友元函数和友元类(C++ friend)详解

C++友元函数和友元类(C++ friend)详解

2022-01-07 18:48:42 62

转载 MacOS下解决工程DAO传中文数据在MySQL层上乱码问题

原理解决方法

2021-12-11 18:14:57 105

原创 SSM框架小项目的一点点总结(关于DAO、数据库、对按钮逻辑的js封装)

2021-12-11 18:08:52 346

原创 Python从终端使用whl文件向PyCharm虚拟环境安装第三方库

在终端直接pip install 库名,会将库安装到环境变量中配置的Python路径,也就是自己安装的python。然而在使用pycharm开发项目时,往往用的是pycharm给每个项目单独提供的虚拟解释器环境,虽然这个东西基于自己安装的python,但是路径是不一样的。从终端使用whl文件向虚拟环境安装第三方库,可以这样:Pycharm项目目录\Scripts\python.exe -m pip install whl文件的全路径实例:E:\Users\11046\PycharmProjects\

2021-08-14 23:27:51 2444 2

原创 hdu1281(二分图匹配)JAVA

为什么WA?import java.io.IOException;import java.util.Scanner;import java.util.Vector;class Main{ static Vector<Integer> G[]=new Vector[500]; static boolean used[]=new boolean[500]; static int match[]=new int[500],V,match2[]=new int[500],n,m;

2021-07-28 17:35:38 50

原创 poj3666 Making the Grade(dp,离散化)

能采用动态规划求解的问题的一般要具有3个性质:(1) 最优子结构:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。(2) 无后效性:(3)有重叠子问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。(该性质并不是动态规划适用的必要条件,但是如果没有这条性质,动态规划算法同其他算法相比就不具备优势)...

2021-07-22 00:33:06 112

原创 hdu1029 动态规划,一次遍历得到数列中出现次数过半的值

动态规划的思想。因为要求数个数过半,所以如果存在,必只有一个。若 a 为n个数中出现次数过半的数,则去掉这个数列的前k个数,当这k个数中不存在出现次数过半的数时,剩余n-k个数中出现次数过半的数仍是a。自己列个式子证明下就好。我们先称这样的k个数的前缀数列为k数列吧。存在过半的数就是非k数列。注意n只会为奇数。所以,只要不断去掉数列的k数列,最终就一定会留下一个非k数列。怎样判断一个前缀数列是k数列?定义两个变量分别为ans、cnt。ans记录当前前缀数列中出现次数过半的数,cnt记录它出现的次

2021-07-04 00:20:47 136

转载 JAVA与所谓“值传递和引用传递”

传送门首先,把值传递和引用传递忘了!在JAVA中,对象分为基本类型和引用类型。如下图。具体JAVA是怎么传参数的?以下举几个例子理解记忆:第一个例子:基本类型void foo(int value) { value = 100;}foo(num); // num 没有被改变第二个例子:没有提供改变自身方法的引用类型void foo(String text) { text = "windows";}foo(str); // str 也没有被改变第三个例子:提供了改变

2021-04-21 15:11:58 54

转载 理解JAVA对象序列化

传送门很好的文章。

2021-04-13 22:15:11 58

原创 字典树及其实现

字典树,即Trie树(踹树,读起来很舒适)值是在边上的。不过在代码里我存储在TrieNode当中。在我的代码中,1.TrieNode为Trie树的内部类,表示结点。2.结点的value存储从双亲结点到达当前结点的边上的值。3.结点的children数组(总觉得用sons的日子一去不复返了)以char字符-'a’为下标,存储对应value的TrieNode.4.根节点root是没有value的;判断是否可以字符串的下一个字符ch[i]为路径从当前结点cur到达它的某个孩子结点,只需看cur的chi

2021-04-13 18:54:15 146

转载 JAVA内部类

传送门

2021-04-13 18:10:41 59

原创 棋盘覆盖问题

1. 证明问题有解:2.分治法模型:3. 算法分析:如果一个算法的复杂度上界=问题的计算下界,则称该算法为渐近意义下的最优算法(即不考虑常数)4.伪码:5.物理应用:棋盘覆盖问题可用于解决病灶覆盖治疗6.代码:import java.util.Scanner;public class 棋盘覆盖 { static int maxn=1000; static int tile=1,board[][]=new int[maxn][maxn]; //变量解释在图片上 stati

2020-06-22 13:20:24 432

原创 快速排序(递归实现)

1.哨兵位置为最终位置2.partition就是切分过程3.选择一个哨兵,将一组数划分为全比它小、全比它大的左右两部分,再分别对这两部分继续如此左右划分,直到元素个数为1.整个划分结束时,数组已排好序。4.至于partition过程,参见上图。伪码:void quickSort(int a[],int p,int r){ if(p<r){ int q=partition(a,p,r); quickSort(a,p,q-1); quickSort(a,q+1,r); }}.

2020-06-22 09:12:57 213

原创 归并排序(非递归实现)

注意1.在递归实现中,向下划分的过程中并没有实际操作。实际交换位置等merge操作是从底端向上进行的2.因此递归过程可消除,避免不必要的系统开销代码实现:import java.util.Scanner;public class 归并非递归实现 { /** * 归并排序(非递归) * (合并内部已排好序的两两相邻数组)从切分的数组长度为1开始,一次归并变回原来长度的2倍 * @param nums 待排序数组 * @return 排好序的数组 .

2020-06-21 16:00:18 2192

原创 归并排序(递归实现)

只是补个欠账…注意:树形结构切分到回复,时间复杂度一般为O(nlogn)递归的归并排序,最大时间复杂度=平均时间复杂度=O(nlogn)递归的归并排序是按照深度优先在树上进行的。伪码描述:MERGE_SORT(A,p,r) //p<r时,至少还有两个数字。 //当元素个数为偶数,即p+r为奇数时,(p+r)/2落在中线之前的那个元素。 if p<r then q<--(p+r)/2 //分解过程 MERGE-SORT(A,p,q) MERGE-SORT(A,q+

2020-06-21 12:03:16 274

原创 已知a、b,求其最大公比例(辗转相减法的扩展应用)

已知a、ba、ba、b的值,且已知其可以表示为如下形式:a=qk0,b=qk1(q、k0、k1均为正整数)a=q^{k_0},b=q^{k_1} (q、k_0、k_1均为正整数)a=qk0​,b=qk1​(q、k0​、k1​均为正整数)求ppp,使得:p=qg,g=gcd(k0,k1)p=q^{g},g=gcd(k_0,k_1)p=qg,g=gcd(k0​,k1​)ppp称为a、ba、ba...

2020-03-13 23:34:37 150

原创 LCS及其应用(最长公共子序列)

dp[i][j]dp[i][j]dp[i][j]表示aaa串的前iii个与b串的前jjj个的最长公共子序列的长度。则:dp[i][j]={max(dp[i−1][j],dp[i][j−1])a[i]!=b[i]dp[i−1][j−1]+1a[i]=b[i]dp[i][j]=\begin{cases}max(dp[i-1][j],dp[i][j-1])& a[i]!=b[i]\\d...

2020-03-12 23:04:08 192

原创 矩阵快速幂优化的dp

如果你已经推导出了转移方程dp[i][j]=∑dp[i−1][fit[j]]dp[i][j]=\sum dp[i-1][fit[j]]dp[i][j]=∑dp[i−1][fit[j]]那么你可以把这个式子表示为如下的矩阵形式:[010101010]∗[dp[i−1][0]dp[i−1][1]dp[i−1][2]]=[dp[i][0]dp[i][1]dp[i][2]]\left[\begin...

2020-03-07 21:12:15 142

原创 求N以内有k个合因子的数的个数

题目如下:只有合数有合因子。在埃筛的过程中,每遇到一个合数i,就将其自身的合因子个数以及其倍数的合因子个数num[i],num[i2],num[i3]…加一。而且筛到这个合数的时候,它的合因子个数已经确定了。所以让这个合因子个数的数的数量 sum[num[i]] 加一。即可。埃氏筛法时间复杂度n*loglognpublic class Main { static int maxn=...

2020-02-27 21:00:05 183

转载 SPFA与dijkstra+heap的比较

https://www.cnblogs.com/flipped/p/6830073.html简而言之就是如果是稠密图,Dijkstra+heap比SPFA快。稀疏图则SPFA更快。(cnblog真好看啊,csdn你…不想吐槽了)

2020-02-16 19:21:50 240 1

实验5:软件项目配置管理计划.docx

智慧物联微信小程序的项目配置管理计划书,使用了配置管理计划书的标准模板,描述了智慧物联小程序的基本配置管理。

2019-11-28

空空如也

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

TA关注的人

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