模板

Trie

HIHOCODER1014
static final int N = (int)1e5+10;
static final int SIGMA=(int)27;
static int ch[][]=new int[N*10][SIGMA],sz;
static int var[]=new int[N*10];
static void insert(String x){int u=0;for(int i=0;i<x.length();i++){int c=x.charAt(i)-'a';if(ch[u][c]==0){for(int t=0;t<SIGMA;t++){ch[sz][t]=0;}ch[u][c]=sz;var[sz++]=0;}u=ch[u][c];var[u]++;}
}
static int search(String x){int u=0;for(int i=0;i<x.length();i++){int c=x.charAt(i)-'a';if(ch[u][c]!=0) u=ch[u][c];else return 0;}return var[u];
}
static void clear() {sz=1;var[0]=0;for(int i=0;i<SIGMA;i++) {ch[0][i]=0; }
}

KMP

HIHOCODER 1015

写法1

     static void getFail(char[] b) {int m=b.length,j=0;f[0]=f[1]=0;for(int i=1;i<m;i++) {while(j>0&&b[j]!=b[i]) j=f[j];if(b[j]==b[i]) j++;f[i+1]=j;}}static int kmp_count(char[] a,char[] b) {int n=a.length,m=b.length;int j=0,res=0;for(int i=0;i<n;i++) {while(j>0&&b[j]!=a[i]) j=f[j];if(b[j]==a[i]) j++;if(j==m) {j=0;res++;}}return res;}

写法2

    static void getFail(char[] b,int m) {int j=0;f[1]=0;for(int i=2;i<=m;i++) {while(j>0&&b[j+1]!=b[i]) j=f[j];if(b[j+1]==b[i]) j++;f[i]=j;}}static int kmp_count(char[] a,char[] b,int n,int m) {int j=0,res=0;for(int i=1;i<=n;i++) {while(j>0&&b[j+1]!=a[i]) j=f[j];if(b[j+1]==a[i]) j++;if(j==m) {j=0;res++;}}return res;}

Manacher

HIHOCODER1016
static final int N=(int)1e6+10;
static char a[]=new char[N],str[]=new char[2*N+5];
static int p[]=new int[2*N+5],len1,len2;
static void Init(){len1=a.length;str[0]='(';str[1]='#';for(int i=0;i<len1;i++){str[i*2+2]=a[i];str[i*2+3]='#';}len2=len1*2+2;str[len2]=')';
}
static int Manacher(){for(int i=0;i<len2;i++) p[i]=0;int id=0,mx=0,ans=0;for(int i=1;i<len2;i++){if(mx>i) p[i]=Math.min(mx-i,p[2*id-i]);else p[i]=1;for(;str[i+p[i]]==str[i-p[i]];p[i]++);if(p[i]+i>mx){mx=p[i]+i;id=i;}if(p[i]-1>ans) ans=p[i]-1;}return ans;
}

Tire图

