3 ThreeWater-

尚未进行身份认证

暂无相关简介

等级
TA的排名 2w+

可持久化trie树

https://www.nowcoder.com/acm/contest/104/H就是区间里找一个值和x异或起来最大,多次查询#include<bits/stdc++.h>usingnamespacestd;typedefdoublell;constintN=1e5+5;structnode{intc[2],val;}tree[N*40...

2018-04-26 19:18:04

主席树poj2104

主席树:其实就是开了n个前缀线段树,但是每次只更新logn个节点信息,达到可以利用历史信息来求得所需答案 其最简单的应用就是区间第k大 以下是大致的建树过程 #include<cstdio>#include<algorithm>#include <iostream>using namespace std;const int N=1e5+10;...

2018-04-26 10:37:15

划分树(数第几大)

#include <bits/stdc++.h>using namespace std;const int N=1e5+10;int tree[30][N];//表示每层每个位置的值int sorted[N];//已经排序好的数int toleft[30][N];//表示第i层从1到i有数分入左边void build(int l,int r,int dep){ if(l==r)

2017-11-07 19:52:53

线性基+树链剖分(bzoj4568)

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=20005;const int m_base=60;ll read(){ long long x=0,f=1; char ch=getchar(); while (ch<'0' || ch>'9') {if (ch=

2017-11-03 22:49:41

矩阵快速幂(new 模板

第一种ju jumul(ju a,ju b){//矩阵乘法 int i,j,k; ju c; c.CSH(); for(i=0;i<n;i++) for(j=0;j<n;j++) if(a.a[i][j]) for(k=0;k<n;k++) c.a[i]

2017-10-20 20:06:22

2-sat模版(转自acm再见)

//2-sat模版const int maxn=10005*3;int n,m;int a[maxn],b[maxn];struct note{ int to; int nxt;}edge[maxn*2];int head[maxn];int ip;int dfn[maxn],low[maxn],sccno[maxn],cnt,scc,instack[maxn];

2017-10-18 21:25:50

线段树模板

#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls l,mid,rt<<1#define rs mid+1,r,rt<<1|1inline int MAX(int a,int b) {return a>b?a:b;}const int N=50005;int sum[N<<2];voi

2017-10-10 18:30:33

hdu6184 (过题全靠抖

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;int vis[N];vector<int> q[N],low,up;unordered_set<ll> mp;unordered_map<ll,int> cnt;int main(){ int n,m;

2017-09-06 16:08:12

三元环的个数

#include<bits:stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;int vis[N];vector<int> q[N],low,up;set<ll> mp;int main(){ int n,m; while(~scanf("%d%d",&n,&m)) {

2017-09-06 15:20:35

hdu6191(字典树合并)

字典树合并,记得释放内存#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;inta[100005];vector<pair<int,int>>que[100005];vector<int>qq[100005];intans[100005];structnode{structnode

2017-09-05 17:39:12

线性序列 模版

typedeflonglongll;//线性序列求第n项constllmod=1000000007;llquick_pow(lla,llb){llres=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}returnres;}constintN=10010;llres[N],base[N],_c[N]

2017-08-26 14:41:05

异或的应用

从一堆其他数都出现偶数次,只有一个数出现奇数次,O(n)求这个数异或一遍即可。从一堆其他数都出现偶数次,只有两个数出现奇数次,O(n)求这两个数。先异或一遍,得a^b的值,然后找到一位为1的位置,则a位置上为1,b位置为0(或反之)这样就能将所有数,分成两组,该位为0和该位为1的情况,分别异或一遍,得a,b

2017-08-17 09:42:31

1~n的异或和

llxor_n(lln){llt=n&3;if(t&1)returnt/2ull^1;returnt/2ull^n;}

2017-08-17 09:39:13

C++11 lambda表达式

很多语言都提供了 lambda 表达式,如 Python,Java 8。lambda 表达式可以方便地构造匿名函数,如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么不妨将他们重构成 lambda 表达式。C++11 的 lambda 表达式规范如下:[ capture ] ( params ) mutable exception attribute -> ret { body }

2017-08-15 09:42:07

hdu6069

先枚举素因子,再枚举区间,每次跨越素数长度#include<bits/stdc++.h>using namespace std;typedef long long ll;int INF=0x3f3f3f3f;ll p[200005],cn=0,d[1000005];ll aa[1000005],bb[1000005];int main(){ for(ll i=2; i<=100

2017-08-06 14:07:35

HDU4609 NTT||FFT

先用NTT求出两两组合的方案数 然后就能o(n) 求出能组成三角形的方案数 NTT:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=4e5+10;const ll mod=( 1ll << 47 ) * 7 * 4451 + 1 ;const ll g=3;ll mul( ll

2017-08-02 22:20:14

51nod扒下来的蜜汁大数乘法

#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iomanip>#include<stdlib.h>#include <time.h>using namespace std;typedef long long ll;typedef un

2017-08-02 15:23:00

FFT&&FWT&&NTT

FFT是计算卷积的,就是 FFT大数乘法模版:#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int N = 500005;const double pi = acos(-1.0);char s1[N],s2[N];int len,res[N]

2017-08-02 15:22:00

hdu6059 字典树维护数位统计异或对数

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e5+5;void read(int &ret){ret=0;char ch=getchar();while(ch<'0'||ch>'9') ch=getchar();for(;ch>='0'&&ch<='9';ch=getchar())

2017-08-02 14:53:24

HDU 6058 维护最近k个比本身大的数

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e5+5;int read(){ int ret=0; char ch=getchar(); while(ch<'0'||ch>'9') ch=getchar(); for(; ch>='0'&&ch<=

2017-08-01 21:08:57

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!