算法模板
文章平均质量分 65
来一块提拉米苏
加油
展开
-
strstr函数的使用
strstr函数的使用其实就是匹配(比KMP简单)/**匹配l串中是否存在s串并返回s第一次出现的位置**/#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int main(){ int k; char s[50]; c...原创 2017-01-13 21:34:19 · 443 阅读 · 0 评论 -
set的基本使用
set的英文意思是“集合”, 集合都不陌生吧,集合的特点有唯一性,即:每一个元素只有一个,所以set可以用来“去重”操作,set还有默认的排序。 1、头文件—— 2、定义——setQ; 3、输入(插入)——insert(x); 4、有序输出 set::iterator it; for(it = Q.begin(); it != Q.end(); it++) cout原创 2017-03-14 19:48:21 · 885 阅读 · 0 评论 -
java大数
import java.util.*;import java.math.*;public class Main{ public static void main(String args[]) { Scanner cin = new Scanner(System.in); BigInteger a, b; //以文转载 2017-03-18 20:08:28 · 310 阅读 · 0 评论 -
hdu1166敌兵布阵(线段树)
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 84669 Accepted Submission(s): 35751Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以原创 2017-03-17 20:27:21 · 186 阅读 · 0 评论 -
uva Euclidean TSP (三分)
Euclidean TSP题目很难懂,就是给出两个公式,求c的最小值,有于关于c的函数单调性不是在1-100内单调的,所以不能用二分来逼近c的,所以就有了三分法(参考博客)利用三分来逼近最小值#include #include #include #include #include #include #include #include #include usi原创 2017-02-23 11:12:19 · 542 阅读 · 0 评论 -
uva Finding Lines
Finding Lines题目大意:给你n个点和一个概率,再给出n个坐标,问任意两点构成的直线,这条直线包含的点的个数比上n大于等于这个概率就输出possible,否则输出impossible。解题思路:n的范围是10的5次方,时间是20000毫秒,暴力枚举的时间复杂度是O(n^3),最大是10的15次方。所以枚举存在问题。于是就采用随机枚举的办法,写个随机数生产器,随机出1000(也可以原创 2017-02-23 08:42:15 · 304 阅读 · 0 评论 -
素数筛选法(素数筛)
素数筛选法 codeforces补题的时候有学了一遍素数筛,一般素数筛用于处理一大组数中找素数的快捷算法,比如从1~100000中找出所有的素数,如果一个一个的判断就比较慢了,时间复杂度就上来了,素数筛就很好的解决了这个问题。素数筛的原理是这样的比如有1~10000个数,从2开始,把2的倍数删了;再从3开始,把3的倍数删了;.......;最后把100的倍数删了。1、为什么从2开始...原创 2017-01-13 10:20:29 · 296 阅读 · 0 评论 -
大数的阶乘
准确计算大数的阶乘注意:要提前预算结果的位数。#include #include const int maxn = 3000;int f[maxn];int main(){ int i, j, n; while(~scanf("%d", &n)) { memset(f, 0, sizeof(f)); f[0] = 1;原创 2017-01-16 20:20:26 · 262 阅读 · 0 评论 -
循环节
循环节 寻找循环节也是长遇见的问题之一,对于字符寻找循环节,可以掐开头一段作为子串和母串进行比较有一班的算法,也有KMP,还有就是strstr函数。 对于数组的一般算法就是下面的寻找方法。#include #include using namespace std;int main( ){ int b[100]; int n, i, j;原创 2017-01-14 19:22:03 · 399 阅读 · 0 评论 -
分解质因数
分解质因数的两个模板#include#include#includeint main(){ int n,i; int a[100000]; scanf("%d",&n); int j = 0; for(i=2; i<=sqrt(n); i++) { if(n%i==0) { n/=原创 2017-01-14 10:42:22 · 647 阅读 · 0 评论 -
快速幂
快速幂模板,如果看不懂就自己模拟一遍试试,模拟过后就清楚了;/**n的m次方**/int pows(int n, int m){ int t = 1; while(m) { if(m%2 != 0) { t = (t*n); m--; } n原创 2017-01-13 21:39:14 · 203 阅读 · 0 评论 -
最大间隔问题
最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。网上有很多代码,但没有图解,自己画了几张图帮助理解。代码:#include &amp;amp;lt;stdio.h&amp;amp;gt;#define INF 1&amp;amp;lt;&amp;amp;lt;30struct node{ double left,right; do原创 2019-02-07 21:07:31 · 487 阅读 · 0 评论