随笔分类 -  基本代码

摘要:题目:给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减。试求出x的值。 解法:与二分法枚举中点使区间分成2份不一样,三分法是枚举三分点,再根据题目的情况修改 l , r 。 P.S.嘻嘻,其实我就是为了凑够我这3个月博客刚好150篇才补了这个我NOIP比 阅读全文
posted @ 2016-11-21 18:31 konjac蒟蒻 阅读(397) 评论(0) 推荐(0)
摘要:题目:给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数。 解法:匈牙利算法。(以前我总是不记得......)实质上应该有贪心的思想,每次都尽量匹配,找到能和自己匹配的也尽量让它们匹配。若对方已有匹配的对象,就让那个对象尽量调整来使自己这对能凑起来。而要注意,每次问过的对象就不要再问 阅读全文
posted @ 2016-11-18 11:00 konjac蒟蒻 阅读(261) 评论(0) 推荐(0)
摘要:题目:已知一个数列,你需要进行下面两种操作:1.将某一个数加上x;2.求出某区间每一个数的和。 解法:树状数组求前缀和。 阅读全文
posted @ 2016-11-18 09:55 konjac蒟蒻 阅读(158) 评论(0) 推荐(0)
摘要:题目:已知一个数列,你需要进行下面两种操作:1.将某区间每一个数数加上x;2.求出某一个数的和。 解法:树状数组+前缀和优化。数组中每位存和前一位的数的差,这样区间修改只用改两位,单点询问就是求前缀和。 阅读全文
posted @ 2016-11-18 09:52 konjac蒟蒻 阅读(255) 评论(0) 推荐(0)
摘要:题目:有一个图有N个顶点,M条边。边用三个整数a b w表示,意思为a->b有一条权值为w的边(若w<0则为单向,否则双向)。共T组数据。对于每组数据,存在负环则输出一行"YE5"(不含引号),否则输出一行"N0"(不含引号)。 注意——坑爹的输出啊!!它不是平常的 YES 和 NO!! 解法:1. 阅读全文
posted @ 2016-11-18 08:54 konjac蒟蒻 阅读(234) 评论(0) 推荐(0)
摘要:题意:求n个串的字典序最小的最长公共子串。 解法:枚举第一个串的子串,与剩下的n-1个串KMP匹配,判断是否有这样的公共子串。从大长度开始枚举,找到了就break挺快的。而且KMP的作用就是匹配子串,近乎O(n)的速度,很快。 P.S.对于字符串要仔细!!! 阅读全文
posted @ 2016-11-17 22:28 konjac蒟蒻 阅读(202) 评论(0) 推荐(0)
摘要:题目:给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用。 解法:在Dinic的基础下做spfa算法。 阅读全文
posted @ 2016-11-17 18:13 konjac蒟蒻 阅读(182) 评论(0) 推荐(0)
摘要:题目:给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内)。(N<=10000000,M<=100000) 解法:1.欧拉筛O(n),数组近乎100KB;2.(我这题copy了数据范围肯定是有原因滴......)欧拉函数判断素数O(m log n),m 比 n 小啊,可以 阅读全文
posted @ 2016-11-17 17:08 konjac蒟蒻 阅读(271) 评论(0) 推荐(0)
摘要:题意:给你一个字符串,求这个字符串到第 i 个字符为止的重复子串的个数。 解法:判断重复子串的语句很重要!!if (p && i%(i-p)==0) printf("%d %d\n",i,i/(i-p)); 我之前一直不是很理解,而实际上多枚举几种情况就好了。若是重复的,那么next[i]肯定是最大 阅读全文
posted @ 2016-11-17 16:42 konjac蒟蒻 阅读(268) 评论(0) 推荐(0)
摘要:题目:给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 解法:spfa算法。 阅读全文
posted @ 2016-11-17 15:45 konjac蒟蒻 阅读(351) 评论(0) 推荐(0)
摘要:题目:给出一个无向图,求出最小生成树,如果该图不连通,则输出orz。 解法:Kruskal求MST。 阅读全文
posted @ 2016-11-17 15:32 konjac蒟蒻 阅读(213) 评论(0) 推荐(0)
摘要:题目:给出一个网络图,以及其源点和汇点,求出其网络最大流。 解法:网络流Dinic算法。 阅读全文
posted @ 2016-11-17 15:23 konjac蒟蒻 阅读(287) 评论(0) 推荐(0)
摘要:题目:给定n*n的矩阵A,求A^k。 解法:利用矩阵乘法的定义和快速幂解答。注意用负数,但是数据太弱没有卡到我......(P.S.不要在 typedef long long LL; 前使用 LL......━━( ̄ー ̄*|||━━) P.S.在multi函数里,若将所有相乘的和先加起来不会爆 lo 阅读全文
posted @ 2016-11-17 15:07 konjac蒟蒻 阅读(180) 评论(0) 推荐(0)
摘要:题目:给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 解法:倍增。 阅读全文
posted @ 2016-11-17 14:39 konjac蒟蒻 阅读(246) 评论(0) 推荐(0)
摘要:题意:已知一个数列,你需要进行下面三种操作:1.将某区间每一个数加上x;2.将某区间每一个数乘上x;3.求出某区间每一个数的和。 解法:(唉 :-(,这题卡住我了......)对于加法和乘法的混合操作,lazy 标记记为 add , mul。 我们可以把运算全部化为 x*mul+add*(r-l+1 阅读全文
posted @ 2016-11-17 10:48 konjac蒟蒻 阅读(208) 评论(0) 推荐(0)
摘要:题目:已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x;2.求出某区间每一个数的和。 解法:如题,模版题。需要加上 lazy 标记,也就是我的 upd。lazy 标记的思路就是对一个结点更新(算和)了,但不继续更新它下面的结点,而是标记下来(每个数需加上的值)。注意——边界判断,不能 阅读全文
posted @ 2016-11-17 09:51 konjac蒟蒻 阅读(216) 评论(0) 推荐(0)
摘要:P.S.又是一个抽时间学了2个小时的新东西......讲解在上半部分,题解在下半部分。 先说一下转的原文:http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html我挑选部分转了过来:01分数规划问题 定义:给定两个数组,a[i]表示 阅读全文
posted @ 2016-11-16 15:09 konjac蒟蒻 阅读(366) 评论(0) 推荐(0)
摘要:题意:给出 A%9973 和 B,求(A/B)%9973的值。 解法:拓展欧几里德求逆元。由于同余的性质只有在 * 和 + 的情况下一直成立,我们要把 /B 转化为 *B-1,也就是求逆元。 对于 B-1,P为模数9973,那么 B*B-1=1(mod P) → 把 B-1 看成 x ,就是 Bx+ 阅读全文
posted @ 2016-11-15 21:33 konjac蒟蒻 阅读(267) 评论(0) 推荐(0)
摘要:题意就是求10^9以内的正整数的欧拉函数(Φ(n)表示<=n的与n互质的正整数个数)。 解法:用欧拉筛和欧拉函数的一些性质: 1.若p是质数,Φ(p)=p-1; 2.欧拉函数是积性函数,即若a,b互质,则Φ(ab)=Φ(a)*Φ(b); 3.若a,b不互质,则Φ(ab)=Φ(a)*b。 若 n≤10 阅读全文
posted @ 2016-11-15 19:37 konjac蒟蒻 阅读(305) 评论(0) 推荐(0)
摘要:题意:小Z有N只袜子,有不同的颜色。他有M个提问,问从编号为[L,R]的袜子中随机选一双同色的袜子的概率,用最简分数表示。 解法:经典的莫队算法——无修改、不强制在线(可离线)、状态转移可以一步完成。 步骤如下: 1.对询问按第一关键字的平方根 sqrt(x) 从小到大排序进行分组,再是各组中按第二 阅读全文
posted @ 2016-11-15 11:33 konjac蒟蒻 阅读(206) 评论(0) 推荐(0)