模板与算法
文章平均质量分 87
little step
HownoneHe
即使是微弱的光芒,当它们一点一滴汇聚起来,积攒到一定程度时也会化为璀璨的烟火,绽放出耀眼的美丽
展开
-
简单计算器(栈、中缀表达式转后缀表达 详解)
如果是操作符,就连续弹出两个操作符(**注意:**后弹出的是第一操作数,先弹出的是第二操作数),然后进行操作符的操作,生成的新数重新压入栈中。5.当从左到右扫描时,加号先进入操作符栈,而由于乘号优先级大于加号,其必须先计算,因此在后缀表达式中乘号必须在加号前面,于是在栈中乘号要比加号更靠近栈顶,以让其优先于加号进入后缀表达式。f)中缀表达式扫描完毕,操作符栈非空,将其全部弹入后缀表达式,最终后缀表达式变为234 * /d)*与操作符栈的栈顶元素/比较,相等,压入操作符栈,当前操作符栈为/ *原创 2021-02-06 22:08:19 · 479 阅读 · 0 评论 -
【SDOI2009】Super Gcd (高精度gcd)
DescriptionSheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比赛计算GCD。有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是很丢脸!所以你决定写一个程序来教训他。Input 共两行: 第一行:一个数A。 第二行:一个数B。 Output 一行,表示A和B的最大公约数原创 2016-12-21 19:43:41 · 2606 阅读 · 0 评论 -
一般线性筛法求素数与快速线性筛法求素数模板
省时间。。。防健忘。。。 一般的void make_prime() { memset(prime, 1, sizeof(prime)); prime[0]=false; prime[1]=false; int N=31700; for (int i=2; i<N; i++)原创 2016-12-14 19:38:48 · 705 阅读 · 0 评论 -
51 nod 最大公约数之和 (求1~n里面各个数的gcd和 n<=1000000)
Description小菜的妹妹小诗就要读小学了!正所谓计算机要从娃娃抓起,小菜决定在幼儿园最后一段轻松的时间里教妹妹编程。 小菜刚教完gcd即最大公约数以后,一知半解的妹妹写了如下一段代码: sum:=0; for i:=1 to n-1 do for j:=i+1 to n do sum:=sum+gcd(i,j)显然这个程序的效率是很低的,小明打算写一个更强的程序,在求出sum的同时比妹妹跑原创 2016-12-12 20:00:13 · 2321 阅读 · 0 评论 -
线筛欧拉函数模板
例题 :jzoj1719 SDOI2008仪仗队include <cstdio>#include <cmath>#include <iostream>#include <cmath>#define fo(i,a,b) for (int i=a;i<=b;i++)#define N 40005using namespace std;typedef long long ll;int Phi[N原创 2016-10-29 13:48:07 · 749 阅读 · 0 评论 -
堆模板(小根堆)
从小到大排序#include <cstdio>#include <iostream>#define fo(i,a,b) for (int i=a;i<=b;i++)#define N 200005 using namespace std;int a[N],num=0,n;void Up(int x){ for (;x>1 && a[x] < a[x >> 1];x >>= 1) swap原创 2016-10-07 13:40:45 · 969 阅读 · 0 评论 -
【NOIP2016提高A组模拟9.24】天使的分裂 (矩阵乘法)
Description Input 一个整数n Output 一行,一个整数,表示第0天到第n天的评估函数的值的和。 Sample Input Input 1 5 input 2 666666 Input 3 2147483648 Sample Output Output 1 76 Output 2 324016098 Output 3 93293756原创 2016-09-26 20:04:42 · 1011 阅读 · 0 评论 -
三分模板
#include <cstdio>#include <iostream>#include <cmath>#include <algorithm>#include <cstring>#define fo(i,a,b) for (int i=a;i<=b;i++)#define N 50005#define INF 2147483647using namespace std;struc原创 2016-09-23 20:12:56 · 1064 阅读 · 0 评论 -
[Jzoj 4709]. 【NOIP2016提高A组模拟8.17】Matrix
Description InputSample Input 4 3 5 4 1 7 3 4 7 4 8 Output Sample Output 59716The Solution这是雅礼中学和我们学校的联考题呀。。上面给的那个dp可以理解成在一个网络上,只能向右,向下走,向下走的话,加上的贡献就要b,向右走的话加上的贡献就要 a。 那么对于l和t,看看这个位置往右往下走多少步就是原创 2016-08-17 20:04:32 · 592 阅读 · 0 评论 -
求和
Description若两个数的最大公约数为1,则这两个数互质。现在给出一个正整数N(1<=2^31-1),你的任务是求出1~N中与N互质的数的总和。Input一个整数NOutput一个整数sum,表示1~N中与N互质的数的总和。Sample Input10Sample Output20这是道数论题,看起来很简单,但是数据规模颇大。 首先观察题目,题意很浅显,就是要求与1~N中,与N互质的数有多少原创 2016-02-17 15:47:39 · 788 阅读 · 0 评论 -
窈窕淑女
Description “关关雎鸠,在河之洲。窈窕淑女,君子好逑。”——《诗经》 T博士的大儿子阿T(阿嚏?)最近遇到了一件麻烦事。 有n个MM同时邀请阿T在8月14日上午11:30拜访她们家,可那时阿T刚比赛完,所以不能先提前拜访几个,而他又不会分身术,所以他只得分别拜访。他共有T分钟的时间可以用于拜访MM。他还安排好了拜访的顺序,对于每个MM都可以选择拜访或不拜访。对于要拜访的MM原创 2016-07-15 15:49:14 · 695 阅读 · 0 评论 -
关于扩展欧几里得算法(exgcd)的总结与复习
这个算法其实很早就接触过,只不过那个时候没有好好理解与消化,导致运用的不是很到位,有些地方用得不太好,现在写一篇博客来弥补一下,顺便复习与深入理解。。。。原创 2016-02-19 09:47:55 · 6038 阅读 · 1 评论 -
KMP算法详解
我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?”解决这类问题,通常我们的方原创 2016-04-20 20:12:05 · 1875 阅读 · 0 评论 -
Tarjan强连通分量详解补充
这是一篇关于Tarjan的算法讲解,个人觉得不错,来展示一下分享。。。由于不知怎么转载。。(别打脸,蒟蒻一枚),于是自己重新整理后再发表 ——前言说到以Tarjan命名的算法,我们经常提到的有3个,其中就包括本文所介绍的求强连通分量的Tarjan算法。原创 2016-05-25 20:28:27 · 1436 阅读 · 0 评论 -
匈牙利算法详解
最大流算法的核心问题就是找增广路径(augment path)。匈牙利算法也不例外,它的基本模式就是:初始时最大匹配为空while 找得到增广路径 do 把增广路径加入到最大匹配中去可见和最大流算法是一样的。但是这里的增广路径就有它一定的特殊性,下面我来分析一下。 (注:匈牙利算法虽然根本上是最大流算法,但是它不需要建网络模型,所以图中不再需要源点和汇点,仅仅是一个二分图。每条边也不需原创 2016-04-22 20:07:03 · 11038 阅读 · 0 评论 -
高斯消元模板
高斯消元原创 2016-05-09 19:36:33 · 527 阅读 · 0 评论 -
优先队列堆
c++ 的一种特殊堆,c++特有,学来用一用,补充补充知识。 顺便了解了解c++#include<queue>#include<cstdio>#include<iostream>#include<algorithm>using namespace std;struct node{ int x;};priority_queue <node> q;//定义一个类型为node的优先队原创 2016-04-20 20:08:09 · 387 阅读 · 0 评论 -
【NOIP2016模拟7.8】Stree
Description给出n个点,m条有权边,现对于每一条边,你需要回答出包含这条边的最小生成树的总边权值。 Input 第一行两个数n,m 接下来m行i,j,k,表示i与j间有一条权值为k的边 Output m行答案 Sample Input 5 7 1 2 3 1 3 1 1 4 5 2 3 2 2 5 3 3 4 2 4 5 4 Sample Output 9原创 2016-07-14 20:50:55 · 426 阅读 · 0 评论 -
中国剩余定理解说与整理
Preface由于能力有限,没有看和了解太多东西,这里只写了一些简单版的学习资料(仅仅是我见过的),有些言语颇显幼稚,可能还有些不完整,望大神不喜勿喷,欢迎补充。。。ContentDefinition:孙子定理是中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国剩余定理。 ——度娘中国剩余定理称Chinese remainder theorem 简称CRTFormulati原创 2016-08-11 21:02:38 · 8319 阅读 · 0 评论 -
点分治模板 (例题:树中点对距离) 待更新【坑】
待更新Description 给出一棵带边权的树,问有多少对点的距离<=Lenc表示最大儿子的节点的size size表示子树大小处理子树大小void Get_Size(int x,int y){ size[x]=1; c[x]=0; for (int k=last[x];k;k=next[k]) { if (t[k]==y || bz[t[k]原创 2016-09-10 11:22:53 · 760 阅读 · 0 评论 -
中国剩余定理模板(JZOJ 3093. 【NOIP2012模拟11.7】合唱队形)
Description学校要进行合唱比赛了,于是班主任小刘准备给大家排个队形。他首先尝试排成m1行,发现最后多出来a1个同学;接着他尝试排成m2行,发现最后多出来a2个同学,……,他们尝试了n种排队方案,但每次都不能让同学们正好排成mi行。于是小刘寻求同事小明的帮助,以便给同学们排好队型。但小刘来去太匆忙,忘记告诉小明他们班有多少人了。没办法,现在只能根据上述信息求个满足要求的最小的数字来作为人数了原创 2016-08-11 21:08:28 · 954 阅读 · 0 评论 -
基础模板
模板数据结构原创 2016-01-24 21:43:09 · 810 阅读 · 0 评论 -
网络流dinic模板
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 100005,maxm = 100005;struct node{ int to,next,flow;//目标点,下一条边,剩余流量 node(void){} node(int a,int原创 2016-09-12 20:23:10 · 491 阅读 · 0 评论 -
网络流SAP+GAP模板
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 100005,maxm = 100005;struct node{ int to,next,flow;//目标点,下一条边,剩余流量 node(void){} node(int a,int原创 2016-09-12 20:24:59 · 806 阅读 · 0 评论 -
正负数读入优化模板
曾几何时,我都以为题目读入的数都是正数。。→_→。。。 too young too Naive… o((>ω< ))o 于是乎被坑了很多次。。。 以前都是天真地打简单的读入优化, 而神奇的老司机李肥老道老练,告诉我正负数读入优化都能打 感觉以前被逗。。不爽 于是我机智地学了他的读入优化。。。CODEint read(int &n){ char ch=' ';int q=0原创 2016-06-18 10:54:44 · 568 阅读 · 0 评论