
模板
maze_illusion
这个作者很懒,什么都没留下…
展开
-
笛卡尔树模板
int n,l[maxn],r[maxn],vis[maxn],stk[maxn];pair<int,int>a[maxn];void build(){ int top=0; for ( int i=1 ; i<=n ; i++ ) l[i]=0,r[i]=0,vis[i]=0; for ( int i=1 ; i<=n ; ...原创 2018-07-24 19:31:36 · 363 阅读 · 0 评论 -
黑科技开根号
int my_sqrt( float x ){ if ( x==0 ) return 0; float result = x; float xhalf = 0.5f*result; int i = *(int*)&result; i = 0x5f375a86-(i>>1); result = *(float*)&...原创 2018-09-28 13:09:54 · 605 阅读 · 0 评论 -
COGS 2639 多维偏序 分块+bitset解决偏序问题
编程思路:以bitset的01表示来代替此维有多少符合偏序,最后取k维偏序的交集即是答案使用分块加速原理,可以根据此维数字大小排名来分块预处理每一小块,查询时使用二分得到快速定位属于的块号,最后再暴力计算剩余的<=sqrt(n)个数字模板代码:#include<bits/stdc++.h>using namespace std;typedef long lo...原创 2018-09-15 10:08:54 · 727 阅读 · 0 评论 -
cdq分治(cdq分治套cdq分治套cdq分治)
COGS 2580(cdq分治求五维偏序)第一维:排序第二维:分治后标号处理第三维:分治后标号处理第四维:分治第五维:树状数组模板代码:#include<map>#include<set>#include<ctime>#include<stack>#include<cmath>#include<...原创 2018-09-14 14:22:14 · 608 阅读 · 0 评论 -
莫队算法
简单版本:将区间分成sqrt(n)块并将询问按照左端点的所在块序号排序,左端点块序号一样则按照右端点排序LL Gcd( LL a , LL b ){ return b==0?a:Gcd( b , a%b ); }struct Query{ int L,R,id;}Q[maxm];struct Ans{ LL a,b; void reduce() {...原创 2018-09-12 20:14:19 · 225 阅读 · 0 评论 -
DLX重复覆盖
const int maxn = 15*15+10;const int maxm = 15*15+10;const int maxnode = maxn*maxm;const int inf = 0x3f3f3f3f;struct DLX{ int n,m,sizes,H[maxn],S[maxm],ansd; int U[maxnode],D[maxnode],L[...原创 2018-09-12 12:25:20 · 402 阅读 · 0 评论 -
DLX精确覆盖
DLX精确覆盖:对于给定的01矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1数独转换为DLX精确覆盖求解:每个格子都要填入数字---001到081列,表示数独中9*9=81个格子是否填入数字。如果是,则选取的行在该列上为1。每一行都要有1~9填入---082到162列,每9列就代表数独中的一行,如果该行有某个数字,则其对应的列上为1每一列都要有1~9填入---163到243...原创 2018-09-12 11:15:02 · 402 阅读 · 0 评论 -
分块
int block;//每块大小int num;//块数int l[maxn];//第i块的左边界int r[maxn];//第i块的右边界int belong[maxn];//第i个位置属于那块void Build(){ block = sqrt(n); num = n/block; if ( n%block ) num++; for ( int i=1 ; i&l...原创 2018-09-12 09:59:53 · 225 阅读 · 0 评论 -
C++大整数模板
#define MAXN 9999#define DLEN 4class Bignum{private: int a[10010],len;public: Bignum(){ len=1; memset( a , 0 , sizeof(a) ); } Bignum( const int ); Bignum( const char* ); Bign...原创 2018-08-23 10:42:51 · 433 阅读 · 0 评论 -
快速读入模板
整数快读:inline bool scan_d( int &num ){ char in; bool IsN = false; if ( in==EOF ) return false; while ( in!='-'&&(in<'0'||in>'9') ) in = getchar(); ...原创 2018-08-15 11:04:51 · 413 阅读 · 0 评论 -
FHQ_Treap平衡树模板
struct FHQ_Treap{ struct fhq_treap { int l,r; int v,rnd; int sizes; }ftr[maxn]; int sizes,root,tmp; void Init() { sizes = root = 0; } ...原创 2018-07-31 16:49:29 · 490 阅读 · 0 评论 -
Treap平衡树模板
struct Treap{ struct node { int l,r; int v,rnd; int sizes,w; }tr[maxn]; int sizes,root,ans; void Init() { sizes = root = 0; } int Rand...原创 2018-07-31 13:27:26 · 192 阅读 · 0 评论 -
JAVA牛顿迭代法求大数开方
import java.io.*;import java.math.*;import java.util.*;public class Main { public static void main( String[] args ) throws Exception { Scanner cin = new Scanner(System.in); String nStr = ...原创 2018-09-28 16:39:15 · 409 阅读 · 0 评论