- 博客(10)
- 收藏
- 关注
转载 最长回文子串 最长回文子序列
1.最长回文子序列(可以不连续)#include<iostream> #include<string> #include<algorithm> #include<bits/stdc++.h>using namespace std; //递归方法,求解最长回文子序列 int lps(char *str, int i, int j) { if (i == j) return 1; //只
2020-08-09 17:32:08 196
原创 1384 全排列
给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = “1312”,输出为:112311321213123113121321211321312311311231213211输入输入一个字符串S(S的长度 <= 9,且只包括0 - 9的阿拉伯数字)输出输出S所包含的字符组成的所有排列输入样例1312输出样例11231132121312311312132121132131231131123121
2020-08-09 17:20:58 108
原创 最长公共子序列(LCS)
1.求LCS长度输入:abcfbc abfcabprogramming contestabcd mnp输出:420#include <cmath>#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm> using namespace std; char a[1001],
2020-08-09 16:20:27 93
原创 常用数论板子
费马小定理:欧拉定理:若正整数 a , n 互质,则 aφ(n)≡1(mod n) 其中 φ(n) 是欧拉函数(1~n) 与 n 互质的数。费马小定理:对于质数p,任意整数a,均满足:a的p次幂≡a(mod p)欧拉定理的推论:若正整数a,n互质,那么对于任意正整数b,有a的b次幂≡a的b mod φ(n)次幂(mod n)(因为mod是质数,那么φ(mod)= mod-1)快速幂:int quick(int a,int b,int c) { int ans=1;
2020-08-09 13:58:56 224 1
原创 威佐夫游戏
威佐夫游戏:有两堆各若干个物品,两个人轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最后取光者胜利。经典博弈,推导过程可以去别处看,结论就是,a = (int) ((b - a)*1.618),先手胜利1.618 = (sqrt(5.0) + 1) / 2代码:#include <cstdio>#include <cstring>#include <stack>#include <queue>#
2020-08-07 20:29:04 266
原创 EditDis(编辑距离模板)
int dp[1005][1005]; /*dp[i][j]表示表示A串从第0个字符开始到第i个字符和B串从第0个字符开始到第j个字符,这两个字串的编辑距离。字符串的下标从1开始。*/char a[1005],b[1005]; //a,b字符串从下标1开始 int EditDis(){ int len1 = strlen(a+1); int len2 = strlen(b+1); //初始化 for(int i=1;i<=len1;i++)
2020-08-07 14:49:43 288
转载 RMQ(ST算法)一看就会
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值。本文介绍一种比较高效的ST算法解决这个问题。ST(Sparse Table)算法可以在O(nlogn)时间内进行预处理,然后在O(1)时间内回答每个查询。1)预处理设A[i]是要求区间最值的数列,F[i, j]表示从第i个数起连续2^j个数中的最大值。(DP的状态)例如:A数列为:3 2 4 5 6
2020-08-07 10:01:31 251
原创 有理数
题意:给出p,q,输出不大于p/q的最大整数。思路:如果p整除q的话输出p/q-1,如果不整除,输出p/q向下取整。如果只用/号进行向下取整的话会存在精度问题。代码:#include <cstdio>#include <cstring>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#includ
2020-08-06 22:57:29 195
原创 简单题2
题意:就是一道数学题。思路:设读入的是m,j,s,等式为m的e次幂=j*s,,那求s就好求了。唯一的知识点就是e可以用exp(1.0)表示。exp表示取自然对数e的n次方的值。代码:#include <cstdio>#include <cstring>#include <stack>#include <queue>#include <map>#include <set>#include <vector>
2020-08-06 22:42:50 116
原创 计算十进制数在二进制中1的个数
O(logn) 的解法:int count = 0;while(n != 0){ if(n % 2 == 1) { count++; } n = n >> 1;}O(n) 的解法:int main() { int n,i; int f[1001]; f[0] = 0; scanf("%d", &n); for(i = 1; i <= n; i++
2020-08-02 12:41:25 472
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人