OI比赛常数优化】的更多相关文章

这是一篇玄学文章 一.编译优化 #pragma GCC optimize("O3") #pragma G++ optimize("O3") 预处理开O3优化 比赛时除非遇到常数很大可能会卡的暴力题否则一定不要用!玩火自焚! 二.I/O优化 核心:利用getchar()和putchar()这两个底层函数和位运算加速 输入优化(超逼格写法) #include<cstdio> #include<cctype> using namespace std…
注意:本文所介绍的优化并不是算法上的优化,那个就非常复杂了,不同题目有不同的优化.笔者要说的只是一些实用的常数优化小技巧,很简单,虽然效果可能不那么明显,但在对时间复杂度要求十分苛刻的时候,这些小的优化对于帮助你成功卡常也是十分重要的.那么我们让进入正题吧. (1)inline放在自定义函数定义前 不要问为什么,加就行了!额,这个东西就是内联函数,好像可以让你的函数有机会被计算机执行得稍微快一点,一般放在使用次数比较多的小函数前,像二分会常用到的check(),为sort()定制的CMP()等等…
4487. Can you answer these queries VI Problem code: GSS6 Given a sequence A of N (N <= 100000) integers, you have to apply Q (Q <= 100000) operations: Insert, delete, replace an element, find the maximum contiguous(non empty) sum in a given interval…
根据学堂在线TsinghuaX: 30240184X 数据结构(2015秋)这门课的内容,对bubblesort做了一些总结. 1. bubblesort(起泡排序),原理来自这样一个观察规律:若序列有序,则任意一对相邻元素顺序.其逆否命题为:若存在相邻元素逆序,则序列无序. 2. 利用这一原理,bubblesort按照逐步消除逆序对的思路来实现整体有序. 3. 实现:对序列进行若干趟扫描,每遇到相邻逆序对,交换之,直至不再存在逆序对. 4. 算法的正确性分析: (1)不变性(问题已求解的部分扩…
最近闲着无聊研究了下\(FFT\)的常数优化,大概就是各种\(3\)次变\(2or1.5\)次之类的,不过没见过啥题卡这个的吧. 关于\(FFT\)可以看这里:浅谈FFT&NTT. 关于复数 设\(x=a+bi\),其中\(i\)是虚数单位,那么我们用\(\bar x\)表示\(x\)的共轭复数,即\(\bar x=a-bi\). 共轭复数有一个这样的性质: \[ \overline{ab}=\bar a \cdot \bar b \] 证明展开就好了,这个是下面优化的关键. 设\(\omega…
分块90分. By AutSky_JadeK [重点在下面] #include<cstdio> #include<cmath> using namespace std; #define N 1000001 #define INF 2147483647 #define min(a,b) (((a)<(b))?(a):(b)) ],r[],minv[],delta[],num[N],x,y,v; int ans,re2; int Res;char C; inline int G(…
有些东西借鉴了这里qwq 1.IO(istream/ostream) 输入输出优化 之后能,在赛场上常见的几种输入输出: 输入: $1.cin$ 呵呵,不说什么了,慢的要死.大概$1e8$个数要读1分钟左右 $2.scanf, \_ \_ builtin \_ scanf()$ $scanf$ 其实还不算太快,但是$\_ \_ builtin \_ $在$NOIp$赛场上会$CE$ $3.read()$ 美其名曰:读入优化(反正本宝宝不会),在各大神犇的提交记录以及题解上随处可见,亲测确实比$s…
开坑原因 7.21 今天DTZ大爷教了我一个算欧拉函数的好方法......是质因数复杂度的 这让我想到,这些小技巧小idea,很多时候,可能就是考场上最致命.最一击必杀的"大招" 因此开个坑记录一下,定有好处 7.21 欧拉函数的意义是比一个数小的数中有多少个和它互质的,不要考场上想到了这句话想不到欧拉函数 然后是求欧拉函数的一个方法 设一个数$x=\prod_{i=1}^{k}p_i^{a_i}$,那么: $\varphi(x)=\prod_{i=1}^{k}(p_i-1)p_i^{…
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 613  Solved: 256[Submit][Status] Description 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储).她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][j]满足下面的递推式: F[1][1]=1F[i,j]=a*F[i][j-1]+…
一.I/O优化 读入优化是卡常数最重要的一条! inline int read() { ,f=;char c=getchar(); ;c=getchar();} +c-';c=getchar();} return x*f; } 输出优化好像不常用... 二.inline 在声明函数之前写上inline,可以加快一下函数调用,但只能用于一些操作简单.调用频繁的函数.涉及递归,大号的循环等很复杂的函数,编译器会自动忽略inline.(我不知道强制inline有没有用). 三.register 在定义…
题目链接 设$dp[l][r][p]$为走完区间$[l,r]$,在端点$p$时所需的最短时间($p=0$代表在左端点,$p=1$代表在右端点) 根据题意显然有状态转移方程$\left\{\begin{matrix}dp[l][r][0]=min(dp[l+1][r][0]+x[l+1]-x[l],dp[l+1][r][1]+x[r]-x[l]);\\ dp[l][r][1]=min(dp[l][r-1][0]+x[r]-x[l],dp[l][r-1][1]+x[r]-x[r-1]);\end{m…
pid=5358">HDU 5358 题意: 求∑​i=1​n​​∑​j=i​n​​(⌊log​2​​S(i,j)⌋+1)∗(i+j). 思路: S(i,j) < 10^10 < 2^34.所以log2(S)+1的值仅仅可能在1~35之间.因为log变化缓慢的函数特性,我们能够S(i,n)分作多个同样log值的区间来计算,用pos[i][j]预处理记录每一个以i为起点,log(s)值为j的区间的右边界.就可以优化至nlogn的复杂度. 主要是写起来比較难一些,一些细节比較纠结,…
卡得一手好常数..学习了..(似乎只对FFT有效) JZOJ 4349 #include <bits/stdc++.h> #define LL long long #define DB long double using namespace std; ; ); ],q[],f[],n,m,k,a[],rev[],ans; DB COS[],SIN[],Cos[],Sin[]; struct cp{ DB x,y; cp (DB p=,DB q=){x=p,y=q;} }w[],N[]; cp…
2631: tree Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1716  Solved: 576[Submit][Status] Description 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一:+ u v c:将u到v的路径上的点的权值都加上自然数c:- u1 v1 u2 v2:将树中原有的边(u1,v1)删除,加入一条新边(u2,v2),保证操作完之后仍然是一棵树:* u v c:将u到v的…
rxz 的调试技巧(https://www.zhihu.com/question/60719584/answer/179363450): #define DEBUG printf("Passing [%s] in LINE %d\n",__FUNCTION__,__LINE__) C++ 的一个特性: 由于 C++ 中 a[b] = *(a+b) = *(b+a) = b[a],因此你可以用 i[a] 代替 a[i],用 1[b] 代替 b[1],多维数组同样可以,你甚至可以用 5[4…
#pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC target("avx") #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #pragma GCC optimize("-fgcse") #pragma GCC optimize("-fgcse-lm") #prag…
Charm Bracelet    POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; ],b[]; ]; int main() { int n,m,i,j; while(scanf("%d%d",&n,&m)!=EOF) { ;i&l…
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 写在前面 一些约定 循环卷积 DFT卷积的本质 Bluestein's Algorithm 例题 分治FFT 例题 FFT的弱常数优化 复杂算式中减少FFT次数 例题 利用循环卷积 小范围暴力 例题 快速幂乘法次数的优化 FFT的强常数优化 DF…
标 * 的是推荐阅读的部分 / 做的题目. 1. 动态 DP(DDP)算法简介 动态动态规划. 以 P4719 为例讲一讲 ddp: 1.1. 树剖解法 如果没有修改操作,那么可以设计出 DP 方案 \(f_{i,0/1}\) 分别表示不选(\(0\))/ 选(\(1\))点 \(i\) 的最大权值,那么有 \(f_{i,0}=\sum_{x\in S_i}\max(f_{x,0},f_{x,1}),f_{i,1}=v_i+\sum_{x\in S_i}f_{i,0}\). 如果加上修改操作,那…
OI Training 知识体系结构 初级 1.1 C语言基础 1.1.1 C语言程序结构(A+B Problem) 1.1.2 变量,常量,数据类型,输入与输出 1.1.3 条件语句 1.1.4 循环语句 1.1.5 数组 1.1.6 字符数组.字符串 1.1.7 指针 1.1.8 共同体.结构体 1.1.9 函数 1.1.10 过关练习题 中级 2.1 深度优先搜索 2.1.1 栈与递归函数 2.1.2 深搜树模型与回溯 2.2 宽度优先搜索 2.2.1 链表与队列 2.2.2 宽搜树模型…
学OI也一年多了(2015.12-),一直没学出个像样的东西.相比dalao们,我还是弱爆了. ljj,qyf,yyf三位三区dalao. xxy,myj两位三区学长dalao. 稍微总结一下前一段时间好了: 从blog上也能看出来,这么长时间不更新,明显的,最近颓的比较厉害.算法与数据结构方面也没什么大的进展. 2017.06.30 忘记更新日记了.整理了一下数论,学了一遍容斥原理,然后看了下FFT...一脸懵逼,其余时间都在颓... 2017.07.01 考试,并查集可A全部题目.然而T3没…
2018.2.10~2021.2.10 又是一年的 2 月 10 日,今天的到来意味着我 OI 生涯的第三年已经结束,即将开启 OI 生涯的第四年了.回顾这三年以来自己由懵懂.无知慢慢变成熟的历程,感觉有太多.太多的话想说了. 2018.2.10 ~ 2019.2.10 我 OI 生涯的第一年可以说只是认识了"什么是 OI".六年级那年寒假我听说了 hb 培训机构,并开始接触 C++,2018 年 2 月 10 日 10:39 写下了我人生中第一个 C++ 程序 A+B problem…
3851: 2048 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 22  Solved: 9[Submit][Status] Description Teacher Mai is addicted to game 2048. But finally he finds it's too hard to get 2048. So he wants to change the rule: You are given some numbers. Every…
1138: [POI2009]Baj 最短回文路 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 161  Solved: 48[Submit][Status] Description N个点用M条有向边连接,每条边标有一个小写字母. 对于一个长度为D的顶点序列,回答每对相邻顶点Si到Si+1的最短回文路径. 如果没有,输出-1. 如果有,输出最短长度以及这个字符串. Input 第一行正整数N和M ( 2 ≤ N ≤ 400 , 1 ≤ M ≤…
常见DP模型及其构造 序列DP ARC074 RGB Sequence 题意 给你一个长度为 \(n\) 的序列和 \(m\) 组约束条件,每组条件形如 \(l_i,r_i,x_i\),表示序列上的 \([l_i,r_i]\) 中恰好有 \(x_i\) 种颜色,现在要你用三种颜色给这个序列染色,求满足所有约束的方案数. \(n,m \le 300\). 技巧:设计出契合数据范围的状态 题解 注意到最多只有三种颜色,因此可以把颜色的信息记得暴力一些.设 \(dp[i][j][k]\) 表示三种颜色…
韩父有N个儿子,分别是韩一,韩二…韩N.由于韩家演技功底深厚,加上他们间的密切配合,演出获得了巨大成功,票房甚至高达2000万.舟子是名很有威望的公知,可是他表面上两袖清风实则内心阴暗,看到韩家红红火火,嫉妒心遂起,便发微薄调侃韩二们站成一列时身高参差不齐.由于舟子的影响力,随口一句便会造成韩家的巨大损失,具体亏损是这样计算的,韩一,韩二…韩N站成一排,损失即为C×(韩i与韩i+1的高度差(1≤i<N))之和,搞不好连女儿都赔了.韩父苦苦思索,决定给韩子们内增高(注意韩子们变矮是不科学的只能增高…
更新日志: 2017.02.13 开坑 2017.02.13 更新[零][壹] 2017.02.14 更新[贰] 2017.02.26 更新[叁][肆] 2017.03.04 锅多如狗,停更一周 2017.03.11 更新[肆],给每个小结都加了个小标题 2017.03.12 (良心二连更)更新[伍]太懒了,放弃更新 2017.03.19 萌萌哒博主更新了[伍] 2017.03.23 更新[陆]!! 2017.04.05 最近可能有些迷茫,也有些累(咸),所以乱写一些东西吧.更新[柒] 2017…
[NOI2014]购票 题目描述 今年夏天,NOI在SZ市迎来了她30周岁的生日. 来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会. 全国的城市构成了一棵以SZ市为根的有根树,每个城市与它的父亲用道路连接. 为了方便起见,我们将全国的 n 个城市用 1 到 n 的整数编号.其中SZ市的编号为 1. 对于除SZ市之外的任意一个城市 v,我们给出了它在这棵树上的父亲城市 fv 以及到父亲城市道路的长度 sv. 从城市 v 前往SZ市的方法为:选择城市 v 的一个祖先 a,支付购…
按照算法导论写的 还没有测试复杂度到底怎么样 不过这个真的很卡内存,挖个坑,以后写空间优化 还有Matthew Anderson, Siddharth Barman写了一个关于矩阵乘法的论文 <The Coppersmith-Winograd Matrix Multiplication Algorithm> 提出了矩阵乘法的O(n^2.37)算法,有时间再膜吧orz #include <iostream> #include <cstring> #include <…
今天做到一道最短路的题,原题https://loj.ac/problem/10081 题目大意为给一张有n个顶点的图,点与点之间有m1条道路,m2条航线,道路是双向的,且权值非负,而航线是单向的,权值可能为负,保证两点之间如果有航线就不会有道路.现给定起始点s,求s到每个点的最短路径,如果没有则输出“NO PATH”. 我当时看到这题那叫一个高兴啊,以为又是一道水题,因为有负权边,不能用Dijkstra,选择用SPFA.那么有没有负环呢?经过实测数据并没有负环,本以为可以轻松AC了,然而评测结果…