我的模板(持续更新ing)[还很混乱]

1.头文件

短的:

 1 #include<bits/stdc++.h>
 2 #define cl(a,b) memset(a,b,sizeof(a))
 3 #define debug(a) cerr<<#a<<"=="<<a<<endl
 4 using namespace std;
 5 typedef long long ll;
 6 typedef pair<int,int> pii;
 7
 8 const int maxn=1e5+10;
 9
10 int main()
11 {
12
13     return 0;
14 }/*
15
16
17
18 */

长的:

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<string>
 7 #include<ctime>
 8 #include<map>
 9 #include<set>
10 #include<vector>
11 #include<queue>
12 #include<cstdlib>
13 #include<cassert>
14 #include<sstream>
15 #include<stack>
16 #include<list>
17 #include<bitset>
18 #define cl(a,b) memset(a,b,sizeof(a))
19 #define debug(x) cerr<<#x<<"=="<<(x)<<endl
20 using namespace std;
21 typedef long long ll;
22 typedef long double ldb;
23 typedef pair<int,int> pii;
24
25 const int inf=0x3f3f3f3f;
26 const int maxn=1e9+10;
27 const int mod=1e7+7;
28 const double eps=1e-8;
29 const double pi=acos(-1);
30
31 int dx[8]= {0,0,1,-1,1,-1,1,-1};
32 int dy[8]= {1,-1,0,0,-1,1,1,-1};
33
34 ll gcd(ll a,ll b){return a?gcd(b%a,a):b;}
35 ll powmod(ll a,ll x,ll mod){ll t=1;while(x){if(x&1)t=t*a%mod;a=a*a%mod;x>>=1;}return t;}
36 //---------------------------------------ヽ(^。^)丿
37 int main()
38 {
39
40     return 0;
41 }
42 /*
43
44
45
46 */

超神读入挂

 1 namespace fastIO {
 2     #define BUF_SIZE 100000
 3     //fread -> read
 4     bool IOerror = 0;
 5     inline char nc() {
 6         static char buf[BUF_SIZE], *p1 = buf + BUF_SIZE, *pend = buf + BUF_SIZE;
 7         if(p1 == pend) {
 8             p1 = buf;
 9             pend = buf + fread(buf, 1, BUF_SIZE, stdin);
10             if(pend == p1) {
11                 IOerror = 1;
12                 return -1;
13             }
14         }
15         return *p1++;
16     }
17     inline bool blank(char ch) {
18         return ch == ‘ ‘ || ch == ‘\n‘ || ch == ‘\r‘ || ch == ‘\t‘;
19     }
20     inline void read(int &x) {
21         char ch;
22         while(blank(ch = nc()));
23         if(IOerror)
24             return;
25         for(x = ch - ‘0‘; (ch = nc()) >= ‘0‘ && ch <= ‘9‘; x = x * 10 + ch - ‘0‘);
26     }
27     #undef BUF_SIZE
28 };
29 using namespace fastIO;
30
31 int main()
32 {
33     while(read(n),!fastIO::IOerror)
34     {
35
36     }
37     return 0;
38 }

矩阵快速幂

 1 struct matrix
 2 {
 3     ll a[maxn][maxn];
 4     int row,col;
 5     matrix():row(maxn),col(maxn){cl(a,0);}
 6     matrix(int x,int y):row(x),col(y){cl(a,0);}
 7     void show()
 8     {
 9         for(int i=0; i<row; i++)
10         {
11             for(int j=0; j<col; j++)
12             {
13                 printf("%d%c",a[i][j],j==col-1?‘\n‘:‘ ‘);
14             }
15         }
16     }
17     inline ll* operator [] (int x)
18     {
19         return a[x];
20     }
21     inline matrix operator * (matrix x)
22     {
23         matrix tmp(row,col);
24         for (int i=0; i<row; i++)
25             for (int j=0; j<col; j++)
26                 for (int k=0; k<row; k++)
27                     tmp[i][j]=(tmp[i][j]+a[i][k]*x[k][j])%mod;
28         return tmp;
29     }
30     inline void operator *= (matrix x)
31     {
32         *this = *this * x;
33     }
34     matrix operator ^ (ll x)
35     {
36         matrix result(row,col),now=*this;
37         for(int i=0; i<row; i++)
38         {
39             result[i][i]=1;
40         }
41         while(x)
42         {
43             if(x%2) result*=now;
44             now*=now;
45             x/=2;
46         }
47         return result;
48     }
49 };

