1 #include
2 #define N 500050
3 using namespace std;
4 int n;
5 char s[N];
6 struct PAM{
7 int tot,las;
8 struct node{int len,fail,trans,ch[26 ];}tr[N];
9 PAM(){tr[0 ].fail=-1 ;}
10 inline int extend(int n){
11 int c=s[n]-' a ' ,p=las;
12 // cout<
13 while ((~p)&&s[n-tr[p].len-1 ]!=s[n])p=tr[p].fail;
14 // cout< "<
15 if (p==-1 ){las=0 ;return 0 ;}
16 if (!tr[p].ch[c]){
17 int np=++tot,k=tr[p].fail;
18 tr[np].len=tr[p].len+2 ;
19 while ((~k)&&s[n-tr[k].len-1 ]!=s[n])k=tr[k].fail;
20 if (~k){
21 tr[np].fail=tr[k].ch[c];
22 if (tr[np].len>2 ){
23 k=tr[p].trans;
24 while ((~k)&&(s[n-tr[k].len-1 ]!=s[n]||tr[k].len+2 >(tr[np].len>>1 )))
25 k=tr[k].fail;
26 // cout<
27 if (~k)tr[np].trans=tr[k].ch[c];
28 }
29 }tr[p].ch[c]=np;
30 }
31 las=tr[p].ch[c];
32 // cout<
33 return tr[tr[las].trans].len==(tr[las].len>>1 )?tr[las].len:0 ;
34 }
35 }t1;
36 int main(){
37 scanf(" %d%s " ,&n,s+1 );
38 int ans=0 ;
39 for (int i=1 ,x;i<=n;++i)
40 x=t1.extend(i),ans=max(ans,x);
41 cout<endl;
42 return 0 ;
43 }
View Code
题意转化一下,可以用回文自动机。
在插入一个点后,立马把它取反,然后自动机正常建即可。
额,好像不能正常建,只建偶回文串
然后倒扫一遍自动机的节点统计答案,并累加贡献即可。
1 #include
2 #define N 500050
3 #define int long long
4 using namespace std;
5 int n;
6 char s[N];
7 struct PAM{
8 int las,tot;
9 struct node{
10 int len,sz,fail,ch[2 ];
11 }tr[N];
12 PAM(){tr[0 ].fail=-1 ;}
13 inline void extend(int n){
14 int p=las,c=s[n]-' 0 ' ;
15 while ((~p)&&s[n-tr[p].len-1 ]!=s[n])p=tr[p].fail;
16 if (!(~p)){las=0 ;return ;}
17 // printf("%d %d\n",n,p);
18 if (!tr[p].ch[c]){
19 int np=++tot,k=tr[p].fail;
20 tr[np].len=tr[p].len+2 ;
21 while ((~k)&&s[n-tr[k].len-1 ]!=s[n])k=tr[k].fail;
22 if (k!=-1 )tr[np].fail=tr[k].ch[c];
23 tr[p].ch[c]=np;
24 }
25 las=tr[p].ch[c];++tr[las].sz;
26 // printf("las:%d len:%d fail:%d\n",las,tr[las].len,tr[las].fail);
27 }
28 inline int getans(){
29 int ret=0 ;
30 // cout<
31 for (int i=tot;i;--i){
32 // printf("i:%d len:%d sz:%d\n",i,tr[i].len,tr[i].sz);
33 if (!(tr[i].len&1 ))ret+=tr[i].sz;
34 tr[tr[i].fail].sz+=tr[i].sz;
35 }
36 return ret;
37 }
38 }t1;
39 main(){
40 scanf(" %lld%s " ,&n,s+1 );
41 for (int i=1 ;i<=n;++i){
42 t1.extend(i);
43 s[i]=s[i]==' 0 ' ?' 1 ' :' 0 ' ;
44 }
45 // printf("%s\n",s+1);
46 printf(" %lld\n " ,t1.getans());
47 return 0 ;
48 }
View Code
和双倍回文类似。在最后的fail树上开桶dfs统计答案,在回溯时累加贡献。
1 #include
2 #include
3 #include
4 #include
5 #define N 300050
6 using namespace std;
7 int n;char s[N];
8 int ans[N],t[N];
9 struct PAM{
10 int las,tot;
11 int he[N],ne[N<<1 ],to[N<<1 ],bk[N],cnt,ans[N];
12 struct node{
13 int ch[26 ],sz,len,fail;
14 inline void clear(){
15 memset(ch,0 ,sizeof (ch));
16 sz=len=fail=0 ;
17 }
18 }tr[N];
19 inline void add(int x,int y){
20 to[++cnt]=y;ne[cnt]=he[x];he[x]=cnt;
21 }
22 inline void init(){
23 memset(he,0 ,sizeof (int )*(n+1 ));
24 memset(ans,0 ,sizeof (int )*(n+1 ));
25 cnt=tot=las=0 ;
26 tr[0 ].clear();tr[1 ].clear();
27 tr[tot=1 ].len=-1 ;tr[0 ].fail=1 ;
28 add(1 ,0 );
29 }
30 inline void extend(int n){
31 int c=s[n]-' a ' ,p=las;
32 while (s[n-tr[p].len-1 ]!=s[n])p=tr[p].fail;
33 if (!tr[p].ch[c]){
34 int np=++tot,k=tr[p].fail;tr[np].clear();
35 tr[np].len=tr[p].len+2 ;
36 while (s[n-tr[k].len-1 ]!=s[n])k=tr[k].fail;
37 tr[np].fail=tr[k].ch[c];
38 add(tr[k].ch[c],np);
39 tr[p].ch[c]=np;
40 }
41 las=tr[p].ch[c];++tr[las].sz;
42 // printf("n:%d las:%d len:%d sz:%d fail:%d\n",n,las,tr[las].len,tr[las].sz,tr[las].fail);
43 }
44 inline void dfs(int g){
45 // printf("g:%d sz:%d len:%d fail:%d\n",g,tr[g].sz,tr[g].len,tr[g].fail);
46 if (tr[g].len>0 )++bk[tr[g].len];
47 for (int i=he[g];i;i=ne[i]){
48 dfs(to[i]);
49 tr[g].sz+=tr[to[i]].sz;
50 }
51 if (bk[tr[g].len+1 >>1 ]&&tr[g].len>0 )ans[tr[g].len]+=tr[g].sz;
52 if (tr[g].len>0 )--bk[tr[g].len];
53 }
54 inline void pr(){
55 for (int i=1 ;i"%d " ,ans[i]);
56 printf(" %d\n " ,ans[n]);
57 }
58 }t1;
59 int main(){
60 if (scanf(" %s " ,s+1 )==EOF)return 0 ;
61 t1.init();n=strlen(s+1 );
62 for (int i=1 ;i<=n;++i)t1.extend(i);
63 t1.dfs(1 );
64 t1.pr();
65 return main();
66 }
View Code
这题正解不是回文自动机,出这题的时候回文自动机还没怀上呢。。 。
二分加二维hash
1 #include
2 #define N 1010
3 #define ull unsigned long long
4 using namespace std;
5 inline int read(){
6 int s=0 ;char c=getchar();
7 while (c>' 9 ' ||c<' 0 ' )c=getchar();
8 while (c>=' 0 ' &&c<=' 9 ' )s=s*10 +c-' 0 ' ,c=getchar();
9 return s;
10 }
11 int n,m,ans;
12 ull a[N][N];
13 const ull P1=1000000007 ,P2=13331 ;
14 ull po1[N],po2[N];
15 inline void to(int &t1,int &t2,int tag){
16 if (tag&1 )t1=n-t1+1 ;
17 if (tag&2 )t2=m-t2+1 ;
18 }
19 inline void init(int n){
20 po1[0 ]=po2[0 ]=1 ;
21 for (int i=1 ;i<=n;++i)po1[i]=po1[i-1 ]*P1,po2[i]=po2[i-1 ]*P2;
22 }
23 struct HASH{
24 ull ha[N][N],now;
25 inline void init(int tag){
26 for (int i=1 ;i<=n;++i){
27 for (int j=1 ,x,y;j<=m;++j){
28 x=i,y=j;
29 to(x,y,tag);
30 ha[i][j]=ha[i-1 ][j]*P1+(ha[i][j-1 ]-ha[i-1 ][j-1 ]*P1)*P2+a[x][y];
31 }
32 }
33 }
34 inline void check(int x,int y,int len,int tag){
35 to(x,y,tag);
36 now=ha[x][y]
37 -ha[x-len][y]*po1[len]
38 -ha[x][y-len]*po2[len]
39 +ha[x-len][y-len]*po1[len]*po2[len];
40 }
41 }H[4 ];
42 int main(){
43 scanf(" %d%d " ,&n,&m);
44 for (int i=1 ;i<=n;++i)
45 for (int j=1 ;j<=m;++j)
46 a[i][j]=read();
47 init(max(n,m));
48 for (int i=0 ;i<=3 ;++i)H[i].init(i);
49 for (int i=1 ;i<=n;++i){
50 for (int j=1 ,l,r;j<=m;++j){
51 r=min(j,m-j);r=min(r,i);r=min(r,n-i);++r;l=0 ;
52 // printf("%d %d %d %d\n",i,j,l,r);
53 while (l+1 <r){
54 int mid=l+r>>1 ;
55 H[0 ].check(i,j,mid,0 );
56 H[1 ].check(i+1 ,j,mid,1 );
57 H[2 ].check(i,j+1 ,mid,2 );
58 H[3 ].check(i+1 ,j+1 ,mid,3 );
59 if (H[0 ].now==H[1 ].now&&H[1 ].now==H[2 ].now&&H[2 ].now==H[3 ].now)l=mid;
60 else r=mid;
61 // if(i==1&&j==3)
62 // printf("%llu %llu %llu %llu\n",H[0].now,H[1].now,H[2].now,H[3].now);
63 }
64 ans+=l;
65 r=min(j,m-j+1 );r=min(r,i);r=min(r,n-i+1 );l=1 ;++r;
66 while (l+1 <r){
67 int mid=l+r>>1 ;
68 H[0 ].check(i,j,mid,0 );
69 H[1 ].check(i,j,mid,1 );
70 H[2 ].check(i,j,mid,2 );
71 H[3 ].check(i,j,mid,3 );
72 if (H[0 ].now==H[1 ].now&&H[1 ].now==H[2 ].now&&H[2 ].now==H[3 ].now)l=mid;
73 else r=mid;
74 }
75 ans+=l;
76 }
77 }
78 cout<endl;
79 return 0 ;
80 }
View Code
你可能感兴趣的:(回文自动机刷题总结)
贪心算法day31|56. 合并区间、738. 单调递增的数字(整数与字符串的转换)、贪心刷题总结
桃酥403
贪心算法 算法 leetcode c++ 字符串
贪心算法day31|56.合并区间、738.单调递增的数字、贪心刷题总结56.合并区间738.单调递增的数字贪心刷题总结56.合并区间以数组intervals表示若干个区间的集合,其中单个区间为intervals[i]=[starti,endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例1:输入:intervals=[[1,3],[2,6],[8,
力扣刷题--SQL部分
大城市里的小麻雀
力扣刷题总结:(简单)175:组合两个表题意:有两个表A与B,不管A在B中有没有对应的值,也要查询出来解决:leftjoin(简单)182:查找重复的电子邮箱题意:一个表A,找出出现重复的记录刚开始看到这个题的时候,是蒙的,如果只从字面分析这个题,数据库没有一个函数可以实现这个查询.如果换个角度看问题,先把数据进行分组,只要分组以后过滤行数>1的肯定就是出现重复的数据了.解决:groupby之后h
秋招力扣Hot100刷题总结——堆
番茄炒西红柿炒蛋
秋招Java后端 力扣刷题 leetcode 算法 java
1.数组中的第K个最大元素题目链接题目要求:给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。代码及思路使用小根堆来解决,遍历数组,将元素放入堆中当堆的大小大于k时,将堆顶元素弹出最终堆中元素是数组中最大的k个元素,且堆顶是其中最小的代码classSolutio
【字符串算法】刷题总结
一米の阳光
算法 字符串
文章目录字符串一、c++字符串基本操作二、字符串hash三、字典树四、KMP算法字符串笔记参考《算法竞赛从入门到进阶》《算法竞赛进阶指南》一、c++字符串基本操作相关博客输入与输出chars1[100],s2[1001000];intl1,l2;scanf("%s",s1);//输入遇到回车结束l1=strlen(s1);//获取长度strings1;cin>>s1;//遇到换行或者回车结束cin
代码随想录算法训练营第三十三天|509. 斐波那契数 ,● 70. 爬楼梯 , 746. 使用最小花费爬楼梯
白白白揍粽
算法
确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组代码随想录视频:从此再也不怕动态规划了,动态规划解题方法论大曝光!|理论基础|力扣刷题总结|动态规划入门_哔哩哔哩_bilibili509.斐波那契数代码随想录视频:手把手带你入门动态规划|LeetCode:509.斐波那契数_哔哩哔哩_bilibiliclassSolution{publicin
代码随想录训练营第三十八天| ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
Ljhh_h
算法
理论基础代码随想录视频:从此再也不怕动态规划了,动态规划解题方法论大曝光!|理论基础|力扣刷题总结|动态规划入门_哔哩哔哩_bilibili动态规划五部曲:确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组509.斐波那契数代码随想录视频:手把手带你入门动态规划|LeetCode:509.斐波那契数_哔哩哔哩_bilibiliintfib(int
【LeetCode】刷题总结 - 15. 三数之和
yubinCloud
LeetCode leetcode 算法
15.三数之和|LeetCode思路首先对nums进行排序,然后设置三个指针:left、mid、right:left从最左边开始,依次向后遍历每次固定住left后,就化为一个2sum问题:mid=left+1,right=nums.length-1,计算sum如果sum大于0,则right向后走;如果sum小于0,则mid向前走;等于0则加入结果集并让right和mid均走一步注意点:⚠️left
【第八届】蓝桥杯JavaB组刷题总结
小白不菜ly
蓝桥杯JavaB组刷题 Java基础 蓝桥杯 java 职场和发展
第一题:购物单题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞
算法刷题day01
lijiachang030718
# 算法刷题 算法
目录引言一、数的范围二、数的三次方根三、机器人跳跃问题四、四平方和五、分巧克力问题六、总结引言搞这个算法刷题系列主要是为了备战蓝桥杯而准备的,目前处于还正在看一些算法基础课程,要先把一些理论知识先给搞懂,然后写题的时候才能有套路的去解。为什么要写这个系列?由于深知学算法竞赛最重要的是不断地刷题总结,所以为了避免自己陷入误区,所以开始一边刷题,先刷之前已经学过的类型的题,两个拳头打人,才能事半功倍。
【每日一题】 2024年1月汇编
A_SHOWY
算法 力扣 c++
博客主页:A_SHOWY系列专栏:力扣刷题总结录数据结构云计算数字图像处理力扣每日一题_【1.4】2397.被列覆盖的最多行数2397.被列覆盖的最多行数https://leetcode.cn/problems/maximum-rows-covered-by-columns/这个题目真的太巧妙了,运用这种位运算来模拟这个数组,然后,将数组用位运算以后的二进制和存储,然后,用位运算设置limit,给
【牛客刷题】约瑟夫环问题
代码菌@
LeetCode 刷题总结 c++ 开发语言 c语言 学习 笔记 刷题
博主:代码菌@-CSDN博客专栏:LeetCode刷题总结_代码菌@的博客-CSDN博客目录前言题目题解全代码展示前言题目根据题目,这是一道让我们手搓链表的一道题目,并且是一个环形链表,即最后一个节点指向头结点。题解1.首先我们要创建一个链表List,节点的值为1~n。2.实现约瑟夫环,有一个cur指针指向第一个节点,开始循环链表,直到链表中只剩一个节点时,退出循环,即cur==cur->next
刷题总结 1.25 1.26(有没看懂的题)
小白冲冲冲123
算法
非空广义表的第一个元素称为表头,他可以是一个单元素,也可以是一个子表;所以选D。广义表(GeneralizedList)是一种数据结构,它可以用于表示多层次的、具有递归结构的数据。广义表可以包含数据项和子广义表,数据项可以是任意类型的数据,而子广义表则是一个嵌套的广义表。广义表可以用于表示复杂的数据结构,例如树、图等。它可以提供一种灵活、递归的方式来组织和处理数据。在编程语言中,广义表通常作为一种
JAVA学习笔记——第五章 控制结构
A_SHOWY
JAVA零基础开始 java 开发语言
博客主页:A_SHOWY系列专栏:力扣刷题总结录数据结构云计算数字图像处理力扣每日一题_流程控制总体介绍:决定程序是如何执行的,主要包括顺序控制、分支控制和循环控制顺序控制顺序控制:程序从上到下逐行执行,没有任何判断跳转一个变量必须要先定义再使用分支控制if-else1)单分支例题:importjava.util.Scanner;publicclassdemo1{publicstaticvoidm
JAVA学习笔记——第六章 数组
A_SHOWY
JAVA零基础开始 java
博客主页:A_SHOWY系列专栏:力扣刷题总结录数据结构云计算数字图像处理力扣每日一题_数组可以存放多个同一类型的数据,是一种数据类型,是引用类型即:数组就是一组数据doubletotal=0;double[]hens={1,2.1,3.2,5,6,7,9};for(inti=0;iarr[index]){Max=arr[i];index=i;}}System.out.println(Max);S
【周赛】第382场周赛
A_SHOWY
算法 力扣
博客主页:A_SHOWY系列专栏:力扣刷题总结录数据结构云计算数字图像处理力扣每日一题_从这一场(第382场周赛)周赛开始记录,目标是尽快达到准确快速AC前三道题,每场比赛稳定在前1000名,故总结每场比赛的前三个题目。【1】按键变更的次数100215.按键变更的次数https://leetcode.cn/problems/number-of-changing-keys/这个题目过于简单,追求速度
LeetCode 刷题总结 【未完待续】
Léon's Blog
leetcode 算法 职场和发展
双指针快慢指针27.移除元素26.删除有序数组中的重复项左右指针排序快速排序位运算2859.计算K置位下标对应元素的和
2024.1.14~1.20 周内刷题总结
best_brain
个人总结 内容总结 算法 c++ 经验分享 动态规划 图论
2024.1.14~1.20周内刷题总结[ABC158F]RemovingRobots题解[ABC145F]Laminate题解[ABC254G]Elevators题解(坑点总结)[ARC160C]PowerUp题解[ABC203F]Weed题解Shopping时代的眼泪[ABC158F]RemovingRobots题解\qquad题面\qquad本题的连锁反应显然在指引我们建图。但是建出DAGD
刷题总结 1.22
小白冲冲冲123
算法
kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置。常规方法是遍历O的每一个位置,然后从该位置开始和f进行匹配,但是这种方法的复杂度O(nm)。kmp算法通过一个O(m)的预处理,使匹配的复杂度降为O(n+m)。二分查找中的表中数据可以是任意类型的,只要能够进行比较操作即可。常见的数据类型可以是整数、浮点数、字符串等。对于自定义类型,可以
JAVA学习笔记——第四章 运算符
A_SHOWY
JAVA零基础开始 java 开发语言
博客主页:A_SHOWY系列专栏:力扣刷题总结录数据结构云计算数字图像处理力扣每日一题_运算符是一种特殊的符号,用于表示数据的运算、赋值和比较算数运算符取模%的本质:a-(int)a/b*b//当a是小数时publicclassHello{publicstaticvoidmain(String[]args){System.out.println(10%3);//1System.out.printl
回文自动机模板
现在我也是
一些模板 算法
构建了回文树,求出了以每个位置结尾的回文串的数量#includeusingnamespacestd;#definelllonglonglllen[2000005],trie[2000005][26],num[2000005],fail[2000005];charstr[2000005];llsize=0,now=0,ans=0,tot=1;llget_fail(llx,lly)//寻找最大符合要求
刷题总结1.17 下午
小白冲冲冲123
算法
第五题的平面图,偶图不理解第三题为什么使用克鲁斯卡尔算法?旅行商问题(TravelingSalesmanProblem,TSP)是一个著名的组合优化问题,描述的是一个旅行商要在给定的一系列城市之间找到最短的路径,使得每个城市只访问一次,并最终回到起点城市。旅行商变种问题是对旅行商问题的一些扩展或变化,通常包括以下几个方面:1.多旅行商问题(MultipleTravelingSalesmanProb
刷题总结1.18 下午 (堆)
小白冲冲冲123
算法
关联数组”是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或者其他类型的值(除了NULL)来索引它。关联数组和数组类似,由以名称作为键的字段和方法组成。它包含标量数据,可用索引值来单独选择这些数据,和数组不同的是,关联数组的索引值不是非负的整数而是任意的标量。这些标量称为Keys,可以在以后用于检索数组中的数值。关联数组的元素没有特定的顺序,你可以把它们想象为一组卡片。每张
刷题总结1.19
小白冲冲冲123
算法
这句话是不正确的。当对链接队列进行出队操作时,front指针会发生变化。链接队列是一种基于链表实现的队列数据结构。队列的特点是先进先出,即首先进队的元素将首先出队。在出队操作中,我们需要移动front指针,将其指向下一个元素。这样,队列的第一个元素就被移除了。因此,每当进行出队操作时,front指针都会发生变化。
JAVA学习笔记——第二章 JAVA概述
A_SHOWY
JAVA零基础开始 java 开发语言
博客主页:A_SHOWY系列专栏:力扣刷题总结录数据结构云计算数字图像处理力扣每日一题_JAVA概述程序:计算机执行操作或者解决问题的一系列有序指令的集合JAVA重要特点1.JAVA是面向对象的(oop)2.JAVA语言是健壮的(强类型机制、异常处理、垃圾自动收集)3.JAVA是跨平台性的(一个编译好的.class文件可以在多个操作系统下运行的特性),原因是有JVM,不同操作系统JVM不同4.JA
JAVA学习笔记——第三章 变量
A_SHOWY
java
博客主页:A_SHOWY系列专栏:力扣刷题总结录数据结构云计算数字图像处理力扣每日一题_变量变量是程序的基本组成单位,是内存中的一个数据存储空间。变量有三个基本要素:类型+名称+值。变量的使用,声明后赋值后即可使用变量使用注意事项:同c++很类似程序中+号使用:左右都是数值型的时候,做加法运算,当有其中一边是字符串的时候,做拼接运算。数据类型基本数据类型+引用数据类型整型细节JAVA整型常量默认值
算法随想录第三十八天打卡| 理论基础 , 509. 斐波那契数, 70. 爬楼梯 , 746. 使用最小花费爬楼梯
星曜366
算法
理论基础无论大家之前对动态规划学到什么程度,一定要先看我讲的动态规划理论基础。如果没做过动态规划的题目,看我讲的理论基础,会有感觉是不是简单题想复杂了?其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!如果做过动态规划题目的录友,看我的理论基础就会感同身受了。代码随想录视频:从此再也不怕动态规划了,动态规划解题方法论大曝光!|理论基础|力扣刷题总结|动态规划入门_哔哩哔哩_b
ctfshow命令执行刷题总结
XiLitter
# 基础漏洞 php 开发语言 web安全
过滤system函数和phpif(!preg_match("/flag|system|php/i",$c)){eval($c);}那还有其他函数可以使用,比如说passthru()exec()shell_exec()popen()proc_open()pcntl_exec()可以使用的payload有c=echo`nlfl''ag.ph''p`;c=echo`catf*`;c=echo`nlfla
代码随想录算法训练38 | 动态规划part01
纽北KING
LeetCode刷题训练 算法 动态规划
理论基础无论大家之前对动态规划学到什么程度,一定要先看我讲的动态规划理论基础。如果没做过动态规划的题目,看我讲的理论基础,会有感觉是不是简单题想复杂了?其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!如果做过动态规划题目的录友,看我的理论基础就会感同身受了。代码随想录视频:从此再也不怕动态规划了,动态规划解题方法论大曝光!|理论基础|力扣刷题总结|动态规划入门_哔哩哔哩_b
力扣刷题总结一:模拟+哈希表+双指针+前缀和+滑动窗口
夏日、荷花&你
力扣刷题 leetcode 散列表 算法
模拟根据题目意思,捋清整个流程,使用代码去模拟整个流程例题种花问题classSolution:defcanPlaceFlowers(self,flowerbed:List[int],n:int)->bool:#模拟,在数组前后各添加1个0,从第1个元素到倒数第2个元素,判断元素是否为0且左右都为0则可插入flowerbed.insert(0,0)flowerbed.append(0)res=0fo
考研失败经验
树袋熊os
考研失败党来一发,千万不要多看秀成绩,秀经验的,否则你会认为考研很容易。三大法宝,万物皆准,缺一不可。统一战线,武装斗争,党的建设。1找个伙伴真有用,你的自控能力没知乎er那么强。2考研可hack,渣渣考研不过还是应试教育。找技巧,多刷题总结才是王道,暴力破解掉。这是一场武装斗争,武装加战争,没有和解可能。3思想层次。大多数人总想着考不上要失败,或眼高手低失败。不要想自己考上考不上,考研不是打仗阶
java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
电驴链接在线视频播放源码
dubinwei
源码 电驴 播放器 视频 ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
Javascript中函数的toString()方法
周凡杨
JavaScript js toString function object
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
SpringMVC的各种参数绑定方式
Harry642
springMVC 绑定 表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
Java 获取Oracle ROWID
aijuans
java oracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
java获取方法的参数名
antlove
java jdk parameter method reflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java 正则表达式 替换 提取 查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
Java中equals()与hashCode()方法详解
bijian1013
java set equals() hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle 数据库 plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
kafka获得最新partition offset
blackproof
kafka partition offset 最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
[JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件 滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
C语言算法之水仙花数
qiufeihu
c 算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include