- 博客(13)
- 收藏
- 关注
原创 KMP模板
KMP模板 #include <iostream> using namespace std; const int M = 1e5 + 10, N = 1e6 + 10; int m, n; char p[M], s[N]; int ne[M]; // int main() { cin >> m >> p + 1 >> n >> s + 1; //处理next数组 for(int i=2,j=0;i<=m;i++
2021-07-01 11:30:33
268
原创 N皇后问题优化
N皇后变形题 https://www.acwing.com/problem/content/1434/ 传统做法会在n=13时TL,学习了一下位运算。 传统回溯方法 #include<iostream> #include<algorithm> #include<math.h> #include<string.h> using namespace std; int a[15]; int num; int n; bool check(int x,int k) {
2021-01-26 21:30:43
365
原创 ST表模板和树状数组模板
ST表模板 ST表模板,时间复杂度0(nlogn)预处理,0(1)查询,0(nlogn)空间 a[i][j]表示从i开始长度为2^j的范围 int d[10000][25]; int mt[10000]; void initst() { for(int i=0;i<n;i++) a[i][0] = a[i]; for(int j=1;j<n;j++) //先循环j后循环i for(int i=0;i+1<<(j-1)<n;i++) { d
2020-05-25 11:50:15
345
原创 GUI答题程序
记录一下第一个GUI大程序,也是因为临近交作业的时候才临时抱佛脚,人的潜能总是无限的,因为时间紧而且很多知识都是刚学的,运用不太熟练,多见谅,以后有机会再优化一下代码,这里就放上主要代码(代码不全),若有兴趣可联系。 package ansapp; import javax.swing.*; import javax.swing.border.Border; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.even
2020-05-15 12:59:32
1170
4
原创 正方形(矩阵dp)
221.最大正方形(leetcode) 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 输出: 4 思路:我们用动态规划来考虑这个问题,dp[i][j]表示以i,j为右下角,所有数据为1的的最长边长,我们只需要求出所有dp[i][j]来,取最大值的平方就是最大面积。 如果该位置的值是 0,则 dp(i, j) = 0,因为当前位置不可能在由 1 组成的正方形中; 如果该位置的
2020-05-08 18:32:09
2357
原创 鸡蛋掉落问题
leetcode 887.鸡蛋掉落 #include<iostream> #include<vector> using namespace std; int superEggDropBS(int K, int N) { if (K == 1) return N; if (N == 1) return 1; vector<vector...
2020-04-11 22:11:00
392
原创 差分矩阵模板
差分矩阵 S[i, j] = 第i行j列格子左上部分所有元素的和 以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为: S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] + S[x1 - 1, y1 - 1]; #include<iostream> using namespace std; int a[1010][1010]; in...
2020-04-10 20:37:28
322
原创 高精度数的相加相减(大数相加/减)
高精度数相加 //A,B 为高精度的数列倒序 vector<int> add(vector<int>& A,vector<int>& B) { if(A.size()<B.size()) add(B,A); int t=0; vector<int> C; for(int i=0;i<A.size();i++) ...
2020-04-08 21:42:10
412
原创 快速排序算法模板和归并排序模板
快速排序算法模板(以中间为基准点) void quick_sort(int q[], int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ; while (q[i] &...
2020-04-06 19:26:11
430
原创 矩阵连乘问题
所谓矩阵连乘问题,就是用动态规划的方法来求出如何“分解”连乘式,例如A1A2A3可以分为两种计算方法,一种是(A1A2)A3,另一种是A1(A2A3),如果三个矩阵分别为10×100,100×5,5×50,则第一种所需要的乘法次数为7500,而第二种的乘法次数为75000。(m×n和n×p的的两个矩阵相乘所需要的乘法次数为m×n×p)。 我们需要两个二维数组m(i,j)用来表示第i个矩阵到第j个矩...
2020-03-16 11:21:05
2357
原创 整数划分(递归)
整数划分(一) n=m1+m2+…+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,…,mi}为n的一个划分。 如果{m1,m2,…,mi}中的最大值不超过m,即max(m1,m2,…,mi)<=m,则称它属于n的一个m划分。这里我们记n的m划分的个数为q(n,m); 根据m和n的关系可将问题划分为: 1.n或m<0时, q(n,m)=0; 2.n或m...
2020-02-24 19:32:48
516
原创 数论:快速幂,素数筛
文章目录快速幂素数普通素数筛欧拉筛 快速幂 int qupow(int a,int b,int m) { int ans=1; while(b!=0) { if(b%2==1) ans=ans*a%m; a=a*a%m; b=b/2; } return ans; } 位运算代码为 int qupow(int a,int b,int m) { int ans=1; ...
2020-02-20 14:36:49
361
原创 清除浮动
html清除浮动的常用方式 1.给父级加一个高度(高度要大于孩子的高度 第二个div中的内容和第一个div的内容在一行 若要清除浮动可以给div设一个高度(大等于li的高度)就能够清除浮动 2.给父级clear:both; 但是我们发现两行是紧挨着的,这是因为clear:both;会使盒子的margin失效。 所以我们可以在两个div之间加一个无任何内容的div,并把它clea...
2019-08-27 17:35:24
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