自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 问答 (1)
  • 收藏
  • 关注

原创 树状列表数据-树状查询问题解决

列表树状数据生成树的解决及讨论。

2023-06-05 10:31:11 149

原创 牛客 BM76 正则表达式匹配 【动态规划】

3、当 * 与 str 的字母匹配时,它的状态额外可以从左上(前一个字符在前一个位置的状态)和左侧(当前字符在前一个位置的状态)转移过来,即 dpMap[yPos][xPos] |= (dpMap[yPos-1][xPos-1] || dpMap[yPos][xPos-1])1、因为 * 是跟随前一个字符,所以 * 的状态在 dpMap 中跟随前一个字母,即 dpMap[yPos][xPos] = dpMap[yPos-1][xPos]只包含从 a-z 的小写字母以及字符 . 和 *,无连续的 '*'。

2023-05-23 14:21:10 399

原创 牛客 BM75 编辑距离(一) 【动态规划】

2、如果 char1 == char2,dp[yPos][xPos] = dp[yPos-1][xPos-1],如果不相同,那么dpMap 可以从 xPos-1 和 yPos-1 继承状态;因为存在 char1[xPos-1] == char2[yPos-1] 的情况,这时当前 char1 需要移动的次数减少一次,所以。判断每个字符移动到对应的位置需要多少次,以此进行状态转移,最终结果就是 str1 的最后一个字符移动到 str2 的最后一个字符,需要移动的次数。0 : 1,其余递增1。

2023-05-18 16:15:54 508

原创 牛客 BM73 最长回文子串 【Manacher 算法】

例如 i=6 时,因为 i < R,所以直接去前面的找,查找 2*C-i = 2,L[2] = 2,说明节点 2 有一个半径为 2 的回文字段,因为 i=6 和 i=2 关于中心点 C 对称,所以 i=6 也至少有一个半径为 2 的回文字段,然后从半径 3 开始遍历。可以看出,a字符只有本身回文,所以L[0]=1,字符 b 回文串为 aba,所以 L[1] = 2。传递即为 dp[i][j] = dp[i-1][j-1] && char[i] == char[j]L[i]:以该字符为中心,回文串的半径。

2023-05-17 17:19:25 446

原创 牛客 BM66 最长公共子串 【动态规划】

二维背包时间复杂度 O(n^2),空间复杂度 O(n^2)。但因为本体的特殊性,子串是连续的字符串,所以可以用反向的一维数组代替。当 s1 的 xPos 位置 = s2 的 yPos 的字符时,它的最大长度等于 dp[yPos-1][xPos-1] + 1。此处 dp[xPos] 是这个循环的当前位置,而 dp[xPos-1] 是上个循环的当前位置。给定两个字符串str1和str2,输出两个字符串的最长公共子串。即 dp[xPos] = dp[xPos-1] + 1。,那么 dp 公式就出来了。

2023-05-12 14:53:44 82

原创 牛客 BM65 最长公共子序列(二) 【动态规划】

3、每一个位置,如果字符相同,那这个点的值就是 dp[yPos-1][xPos-1] + 1。如果字符不相同,那这个点的值就是 Max(dp[yPos-1][xPos], dp[yPos][xPos-1])如果最长公共子序列为空,则返回"-1"。4、从最后一行获取长度最大值,从该点开始搜索,每个点横向纵向把相同值全都走掉,记录最后点,然后 yPos-- xPos--,重复上述操作,直到边界。2、初始化第一列,将 S 与 s2 逐一对比,结果val与 dp[yPos-1][xPos] 取最大值。

2023-05-12 11:08:16 62

原创 牛客 BM40 重建二叉树

例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。2、在中序中找到 A,并将数组划分为两部分,左边的为 A 的左树节点,右边为 A 的右树节点。给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。返回根节点,系统会输出整颗二叉树对比结果,重建结果如题面图示。只需要返回根结点,系统会自动输出整颗树做答案对比。1、前序的第一个数字A,即为当前分支的根节点。使用前序和中序,完成二叉树的重建。

2023-05-10 15:52:38 669

原创 牛客 BM20 数组中的逆序对 【二分排序】

