卡常模板

卡常模板,必背

 1 #pragma GCC optimize(1)
 2 #pragma GCC optimize(2)
 3 #pragma GCC optimize(3)
 4 #include<iostream>
 5 #include<cstdio>
 6 #include<ctime>
 7 #include<cstdlib>
 8 #include<cstring>
 9 #include<algorithm>
10 #define Ri register int
11 #define sswap(x,y) x^=y^=x^=y;
12 template <class T> T mmin(T x,T y){return(x)<(y)?(x):(y);}
13 template <class T> T mmax(T x,T y){return(x)<(y)?(y):(x);}
14 template <class T> T lowbit(T x){return ((x)&(-(x)));}
15 typedef long long ll;
16 using namespace std;
17 namespace io{
18     const int MT=5e7;
19     char buf[MT];ll c,sz;
20     void begin(){c=0;sz=fread(buf,1,MT,stdin);}
21     template<class T>
22     inline bool read(T &t)
23     {
24         while(c<sz&&buf[c]!=‘-‘&&(buf[c]<‘0‘||buf[c]>‘9‘))c++;
25         if(c>=sz)return false;
26         bool flag=0;if(buf[c]==‘-‘)flag=1,c++;
27         for(t=0;c<sz&&‘0‘<=buf[c]&&buf[c]<=‘9‘;c++)t=t*10+buf[c]-‘0‘;
28         if(flag==1)t=-t;return true;
29     }
30 }
31 template <typename _TpInt>
32 inline void write(_TpInt x)
33 {
34     if (x<0){
35         putchar(‘-‘);
36         write<_TpInt>(~x+1);
37     }
38     else {
39         if (x>9)write<_TpInt>(x/10);
40         putchar(x%10+‘0‘);
41     }
42 }
43 template <typename _ll>
44 inline void ...(_ll x)
45 {...}
46 int main(void)
47 {
48     io::begin();
49     io::read();
50     write();
51 }
52  

原文地址:https://www.cnblogs.com/mashiro-/p/9526186.html

时间: 2024-11-08 16:49:28

卡常模板的相关文章

[luogu1972][bzoj1878][SDOI2009]HH的项链【莫队+玄学卡常】

题目大意 静态区间查询不同数的个数. 分析 好了,成功被这道题目拉低了AC率... 打了莫队T飞掉了,真的是飞掉了QwQ. 蒟蒻想不出主席树的做法,就换成了莫队... 很多人都不知道莫队是什么... 一句话概括莫队:离线询问分块排序,玄学降低复杂度 那么这道题目就是简单的莫队模板套一下就好了,每一次看看更新的点是不是会对答案造成贡献就可以过掉了. 但是复杂度很明显是\(Q(\sqrt{n}m)\),成功T掉,加上玄学卡常,破罐子破摔了100+终于过掉了. #include <bits/stdc+

Codeforces 988D Points and Powers of Two 【性质】【卡常】

这道题关键在于想到两个性质,想到就好做了.这还是我做过的第一道卡常题 1.满足题目中条件的子集,其中元素个数不能大于3 2.如果最大子集为3的话,那一定是x-2^i,  k, x+2^i的形式,我们枚举x就好了,然后i的次数是log10^9:如果最大子集是2,那就是x,x+2^i的形式,同样枚举x:如果最大子集是1,输出a[1]就行 整体复杂度是O(n*logn*log10^9) 1 #include<iostream> 2 #include<set> 3 using namesp

bzoj4028 [HEOI2015]公约数数列(分块+卡常?)

被卡常卡到怀疑人生. 思维又难又卡常(可能是我写的太丑了)心态炸了. 最后还是照题解打的.(题解多了一个排序,似乎快了很多) 所以代码就不发了... 原文地址:https://www.cnblogs.com/Xu-daxia/p/9465265.html

论OI中各种玄学卡常

当你在写程序的时候一般出现过这种无比悲剧的情况: 你讨厌卡常?下面有二则小故事: 作为一个经常出题的人,其实很多时候出题时的画风是这样的:"我有一个绝妙的\(O(nlog^2n)\)的算法,我来出道题吧""咦怎么只能跑 \(5w\) 啊,好咸鱼啊,我要让它能跑 \(10w\),嗯现在 \(10w\) 只要 \(0.3s\) 了,要不努把力跑个 \(20w\) 吧"然后就没有然后了.. 开O2之后FFT会比不开快几倍? 不开\(O2\):\(NTT\)比\(FFT\)

[CSP-S模拟测试]:卡常题/b(基环树+DP)

题目描述 $ρ$有一个二分连通无向图,$X$方点.$Y$方点均为$n$个(编号为$1\sim n$).这个二分图比较特殊,每一个$Y$方点的度为$2$,一条黑色边,一条白色边.所有黑色边权值均为$a$,所有白色边权值均为$b$.选择一个$X$方点,代价为连接的所有边的权值之和.激活一个$Y$方点,需要选择至少一个与之相邻的$X$方点.现在,$ρ$想激活每个$Y$方点,他想知道最小的总代价.不过$ρ$很善良,他给你开了$O2$优化.这样你就不会被卡常了.当然,除非你真的连读入优化都不想写,或者常数

时间卡常技巧

以下内容出自: 时间卡常技巧 先放一句话镇场: 我觉得,卡常数的出题人都是xx,这违背了算法竞赛考察思路的初衷 ——LYD 推荐:论OI中各种玄学卡常 我们一般说的复杂度都是O(n)O(n^2)O(nlogn)是一个级别. 但是我们其实每一个步可能计算很多次,然后会乘上一个2*n,3*n,甚至10*n 我们都叫O(n) 这个乘上的数就是常数.有的时候,你(chu)自(ti)己(ren)的(sang)程(xin)序(bing)可(kuang)能(ka)常(chang)数(shu)太(qwq)大(Q

BZOJ 4867 分块+神tm卡常

思路: 注意到len<=10 按照权值max-min<=sqrt(n)*len 分块 记一下前缀和  每修改sqrt(n)次以后重新分块 修改的时候整块打标记  两边重构 (这题常数卡得要死   找同学要来fread才过) 查询的时候 就 二分答案 O(sqrt(n))判断 二分的上界要实时根据maxdeep变化才能过 //By SiriusRen #include<bits/stdc++.h> using namespace std; const int N=100050; in

【bzoj3240 &amp;&amp; 洛谷P1397】矩阵游戏[NOI2013](矩阵乘法+卡常)

题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法……然而我太弱了,一开始只想到了矩阵乘法的方法. 首先定义两个矩阵: $ A_{1} = \begin{bmatrix} a & b \\ 0 & 1 \end{bmatrix} $ $ A_{2} = \begin{bmatrix} c & d \\ 0 & 1 \end{bmatrix} $ 于是我们就可以得到这样

卡常神器——register 与 快速读入输出

快速读入模板 int read() { int s = 0, w = 1; char ch = getchar(); //getchar() 一次从键盘读入一个字符 while (ch <='0' || ch > '9') { if (ch == '-') w = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { s = s * 10 + ch - '0'; ch = getchar(); } return