HIHOCODER 1036
static int sz;
static final int N=1000005;
static class Node{Node(){post = 0;for(int i = 0; i < 26; i++)next[i] = 0;end = false;}int post;int next[]=new int[26];boolean end;
};static Node nodes[]=new Node[N];
//将str添加到trie图中
static void insert(String str){int cur=0;for(int i=0;i<str.length();i++){if(nodes[cur].next[str.charAt(i)-'a'] == 0)nodes[cur].next[str.charAt(i)-'a'] = ++sz;cur = nodes[cur].next[str.charAt(i)-'a'];}nodes[cur].end = true;
}
//为trie图中的每个点添加它指向的后缀点位置
static void addPost(){LinkedList<Integer> que = new LinkedList<Integer>();que.push(0);int cur;while(!que.isEmpty()){cur=que.pop();for(int i=0;i<26;i++){if(nodes[cur].next[i]!=0){que.push(nodes[cur].next[i]);if(cur != 0)//不是根结点,需要设置当前点的子节点的后缀=父结点的后缀经过i到达的点nodes[nodes[cur].next[i]].post = nodes[nodes[cur].post].next[i];}else //nodes[current].next[i] == -1当前点经过i没有可达的nodes[cur].next[i] = nodes[nodes[cur].post].next[i];}}
}//查找str
static boolean search(String str){int cur = 0;for(int i=0;i<str.length();i++){if(nodes[nodes[cur].next[str.charAt(i)-'a']].end)return true;cur = nodes[cur].next[str.charAt(i)-'a'];}return false;
}
static void Init() {sz=0;for(int i=0;i<=1000000;i++) {nodes[i]=new Node();}
}

转载于:https://www.cnblogs.com/zsyacm666666/p/7225889.html

ACM模板(Java)相关推荐

  1. 我的所有优质博客全部开源啦(我自己原创的《ACM模板》《算法全家桶》《算法竞赛中的初等数论》 PDF免费下载)

    你好呀ヾ(≧▽≦*)o 我是繁凡さん 这两年来我写了很多长篇文章,主要涉及数据结构,算法,程序设计竞赛,数学,计算几何等方面的内容: <数据结构>C语言版(清华严蔚敏考研版) 全书知识梳理 ...

  2. 线性求逆元模板_ZXBlog/ACM模板(C++).md at bb6f2522054d5370df79222461293721e8edede2 · cw1027/ZXBlog · GitHub...

    ACM模板(C++) 1.大数 加法,乘法模板 //题目链接 : http://poj.org/problem?id=2506 //题目大意 : 就是问你用2*1,1*2,2*2的砖拼成2*n的长方形 ...

  3. ACM中java的使用

    ACM中java的使用 转载自http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输 ...

  4. ACM中java的使用 (转)

    ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入:格式为:Scanner c ...

  5. ACM中java快速入门

    2019独角兽企业重金招聘Python工程师标准>>> ACM中java快速入门 附: Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特 ...

  6. acm java题_【转】ACM中java的使用

    ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...

  7. ACM模板 | 学习笔记 树相关

    持续更新中qwq 咕咕咕 此次update是在我原先自己的博客园博客的基础上进行更新的(隔了两年该忘的不该忘的都忘完了qwq),顺便整理一下我的acm模板QAQ (我保证2021.3.1开学之前搞完! ...

  8. ACM中java的使用(各种比赛中)

    转载自点击打开链接 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ci ...

  9. IO —— 下载模板java

    IO -- 下载模板java 一.业务前提 二.文件存放位置 三.JSP代码 四.下载功能的JS代码 五.下载功能的controller代码 六 导入文件 一.业务前提 下载模板,然后填写一些乘机人信 ...

  10. 从本地磁盘取出excel模板 java代码

    从本地磁盘取出excel模板 java代码 /*** Title: 导出资源预编模板Excel* @param session* @param response* @throws Exception* ...

最新文章

  1. Cf Round #403 B. The Meeting Place Cannot Be Changed(二分答案)
  2. c++调用mysql存储过程_C++中ADO调用MySQL存储过程失败,诡异的语法异常,求解中,附源码...
  3. P1080 国王游戏(贪心+高精度乘除及大数比较)
  4. oracle精简版_使用Entity Framework Core访问数据库(Oracle篇)
  5. 为什么80%的码农都做不了架构师?
  6. [深度学习] tensorflow1.x和tensorflow2.x对比与总结
  7. 滴滴业务中台构建实践,首次曝光
  8. 联想G480安装CentOS有线驱动
  9. Ubuntu无法联网解决方案
  10. AJAX框架构图插画,Zend Framework框架中实现Ajax的方法示例
  11. 芬兰建筑师帕特里克•艾瑞克森先生一行再次到访云创
  12. html调用腾讯视频,调用腾讯视频播放器APi代码
  13. MySQL5.7修改root账户密码
  14. SVM训练莺尾花数据集
  15. 什么是低电压处理器 笔记本CPU标准与低电压区别对比
  16. 分享一份软件测试项目(Python项目)
  17. 【C语言】七段显示器输出数字
  18. win10设置开机启动项_华硕主板如何设置开机第一启动项方法大全
  19. 我为什么选择Firefox作为主力浏览器
  20. 通过FFMpeg将MOV视频转为黑白通道的mp4(可设置上下/左右)

热门文章

  1. OMP与MP算法流程与代码
  2. Android事件处理
  3. 凸优化-Proximal GD
  4. 推荐系统-猜你喜欢设计
  5. 【2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) D】Count The Bits【数位DP】
  6. 对 n = 2,3,...,300, 判断那些 Mersenne 数 M_n=2^n-1 是素数 | matlab 源码
  7. python list平均数_数据分析之Python干货笔记
  8. Raki的读paper小记:NATURAL LANGUAGE INFERENCE OVER INTERACTION SPACE
  9. Raki的网络流24题题解总结
  10. mysql去掉两个最高分_Excel函数 去掉最高分和最低分取平均值?这个函数不可不知...