通过冒泡排序,一个数字前面有几个大于它的数,等于它从小到大排序向前移动了几位,也就是冒泡的次数。因为是顺序冒泡,所以前面已经冒泡过的小数或相同数不会干扰当前数字的冒泡次数,所以找逆序对次数的问题就转换成了升序排序冒泡次数的问题。在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。优化:冒泡排序太慢了,整体时间复杂度为 O(N^2) ,所以需要对冒泡进行优化,所以可以采用二分排序来优化这一过程,使时间复杂度下降到 O(NlogN)。题目保证输入的数组中没有的相同的数字。

2023-05-08 13:26:33 60

原创 牛客 BM19 寻找峰值

给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。因为题目要求找到任意一个峰值即可,所以我们可以直接舍弃递减的部分,只去找递增的部分。直接 for 循环遍历,找高于左右两边的峰值返回即可,时间复杂度 O(n)峰值元素是指其值严格大于左右相邻值的元素。1、如果值 i 向左递增,那他的左边一定有峰值。2、如果值 i 向右递增,那右边一定有峰值。3、如果值 i 的左或右递减,那就。4、进入左侧或右侧,重复2,3过程。是峰值元素,返回其索引。

2023-05-06 11:06:28 247

原创 牛客 BM18 二维数组中的查找

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[1,2,8,9],给定 target = 7,返回 true。给定 target = 3,返回 false。数据范围:矩阵的长宽满足 0 ≤ n,m ≤ 500 , 矩阵中的值满足 0 ≤ val ≤ 10^9进阶:空间复杂度 O(1) ,时间复杂度 O(n+m)

2023-05-05 14:31:59 383

原创 华为机考笔试题 找城市

一个城市规划问题,一个地图有很多城市,两个城市之间只有一种路径,切断通往一个城市i的所有路径之后,其他的城市形成了独立的城市群,这些城市群里最大的城市数量,就是聚集度DPi,现在给出一个地图上各个城市的路径,输出聚集度最小的城市,如果有多个结果,按照编号从小到大第一行输入 城市节点数目N后面N-1输入城市之间的路径......

2022-06-22 11:08:40 1349 2

原创 springMVC框架下编码与解码(中文乱码)

编写项目中突然用到了中文,然后发生了一大堆的乱码,于是在百度上奋斗良久,终于解决了问题。项目在java8环境下搭建,使用spring4.3.61)前端页面部分&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;登录

2018-07-18 17:04:03 2642 2

原创 ResultSetMetaData的使用心得

