模板
_pkm_
love coding
展开
-
trie树
//maxn一般设置为串数量乘以串长度struct Trie{ int child[maxn][30]; int f[maxn]; int root,L; int newNode(){ cl(child[L],-1); f[L]=0; return L++; } void init(){ L原创 2016-08-07 10:01:36 · 194 阅读 · 0 评论 -
数值积分
数值积分,自适应辛普森算法#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false);cin.tie(0);#define LL long long#define pb push_back#define原创 2016-08-26 14:19:31 · 395 阅读 · 0 评论 -
HDU 5901 Count primes (区间素数个数)
题目链接 题意:计算区间[1,1e11]中的素数的个数 题解上给出了一些相关的知识 1,icpc 2, cf ,F. Four Divisors 3,cf,题解是一道论文题目了,拿来当做模板好了本题目: 模板1O(n(3/4))#include <bits/stdc++.h>#define ll long longusing namespace std;ll f[340000],原创 2016-09-21 09:15:30 · 811 阅读 · 1 评论 -
HDU 1043 Eight poj 1077 (八数码 启发式搜索)
题目链接 poj1077 hdu1043使用A*搜索就可以了 A*是bfs的一种优化,使用函数F做为每个节点的访问的优先级hdu的需要先判断是否有解,否则会tle,加上后跑了1000+ms poj的不用判断,也可以ac,跑了40+ms一个状态表示成一维的形式,求出除0之外所有数字的逆序数之和,也就是每个数字前面比它大的数字的个数的和,称为这个状态的逆序。 若两个状态的逆序奇偶性 相同,则可原创 2016-08-30 13:11:02 · 483 阅读 · 0 评论 -
HDU 4622 Reincarnation(字符串hash,hashMap,区间dp)
题目链接 题意:给出一个字符串,问区间的不同子串有几个 首先可以直接预处理出所有长度的字串的hash值,然后用区间dp维护。 区间dp的时候需要记录同一长度下的上一个相同hash值出现的位置,使用STL 的map会超时,所以需要手动写个hashMap,也就是hash加冲突处理。记录相同的hash上一次的位置//#include<bits/stdc++.h>#include<iostream>原创 2016-10-25 17:18:26 · 490 阅读 · 0 评论 -
HIHO #1196 : 高斯消元·二(异或方程组)
题目链接用高斯消元解异或方程组是一个经典的使用。本体是经典的开关问题,我们把每一个位置的开关状态用01表示, 然后可以列出30个方程,30个未知数,未知数表示开关状态,系数表示每个位置的开关的能够影响到的开关,题目给出的状态作为方程式的右边b向量,(Ax = b),然后直接高斯消元解#include<bits/stdc++.h>using namespace std;#define cl(a,原创 2016-08-26 17:12:38 · 530 阅读 · 0 评论 -
#1195 : 高斯消元·一(模板题)
题目链接高斯消元,使用列主元的方法即可。 如果使用浮点数计算的话,要注意精度问题,还有一个题目的讲解有个小问题,我的提问#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false);cin.tie(0);#d原创 2016-08-25 20:49:10 · 472 阅读 · 0 评论 -
全排列散列,康拓展开
把一个排列,在所有的排列的名次计算出来,以及给出一个名次还原这个排列,一般搜索的时候,用来标记,比如八数码/*O(n*n)全排列散列,康拓展开,康拓逆展开n数据范围,a[] 排列数组,下标1开始ans:排名,0开始*/int n = 9;void intToArray(int x,int a[]){ bool used[10];cl(used,false); int i原创 2016-08-29 16:32:46 · 730 阅读 · 0 评论