08 2017 档案
摘要:题目大意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。 数据范围:100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤5...
阅读全文
摘要:题目描述给定整数N,求1#define ll long longusing namespace std;int n,cnt;ll phi[10000001];int vis[10000001];int prime[10000001];ll sum=0;void ini...
阅读全文
摘要:传送门题解欧拉定理(模指数)+质因数分解(条件)->lucas定理(组合数)+中国剩余定理(合并) 要说的一点就是一定要给自己写一个好看的代码,不然就根本没办法调试,就像我原来的30分。。。 代码:#include#define ll long longusing n...
阅读全文
摘要:题目大意:求这个式子:∑i=0∞Cik+rnk(modp) 这道题就是个数学题,做法其实就是优化的暴力——杨辉三角矩阵加速。 可以加速的原理,其实就是杨辉三角是一个一维递推,并且可以将递推描述为:复制矩阵到一个新矩阵,然后矩阵右移一格,加到新矩阵中。 对于这个题来说就...
阅读全文
摘要:模板:可并堆 可并堆真的很好写!可并堆真的很好写!可并堆真的很好写! 只有一个合并操作,插入都是用合并实现的,最多再来一个并查集,真的简单到爆好吗。。 代码:#include#define ll long longusing namespace std;const i...
阅读全文
摘要:模板:割点 还是那本书,自己看。 吐槽一句:tarjan真的能干好多事儿啊QAQ 代码:#include#define ll long longusing namespace std;struct edge{ int to,next;}e[200001];int...
阅读全文
摘要:模板:洛谷P3387 关于tarjan大神的算法我也只能抄抄代码了(滑稽) 其实《算法竞赛入门经典:训练指南》里有讲解,很详细。 代码:#include#define ll long longusing namespace std;vector G[10001];in...
阅读全文
摘要:模板:洛谷P3385 由于DFS-SPFA可以在找到负环后及时退出,所以不会像BFS-SPFA那样TLE。 代码:#includeusing namespace std;inline void read(int &x){ x=0; int k=1; ...
阅读全文
摘要:这是一种离线算法,但是时间超级快,是O(n+m)。 主要是dfs实现这个过程。 下面详细介绍一下Tarjan算法的基本思路: 1.任选一个点为根节点,从根节点开始。 2.遍历该点u所有子节点v,并标记这些子节点v已被访问过。 3.若是v还有子节点,返回2...
阅读全文
摘要:此题树状数组卡常好题(滑稽)题目描述很久很久以前,在遥远的大陆上有一个美丽的国家。统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草。有一天国王漫步在花园里,若有所思,他问一个园丁道: “最近我在思索一个问题,如果我们把花坛摆成六个六角形,那...
阅读全文
摘要:主席树原理就是区间内的第k大可以通过每个数字的出现次数随便乱加减搞出来,然后,就可以像前缀和那样建n个线段树,就可以查询区间第k大了! 主要问题就是空间绝对爆炸,大概n2logn左右。 看这个图:(来自blog) 可以发现每一颗线段树结构都相同,只是每次都有logn...
阅读全文
摘要:此题大约为提高+的难度。题目描述在数轴上有 n个闭区间 [l1,r1],[l2,r2],…,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间 [li,ri],都有 li≤x≤r...
阅读全文
摘要:吐槽:在模板题,我的丑陋的线段树跑了984ms,而大神的只跑了364ms,看来我的代码还是太丑了QAQ大神的线段树也没什么大优化,就是不知道为什么超级快,或许是我以前看的线段树代码不好吧。。。 我推荐这个线段树的主要原因就是非常好写,空间也是非常小,思路极其清晰。 好...
阅读全文
摘要:今天晚上真的惊悚。 时间21:40左右,我打算去学校超市,买瓶饮料回来继续死磕OI,然后我就拿着储值卡和钥匙,锁了机房,开始下楼。 科技楼除了机房还有亮光,其他地方一片黑暗,我摸索着下楼,途中滑了好几次,然后我就一路都在想摔倒后的我,越想越恐怖。 快到一楼了,我告诉自...
阅读全文
摘要:来来来,日常水一篇(滑稽)题目描述监狱有连续编号为1…N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱输入输出格式输入格式: 输入两个整数M,N.1#define ll ...
阅读全文
摘要:日常再水一篇(逃题目背景小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。题目描述给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起。现在小杉要把所有云朵连成K个棉花糖,一个棉花糖最少要用...
阅读全文
摘要:日常水一篇(滑稽)题目描述如果一个数的所有连续三位数字都是大于100的素数,则该数称为三素数数。比如113797是一个6位的三素数数。输入输出格式输入格式: 一个整数n(3 ≤ n ≤ 10000),表示三素数数的位数。输出格式: 一个整数,表示n位三素数的个数m,要...
阅读全文
摘要:1.乘法逆元(inv)两种求法: First:(满足p为质数且a与p互质才可以使用) 根据费马小定理:ap≡a(modp) 可得ap−2≡a−1(modp) 由此可知,ap−2modp即是a在模p意义下的逆元 然而ap−2可以轻易用快速幂算出 Second:(无条件)...
阅读全文
摘要:以后要写这个系列,一步步的学习数论^_^ 1.首先是数论里用处非常大的快速幂: (ksm如此基础的算法我就不多说了吧)#include#include#include#include#include#includeusing namespace std;int b,p...
阅读全文
摘要:如题,原来听了怎么实现,一直没有写过,然后这是提高里会出现的,于是来补一下(好像我要补的还很多啊^_^) 给大家放一道题:洛谷 P3379 【模板】最近公共祖先(LCA) 温馨提示:这题卡常^_^ 代码:(具体看注释)#include#include#include#...
阅读全文
摘要:题目描述设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i 间的最长路径。输入输出格式输入格式: 输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边...
阅读全文
摘要:好几天没写了,写点儿奇怪的东西,一个不好理解的黑科技。zkw线段树,顾名思义,就是zkw大神发明的线段树。 由于我实在是太弱了,无法讲述zkw大神的高深的ppt,就留一个下载网址:统计的力量(zkw线段树) 我这里要说的,就是zkw线段树的具体用法,首先,原版zkw只...
阅读全文
摘要:以下为提高+难度。关于这个算法我不多做阐述,因为我说的肯定没有lrj大神说得好,大家可以看他的书–《算法竞赛入门经典》,那里有详细描述。 到了这种难度,极其建议大家去抄抄代码,过一遍手,比什么都强。 我也是这一遍抄完了,才感觉这两天的网络流明白了。下来就是代码。 co...
阅读全文
摘要:Please give me some advice!真的,你们从来都只是看,直到现在,访问快破一千了,然而,评论是0. 真心希望你们可以给点儿评论、建议什么的。。。
阅读全文
摘要:以下内容为提高+难度。 首先,以一个问题来引入算法: 最大流问题,该问题描述如下: 管道网络中每条边的最大通过能力(容量)是有限的,实际流量不超过容量。 最大流问题(maximum flow problem),一种组合最优化问题,就是要讨论如何充分利用装置的...
阅读全文
摘要:关于这个字符串的数据结构我就不多说什么了,不知道的可以戳这里. Trie树在OI中应用广泛,时间优秀,缺点就是空间占用大。 (下文中我们将字符集大小称为k,模式串长度为p) Trie支持O(np)建树,O(p)插入,查询,删除。 可是如果二维数组存储的话,就要耗费kn...
阅读全文
摘要:以下为普及+/提高- 难度 这篇我对Tarjan这个算法不作解释,不知道的戳这里. tarjan这个算法在OI的图论题中很常用它在O(n+m) 的时间内可以求出所有强联通分量,然后可以将每一个强联通分量(通常是一个环)缩成一个点。 然后就是一道模板题:洛谷 P2863...
阅读全文
摘要:堆是一棵完全二叉树,可以O(1)取最值,O(logn)删除最值,或插入元素。 堆的性质:每个非叶子节点比它的孩子都大(大根堆/大顶堆)/每个非叶子节点比它的孩子都小(小根堆/小顶堆)。 从上面的性质可以推出堆的根就是最值。 堆的常用操作:top返回堆顶,pop弹出堆顶...
阅读全文
摘要:题目描述给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的输入输出格式输入格式: 第一行:n;2≤n≤200000接下来n行:每行两个实数:x y,表示一个点的行坐标和列坐标,中间用一个空格隔开。输出格式: 仅一行,一个实数...
阅读全文
摘要:今天才写了prim的堆优化,发现kruskal居然比prim跑得快。。。回归正题: 以下是我个人对最小生成树各种算法的理解,以及我的代码。 以下我将点数称为n,边数称为m;Prim 算法过程(来自百度百科): 1. 输入:一个加权连通图,其中顶点集合为V,边集合为E;...
阅读全文
摘要:我为什么一看见这题就想用树状数组,又好写,又实用,多好。。。 nlogn建树,单词查询logn,对于100000的数据绰绰有余。 不过这好像和一般的树状数组不一样,一般都是求和,这次是求最值,变一下查询函数query。//a[i]代表第i个数字,t[i]就是树状数组/...
阅读全文
摘要:题目描述追逐影子的人,自己就是影子 ——荷马Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》 组成的鸿篇巨制《荷马史诗》实在是太长了,Allison 想通过一种编码方式使...
阅读全文
摘要:题目描述曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。阳光大学的校园是一张由N个点构成的无向图,N个点之间由M条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连...
阅读全文
摘要:题目描述有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:...
阅读全文
摘要:线段树是一个神奇的数据结构,可以解决好多问题。 我第一次写的时候,写了3500+,结果,是错的。。。 我当时就笑了。。。 然后参(chao)考(xi)了某位大神的代码,才最终写出来了一份2000+的线段树。 话说,线段树这种数据结构支持在logn的时间内区间修改,区间...
阅读全文