降维线段树

  1 #define ls getid(l,l+r>>1)
  2 #define rs getid((l+r>>1)+1,r)
  3 #define lson l,m,ls
  4 #define rson m+1,r,rs
  5
  6 typedef long long ll;
  7
  8 const int maxn = 1e5+10;
  9
 10 inline int getid(int x,int y)
 11 {
 12     return x+y|y!=x;
 13 }
 14
 15 ll rm[maxn<<1],col[maxn<<1];
 16
 17 void pushup(int l,int r,int rt)
 18 {
 19     rm[rt]=rm[ls]+rm[rs];
 20 }
 21
 22 void pushdown(int l,int r,int rt,int k)
 23 {
 24     if (col[rt])
 25     {
 26         col[ls] += col[rt];
 27         col[rs] += col[rt];
 28         rm[ls] += col[rt]*(k-(k>>1));
 29         rm[rs] += col[rt]*(k>>1);
 30         col[rt] = 0;
 31     }
 32 }
 33
 34 void build(int l,int r,int rt)
 35 {
 36     if(l == r)
 37     {
 38         scanf("%I64d",&rm[rt]);
 39         return ;
 40     }
 41     int m=l+r>>1;
 42     build(lson);
 43     build(rson);
 44     pushup(l,r,rt);
 45 }
 46
 47 void update(int L,int R,int c,int l,int r,int rt)
 48 {//区间更新
 49     if(L<=l && r<=R)
 50     {
 51         col[rt]+=c;
 52         rm[rt]+=c*(r-l+1);
 53         return ;
 54     }
 55     pushdown(l,r,rt,r-l+1);
 56     int m=l+r>>1;
 57     if( L <= m ) update(L,R,c,lson);
 58     if (R > m) update(L,R,c,rson);
 59     pushup(l,r,rt);
 60 }
 61
 62 void update(int p,int c,int l,int r,int rt)
 63 {//单点更新
 64     if(l==r)
 65     {
 66         rm[rt]+=c;
 67         return ;
 68     }
 69     int m=l+r>>1;
 70     if( p <= m ) update(p,c,lson);
 71     else update(p,c,rson);
 72     pushup(l,r,rt);
 73 }
 74
 75 ll query(int L,int R,int l,int r,int rt)
 76 {
 77     if( L<=l && r<=R )
 78     {
 79         return rm[rt];
 80     }
 81     pushdown(l,r,rt, r-l+1);
 82     int m=l+r>>1;
 83     ll ret = 0;
 84     if( L<=m ) ret += query(L,R,lson);
 85     if( m<R ) ret += query(L,R,rson);
 86     return ret;
 87 }
 88
 89 int main()
 90 {
 91     int n,m;
 92     scanf("%d%d",&n,&m);
 93     char str[2];
 94     build(1,n,1);
 95     while(m--)
 96     {
 97         int l,r,x;
 98         scanf("%s",str);
 99         if(str[0]==‘Q‘)
100         {
101             scanf("%d%d",&l,&r);
102             printf("%I64d\n",query(l,r,1,n,1));
103         }
104         else
105         {
106             scanf("%d %d %d", &l, &r, &x);
107             update(l, r, x, 1, n, 1);
108         }
109     }
110     return 0;
111 }