今天写页面的时候,发生了离奇的错误,明明语句在数据库中执行能查出6个字段,但是返回数据时只剩5个了,检查了好多遍代码,终于发现ResultSetmetaData的一点使用心得。public List&lt;Map&lt;String,Object&gt;&gt; search(String sql){ Connection conn = getConnection(); PreparedS...

2018-04-16 12:09:29 4429 1

原创 java.lang.InstantiationException错误

发生这类错误有两种原因1、要实例化的对象是一个接口或者是抽象类等无法被实例化的类。解决:在使用反射的机制时,由于抽象父类中的构造方法不是public的,所以导致异常的出现,其实很简单,只要将需要反射的类中的相应构造方法改为public即可。2、持久类引发的。我的实体类中只有一个带参数的构造方法以及一系列的getter/setter方法。在Hibernate中就有明确的要求:每一个持久化类都必须带一...

2018-04-13 11:30:57 5955

原创 使用ajaxfileupload的一点心得

ajaxfileupload大概是因为很久不更新,所有有不少的问题1、handlerError not find这个东西从jQuery1.4之后就已经没有了,所以需要手动添加到ajaxfileupload.js中(插在js文件内部)handleError: function( s, xhr, status, e ) { // If a local callback w

2016-08-24 14:04:24 6514

原创 hdu 5492 Find a path DP

题意:矩阵中找一条路径,是的路径上的各个点的数值方差最小解一:DP将题中算是化简可得(n+m-1)*segma(Ai^2)-(segma(Ai))^2dp[i][j][k]表示到矩阵中i,j这个点和为k的最小的Ai^2的和dp[i][j+1][k+num[i][j+1]]=MIN(dp[i][j+1][k+num[i][j+1],dp[i][j][k]+num[i][j]*num[

2015-09-29 15:45:05 388

原创 hdu 5382 GCD?LCM!

题意:[exp]为一个判断式,若exp为真,则值为1,否则为0F[n]=segema(1,n,segema(1,n,[lcm(i,j)+gcd(i,j)>=n]))S[n]=segema(1,n,F[i])解:#include #include #define ll __int64const int maxn=5+1e6;const ll mod=258280327;in

2015-08-15 16:10:19 703

原创 zoj 3175 Number of Containers 分块加速

题意:计算n以内i的倍数的个数,不包括i本身,求和解:直接暴力for一遍一定是不行的,不过用一个分块加速就可以了#include #include int main(){ int t; long long n; while(scanf("%d",&t)!=-1) { while(t--) { sc

2015-08-13 09:52:36 627

原创 Digital Clock 数论水题

DescriptionDigital clocks usually show the time in the form hh:mm:ss, where hh is a number between 00 and 23, and both mm and ss are numbers between 00 and 59. Removing the colons from hh:mm:ss will

2015-08-10 16:13:18 564

原创 Steps 数论水题

原题DescriptionOne steps through integer points of the straight line. The length of a step must be nonnegative and can be by one bigger than, equal to, or by one smaller than the length of the previ

2015-08-10 15:19:27 481

原创 HDU 4675 GCD of Sequence

题意:给N个数,要求改变其中K个数,是改变后的数列GCD为1~M,问对于各个GCD一共有多少组数解:1、预处理C(n,m),这里用快速幂计算n!,m!,(n-m)!,quick(a,mod-1)=a2、给定数列中统计i的倍数的个数为temp,如果n-temp>k,那么把k个数换掉,GCD依旧不为i,所以sum[i]=0;若n-tempsum[i]=(m/i)^(n-temp)*(m

2015-08-04 09:49:41 453

原创 HDU 4746 Mophues 莫比乌斯第三弹

题意:1例:24=2*2*2*3,k=4解:设f[n]为gcd(a,b)=n的对数      F[d]为d|gcd(a,b)的对数    f[n]=sigema(mu[i],F[i*n]):    f[1]=mu[1]*F[1]+mu[2]*F[1*2]+...+mu[n]*F[1*n]    f[2]=mu[2]*F[2]+mu[2]*F[2*2]+...+mu[n]*F

2015-08-02 16:35:15 604

原创 HDU 1695 GCD 莫比乌斯第二发

题意:求[1,b]和[1,d]内公约数为k的对数(错了N发之后才看到a和c为1。。。)解一:容斥原理和欧拉函数http://www.cnblogs.com/kuangbin/p/3269182.html参考大神的文章吧,我没写=-=解二:莫比乌斯设f[x]为GCD(a,b)=k的对数   F[x]为k|x的对数所以b,d均除k就是求所有GCD为1的对数sum+=

2015-08-01 14:01:41 602

原创 SPOJ VLATTICE Visible Lattice Points 初入莫比乌斯

题意:求两个点(x,y,z)的连线不经过其他点有几个解:即为求GCD(x,y,z)为1的点有几个解一:因为x,y,z均在1~n内,所以可以用欧拉函数解出解二:莫比乌斯反演设f[n]为GCD(x,y,z)=n的个数设F[b]为b|GCD(x,y,z)的个数,很明显F[b]=(n/i)*(n/i)*(n/i)所以F[n]=sigema(b|n,f[b]);f[n]=sige

2015-07-30 11:55:51 1009

原创 hdu 5303 Delicious Apples(dp)

题意:一个长为L的圈种上n颗树,每棵树的坐标为xi,结了ai个苹果,用大小为k的篮子把所有苹果装回来,问最少走多少路解:被神奇的dp教做人了(其实我比较水,本来以为左边贪心一下,右边贪心一下在最后转一圈就搞定的水题=-=)#include #include #include #define ll __int64#define MIN(a,b) ((a)<(b)?(a):(b))c

2015-07-27 16:38:30 481

原创 HDU 5305 Friends

水水的DFS题意:n个人m个关系,要求每个人的网上朋友和现实朋友一样多,求一共有多少种关系解:因为数据小,暴力DFS就可以了,不过要一点小剪枝#include #include int point[10];struct aaa{ int x,y;}line[30];struct bbb{ int online,outline;}node[10];int

2015-07-26 10:11:04 355

原创 HDU 5289 Assignment

题意:在n个数中找一共有几个数组,使得数组内的最值差不超过k,数组元素要求连续解一:ST#include #include #include #define ll __int64#define MAX(a,b) ((a)<(b)?(b):(a))#define MIN(a,b) ((a)<(b)?(a):(b))const int maxn=100005;ll a[maxn]

2015-07-22 16:54:55 624

原创 Light OJ 1341 Aladdin and the Flying Carpet

题意:求大于b的a的因数对有几组。例10  2结果为{2,5},12 2结果为{2,6}{3,4}-----不重复解一:分解质因数+DFS#include #include #include using namespace std;typedef long long ll;const int maxn=1000005;int prime[maxn];int num[maxn]

2015-07-21 08:46:00 575

原创 URAL 1720 Summit Online Judge

题意:给了x,y,l,r,求由x,y可以线性组合出多少个在[l,r]内的数。例x=4,y=5,l=7,r=13,则x,y可以组合出8,9,10,12,13解:所有x,y线性组合的数可化为区间[x,y],[2x,2y],[3x,3y]......从[kx,ky]开始区间重叠,则(k+1)x在[l,r]区间内的数可化为f[r]-f[l-1],f[x]为x之前由x,y线性组合的数的个数#

2015-07-19 15:50:32 459

原创 UVA 10200 Prime Time 暴力水题

一个简单的暴力水题,只是输出方式让人无语。。。#include #include int prime(int n){ int i; for(i=2;i*i<=n;i++) { if((n%i)==0) return 0; } return 1;}int main(){ int num[10010

2015-05-09 22:27:36 2204 1

原创 UVA 11426 GCD Extreme (II) 欧拉函数

1)欧拉函数φ(n)为所有小于n的正整数与n的GCD和,φ(n)=n*(1-1/a1)*(1-1/a2)......(a1,a2...为n的约数)2)若对于B有n个数与其互质,则循环到i*B则可为pe[i*B]增加pe[B]*i3)最后值即求a[1]+a[2]+....+a[n]#include #include #define N 4000010int pe[N];long

2015-05-03 16:41:40 532

原创 poj1061 青蛙的约会 扩展欧几里得

(1)at+bp=c有解的条件是c%gcd(a,b)=0;(2)求解at+bp=gcd(a,b)得x1,y1,则原式解x=x1*(c/gcd(a,b)),y=y1%(c/gcd(a,b));(3)问题等化为(n-m)t+pl=x-y;#include long long x1,y1;long long extended(long long a,long long b){

2015-05-01 14:24:29 295

原创 The World is a Theatre codeforces131c

题意:n个男生和m个女生选t个人,至少4男1女提示:要用long long类型,不然会爆方法一:直接排列组合#include #include typedef long long ll;ll doo(ll i,ll n){ ll a=1; for(ll l=1;l<=i;l++) { a*=n-l+1; a/=l;

2015-03-22 15:18:40 600

原创 Number of Ways--CodeForces 466C 水题

题意:输入一组数,将其割成三段,每一段的值相同解法:因为要割三组值相同,所以每一组的值一定是整体求和的1/3千万记得long long,血的代价#include #include long long num[500005];int main(){ int n; long long a; int i,j; long long all; wh

2015-03-21 15:45:02 590

原创 最长公共子序列Common Subsequence POJ1458

#include #include int max(int a,int b){ return a<b?b:a;}int main(){ int dp[1005][1005]; char a[1005],b[1005]; int i,j,k; int lena,lenb; int maxn; while(scanf("%s%s",a

2015-03-14 21:23:32 287

原创 勒让德定理

小于n,#include int min(int a,int b){ return a<b?a:b;}int lrd(int sum,int n,int k){ int t=n/k; if(t!=0) { k*=k; sum=lrd(sum+t,n,k); } return sum;}int main()

2014-11-25 13:09:01 1790

原创 欧拉函数

φ函数的值φ(x)通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn)

2014-11-16 16:28:22 327

原创 二叉树先序遍历

#include #include struct node{ node *left,*right; char letter; node(){ left=NULL; right=NULL; letter=NULL; }}*root;int num;void buildtree(node *p,char *str){ num++; if(str[num]=='#'

2014-11-14 09:37:32 365

原创 找素数

(1)增加布尔型数组

2014-10-23 17:10:41 610

原创 AC自动机 病毒侵袭 hdu2896

和hdu2222题相似的水题提示:1)连着RE了好多发,没想明白,看了一下网上题解才知道,输入的不一定都是字母,所以next要开100!!!!!!!#include #include int tot;char str[10005];int t;//int time[100];struct trie { trie *fail; trie *next[100];

2014-08-23 16:00:30 501

空空如也

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

TA关注的人

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