一.代码: 1.求逆元(原理貌似就是拓展欧几里得,要求MOD是素数): int inv(int a) { if(a == 1) return 1; return ((MOD - MOD / a) * inv(MOD % a)) % MOD; } 2.底层优化(正确性未验证): int cmp(int a) {if (!a) return 0; return a < 0 ? -1 : 1;} int cmp(int a) {return (a >> 31) + (-a >> 3…
前言 笔者有的时候无聊,就将一些奇怪的东西封装起来. 范围主要是在\(OI\)或者\(ACM\)中的常见数据结构等. 随着笔者的能力的提升,可能会对原来的封装程序进行修改,并且保留原来的版本. [ST表(静态RMQ)] // program at 2019-11-12 template <class T, int N, int M> struct ST { T f[N + 5][M + 1]; int log2[N]; T compare(T x, T y) { // can change,…
YveH爷再刷KMP,DCrusher看他刷KMP,跟着两个人一块刷KMP... 3670: [Noi2014]动物园 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1461 Solved: 781 [Submit][Status][Discuss] Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学…
     SPOJ简介 SPOJ是波兰最为出色的Online Judge之一,界面和谐,题目类型也非常丰富,适合有一定基础的选手练习,对高手而言也是个提高能力的良好平台. SPOJ题目分类:classical,challenge,partial,tutorial. 1)classical:ACM题型,通过所有数据才能算AC 2)challenge:有趣的题目,每个题目有不同的评分标准(代码长短,效果好坏,速度等),感觉都挺难得,至今没敢碰. 3)partial:OI题型,根据通过的测试数据比例,…
NO.10: 循环展开: 在缓存和寄存器允许的情况下一条语句内大量的展开运算会刺激 CPU 并发(蛤?这是个什么原理,算了,反正写了没坏处就这么写吧) NO.9: 特殊运算优化:(或许这真的没用) 取模优化: inline int inc(int x,int v,int mod){x+=v;return x>=mod?x-mod:x;}//代替取模+ inline ?x+mod:x;}//代替取模- 绝对值优化: inline int Abs(int a){//绝对值优化{ ; return (…
基本功 前导0 如题,有时候需要把3输出成03这样子,可以调用 cout.width(x); ,x表示以几位,用 cout.fill(x); 来给出前导填充的内容,一般x以char的形式给出 例如可以试试下面的代码 #include<iostream> #include<cstdio> using namespace std; int main() { cout.width(4);cout.fill('0'); cout<<4<<" "&…
OI/ACM中经常要用到小数来解决问题(概率.计算几何等),但是小数在计算机中的存储方式是浮点数而不是我们在作数学运算中的数,有精度的限制. 以下以GUN C++为准,其他语言(或编译器)也差不了多少.本文竞赛向. 一.基础篇 1.一般浮点数使用double,范围为大概为-10^308 ~ 10^308,有效精度为15~16位10进制数. 2.一般没事(比如内存问题)不用float,而使用double,一个double占8个字节. 3.信息学竞赛一般使用scanf和printf输入输出,而浮点数…
Final Pan's prime numbers 题目连接: http://acm.uestc.edu.cn/#/problem/show/1272 题意 给你n,要求你在[4,n]范围内找到一个最大的质数x,使得x-4和x+4也是质数 题解: 数学 只有7是满足的 为什么? 1.若 n = 3x,因为n>4,所以n必为合数,不符. 2.若 n = 3x + 1, 则 n - 4 = 3x - 3 = 3(x-1) ,即(n -4 ) % 3 == 0,有且只有n=7时满足 3.若 m = 3…
—— 简单介绍一下ACM里面的输入输出... —— 主要说C++的输入输出(其实其他的我不会...). —— C++里面有输入输出流,也就是cin和cout,用起来也算是比较方便吧... —— 但是,ACMer好像不怎么用这个,大都用scanf,printf这两个不是很方便的C语言遗留输入输出函数,因为... —— 大家都用的cin cout逼格太低了,是吧... —— 饿,开个玩笑,其实是因为效率的问题了,C++是兼容C语言的,为了兼容scanf和printf这些老一辈的输入输出,所以他很贴心…
来自咸鱼王的呻吟 http://www.xiami.com/song/3599639?spm=a1z1s.3521865.23309997.1.PbLu7E 配合咸鱼食用效果更佳(右键新窗口打开) 题解 A 链接 : http://acm.hust.edu.cn/vjudge/contest/view.action?cid=104739#problem/A 题目大意 : n行n列 , 得到令每行每列之和皆为 k 的矩阵 做法 : 只要每行每列之和为 k 就符合题意 , 于是我们可以输出 k E…