字典树求异或值

 1 typedef long long ll;
 2
 3 const int maxn=1e5+10;
 4
 5 struct t
 6 {
 7     ll tree[32*maxn][3];//字典树的树部分
 8     ll val[32*maxn];//字典树的终止节点
 9     ll cnt;//字典树的大小
10     void init() //初始化字典树
11     {
12         cl(tree,0);
13         cl(val,0);
14         cnt=1;
15     }
16     void add(ll a)
17     {
18         int x=0,now;
19         for(int i=32; i>=0; i--)
20         {
21             now=((a>>i)&1); //当前位数
22             if(tree[x][now]==0) //没有的这个节点的话 加入这个节点
23             {
24                 cl(tree[cnt],0);
25                 val[cnt]=0;
26                 tree[x][now]=cnt++;
27             }
28             x=tree[x][now];
29         }
30         val[x]=a; //结尾标记
31     }
32     ll Search(ll a) //查找字典树中和a异或起来最大的值
33     {
34         int x=0,now;
35         for(int i=32; i>=0; i--)
36         {
37             now=!((a>>i)&1);
38             if(tree[x][now]) //如果和当前位相反的这个节点存在
39             {
40                 x=tree[x][now]; //那么继续找这个节点下的子树
41             }
42             else
43             {
44                 x=tree[x][!now]; //不存在就找自己这个节点下的子树
45             }
46         }
47         return val[x]; //结尾标记就是这个数字
48     }
49 } Trie;

lucas定理

 1 ll fac[maxn];
 2
 3 ll quick_pow(ll a,ll n)
 4 {
 5     ll ans=1;
 6     while(n)
 7     {
 8         if(n%2) ans=1ll*ans*a%mod;
 9         a=1ll*a*a%mod;
10         n>>=1;
11     }
12     return ans;
13 }
14
15 ll inv(ll a)
16 {
17     return quick_pow(a,mod-2);
18 }
19
20 void init()
21 {
22     fac[0]=1;
23     for(int i=1;i<maxn;i++)
24     {
25         fac[i]=1ll*fac[i-1]*i%mod;
26     }
27 }
28
29 ll C(ll a,ll b)
30 {
31     ll ans=1;
32     if(a<b || b<0) return 0;
33     while(a&&b)
34     {
35         ll aa=a%mod,bb=b%mod;
36         if(aa<bb) return 0;;
37         ans = 1ll*ans*fac[aa]%mod * inv(1ll*fac[bb]*fac[aa-bb]%mod)%mod;
38         a/=mod,b/=mod;
39     }
40     return ans;
41 }

O(n)预处理Cm n

 1 const int maxn=1e6+10;
 2 const int mod=1e9+7;
 3 ll fac[maxn],f[maxn],inv[maxn];
 4
 5 void init()
 6 {
 7     fac[0]=fac[1]=f[0]=f[1]=inv[0]=inv[1]=1;
 8     for(int i=2;i<maxn;i++)
 9     {
10         fac[i]=fac[i-1]*i%mod;   // n!
11         ll t=mod/i,k=mod%i;
12         f[i]=(mod-t)*f[k]%mod;  // n的逆元
13         inv[i]=inv[i-1]*f[i]%mod; // n!的逆元
14     }
15 }
16
17 ll C(ll n,ll m)
18 {
19     if(n<m) return 0;
20     return fac[n]*inv[m]%mod*inv[n-m]%mod;
21 }

自适应simpson积分

 1 double simpson(double a,double b)
 2 {
 3     double c=a+(b-a)/2;
 4     return (f(a)+4*f(c)+f(b))*(b-a)/6;
 5 }
 6
 7 double asr(double a,double b,double eps,double A)
 8 {
 9     double c=a+(b-a)/2;
10     double L=simpson(a,c);
11     double R=simpson(c,b);
12     if(fabs(L+R-A)<=15*eps) return L+R+(L+R-A)/15.0;
13     return asr(a,c,eps/2,L)+asr(c,b,eps/2,R);
14 }
15
16 double asr(double a,double b,double eps)
17 {
18     return asr(a,b,eps,simpson(a,b));
19 }

日期公式

 1 int zeller(int y,int m,int d)
 2 {//计算星期几
 3     if(m<=2) y--,m+=12;
 4     int c=y/100;y%=100;
 5     int w=((c>>2)-(c<<1)+y+(y>>2)+(13*(m+1)/5)+d-1)%7;
 6     if(w<0) w+=7; return (w);
 7 }
 8
 9 int getid(int y,int m,int d)
10 {//计算每个日期的id 可以计算两个日期之间的天数
11     if(m<3) {y--;m+=12;}
12     return 365*y+y/4-y/100+y/400+(153*m+2)/5+d;
13 }
时间: 2024-10-08 10:14:26

我的模板(持续更新ing)[还很混乱]的相关文章

OI实用工具 持续更新ing

专为各种模拟赛设计的实用工具,还在持续更新中,隔段时间来看看会有惊喜 目前已经实现: 快速自动建立所有需要的文件夹和文件 自动导入模板 自定义缺省源 带计时的自动对拍 正在实现: 简单的配置文件 图形界面 自动编译 常见数据生成器 更友好的报错 更准确的计时 项目地址:https://github.com/sxyz2019/OIer-Auxiliary 下载(注:可能会落后代码几个版本,毕竟要测试) 欢迎提出BUG以及新功能的想法 原文地址:https://www.cnblogs.com/mxd

FireFox所支持的全部标签(持续更新ing)

近期研究上各个浏览器的差别,得到一些资料,FireFox眼下所支持的全部标签类型,持续更新,供大家參考和学习,不喜勿喷哦 http://mxr.mozilla.org/seamonkey/source/parser/htmlparser/src/nsElementTable.cpp

FireFox所支持的所有标签(持续更新ing)

最近研究上各个浏览器的区别,得到一些资料,FireFox目前所支持的所有标签类型,持续更新,供大家参考和学习,不喜勿喷哦 http://mxr.mozilla.org/seamonkey/source/parser/htmlparser/src/nsElementTable.cpp

来吧,IT小小鸟(持续更新ing)

我是一只小小小小鸟,想要飞呀飞呀却飞不高啊....... 有人冷冷应对:你飞不高是因为学的不够 [中国目前还是启蒙时代,路子一不留神就错了.我更建议通过大量阅读,从科学中获得方法:技术与创业获得财富:大时间周期进行自我监控.自我反思与自我练习,获得竞争优势:参与志同道合的社区,与自我驱动的人共事,获得友情的路子. 未来时代,商业合作与个人发展,日益"阳谋".可以持续性地利用信息不对称牟利的机会越来越少:反之,可以持续性地利用智力不对称谋利的机会越来越多.当然,我所定义的智力,是神经智力

收藏的iOS技术网站汇总(持续更新ing)

大牛博客 objc.io PS:经典,内容深而广 objc中国 NSHipster PS:很多小细节 NSHipster 中文版 唐巧的技术博客 PS:LZ是唐巧的脑残粉- OneV's Den 王巍 PS:喵神..不解释 Dev Talking PS:经常翻译国外技术博客 sunnyxx的技术博客 shinobicontrols-iOS8 PS:Day-By-Day 系列 超经典 shinobicontrols-iOS7 Kingiol Ding PS:翻译了Day-By-Day-iOS7系列

[模板][持续更新]欧拉回路与欧拉路径浅析

Luogu P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次.John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束. 每一个栅栏连接两个顶点,顶点用1到500标号(虽然有的农场并没有500个

比赛模板(持续更新中)

1.数据结构 (1)线段树单点更新 #include <cstdio> #include <cstdlib> #include <algorithm> #include <cstring> #include <cmath> #define MAXN (1<<19) using namespace std; int segTree[MAXN]; void update(int i, int lft, int rht, int index

Angular 学习资源汇总(持续更新ing)

AngularJS 是Google 推出的一套前端JS开发的 MV* (Model-View-Whatever)框架,它引入了一些编译器的概念,比如编译.链接,具有强大的双向数据绑定(Two-way binding)和前端模板功能(directive),使得我们可以轻易实现高服用.高可扩展性的脚本,大大提高编程的效率 鉴于国内Angular 的使用者比较少,这里主要汇总一些本人学习 Angular 以来看到的优质资源,一些是基本教程,一些是核心概念的讨论,还有一些是编程指导原则,希望对初学者有用

Neil_Zou 语录 持续更新Ing

1  既然选择了远方 Since I’ve chosen to go far 便只顾风雨兼程 I will just walk down the path I chose step by step ; 2 长了一颗红楼的心,偏生在水浒的世界,想交几个三国里的桃园朋友,但遇上的都是西游里的妖魔鬼怪; 3 有些人QQ明明显视2G.3G.4G.wifi.在线,但是不管你发多少条信息过去,他都不回你一条.但是有些人他明明不在线,你发过去他马上就回你. 这就像鲁讯说的那句话:有些人他活着,但他已经死了.有