- 博客(16)
- 收藏
- 关注
转载 Hankson 的趣味题
洛谷原题链接这是一道关于求最小公倍数、最大公约数逆运算的一道题。做这道题首先要会求最大公约数和最小公倍数 ,对吧……题目要求解个数,我们来看一看条件:50分做法:我们从条件中很容易看出x的范围——大于等于a1并且小于等于b1,所以我们暴力枚举a1到b1,然后对于每个可能的答案按照条件进行判断代码:#include<bits/stdc++.h>...
2018-10-11 23:25:00
155
转载 [NOI2001]食物链
洛谷原题链接这是一道分类并查集的题目。我们要根据题目的要求,求出谎话的数目。题目给了我们一些明确的判断标准:但是我们会发现,如果只按照这三个条件和普通的并查集,我们只能得30分。30分做法:我们可以用普通并查集和一个表示谁是谁的食物的数组来完成。30分代码:#include<bits/stdc++.h>#define R register...
2018-10-11 20:38:00
119
转载 [NOI2002]银河英雄传说
银河英雄传说这是一道带权并查集的题目。首先,按照题目要求,我们可以很容易的想到用并查集来实现。但是我们会发现,如果只用并查集记录队列的合并情况,那么就无法满足C操作,所以我们需要在维护并查集的同时,维护每个结点的信息。这道题目需要查询是否在一个队列中,也就是是否在一个集合中,是并查集的基本操作,写一个find函数就可以了。但是第二个要求是一个并查集中两个结点的距离,那么我们就...
2018-10-10 22:52:00
136
转载 [Violet]蒲公英
查看原题戳这里这是一道经典的分块题——用分块求区间众数。分块在线的时间复杂度为O( q sqrt(n) ),离线为O( n sqrt(n) )。分块可以进行区间操作,像求区间最值,区间和,区间修改等等。适用范围:分块>线段树>树状数组。用分块进行区间操作时,中间的完整的块可以通过预处理来完成,然后两头的就暴力for一下。下面是AC代码:#include...
2018-10-10 17:43:00
125
转载 靶形数独
洛谷原题链接靶形数独这道题是一道很经典的搜索题目,有很多的解题方法,但是Dancing-links这中高端操作身为蒟蒻的我……我就发一个非常容易理解的题解,你就会发现原来蓝题并不难先说一下解题思路:做这道题你首先要知道数独是什么,对吧……要不然没法做了(不知道的戳这里)然后我们来看一下题目中的棋盘:这个棋盘是9*9的,分成了9个宫格,那么我们根据数独的规则,很...
2018-10-08 00:09:00
211
转载 转载:字符串HASH
转载自:Slager_Z字符串Hash总结Hash是什么意思呢?某度翻译告诉我们:hash 英[hæʃ] 美[hæʃ]n. 剁碎的食物; #号; 蔬菜肉丁;vt. 把…弄乱; 切碎; 反复推敲; 搞糟;我觉得Hash是引申出 把...弄乱 的意思。今天就来谈谈Hash的一种——字符串hash。据我的理解,Hash就是一个像函数一样的东西,你放进去一个值,它给你输出...
2018-10-06 22:00:00
102
转载 ST表
ST表是一个用来解决去间最值(RMQ)问题的算法。预处理时间复杂度为O(nlogn),查询复杂度为O(1)。这是一个离线算法,不支持在线修改。这里洛谷模板为例题讲解,洛谷原题链接:https://www.luogu.org/problemnew/show/P3865用f[i][j]表示[i,i+2^(j)-1](长度为2^j)这个区间里的最大值。那么如何维护呢?我们可以用二分的思...
2018-10-06 15:30:00
71
转载 矩阵运算
矩阵加、减法矩阵加法非常简单,对应位置直接加减即可,但是前提是两个矩阵大小相同(即一个矩阵是N*M的,另一个与之相加的矩阵的大小也要是N*M)。就像这样:矩阵乘法矩阵乘法就相对比较复杂了。他需要满足的前提是第一个矩阵的列数要等于第二个矩阵的行数,这样的两个矩阵才可以相乘。下面我用一个图来解释怎么样进行矩阵乘法:矩阵乘法性质: ①矩阵乘法满足乘...
2018-10-06 14:40:00
217
转载 树链剖分
洛谷模板#include<bits/stdc++.h>using namespace std;const int M=500500;struct TREE{int l,r,w,lz;}t[M<<2];struct EDGE{int v,next;}e[M];int head[M],edget,n,m,r,mod,w[M];int d...
2018-09-25 15:26:00
66
转载 快速幂、矩阵快速幂、快速乘法
快速幂快速幂是我们经常用到的一种算法,快速幂顾名思义就是快速的幂运算。我们在很多题目中都会遇到幂运算,但是在指数很大的时候,我们如果用for或者是pow就会超时,这时候就用到了快速幂。快速幂的原理就是,当求b^p的时候,如果p是一个奇数,那么我们就可以把它拆成(b^2)^(p/2)*b,因此每次判断一下是直接乘还是拆开就可以了。洛谷模板链接:https://www.luogu...
2018-08-16 20:33:00
139
转载 对拍
对拍相信大家以前一定听说过对拍打法,对拍可以快速的比较两个程序的差异,在比赛或考试中应用非常广泛。我们有的时候不知道写的算法对不对的话,就可以用对拍了(对拍打发好!!!)。我们先打一个暴力,然后再写一个数据生成器,在写一个一下的对拍程序就可以对拍啦!!#include<windows.h>int main(){ while(1){ ...
2018-08-09 16:49:00
71
转载 Dijkstra算法
最短路径算法简介最短路径算法是在图中求两点(或多点)之间的最短路径,我们最常见的最短路径算法有四种:Bellman-ford、Dijkstra、SPFA、Floyd。Bellman-ford算法可以用于有负边权的图,如果途图中有负环,算法也可以检验出来,时间复杂度为O(VE)。Dijkstra算法只能用于边权为正的图中,时间复杂度为O(n^2)。SPFA算法是Bellma...
2018-08-08 11:43:00
97
转载 浅谈单向链表
链表介绍 链表是由节点构成的一条链,每一个节点由两部分组成,一部分存储此节点的信息(数据域),另一部分存储链表后继元素的存储位置(指针域),这两部分合在一起就是一个节点。链表的节点通常用结构体来表示,一个表示数据域,一个表示指针域。struct Node{ int data; //链表的数据域 Node *next; //链表的指针域...
2018-07-10 17:38:00
119
转载 树状数组模板
模板(一)洛谷原题链接AC代码#include<bits/stdc++.h>#define MAXN 2000010using namespace std;int n,m,a,e[MAXN];int q,x,y,k,answ,len;inline int lb(int o){ //lowbit return o&(-o...
2018-07-09 16:41:00
56
转载 线段树模板简略解释
◎引例◎在详细解释之前,我们先来看一下洛谷上的两个线段树模板题目(洛谷P3372、P3373)。从这几到题目可以看出,线段树的基本操作大致有三种:①给区间中的每一个元素加一个值 ②给区间中的每一个元素乘一个值 ③求出一个区间的每个元素和,下面我们先对线段树做一个基本的了解。◎线段树的定义和结构◎线段树的定义 线段树是一种二叉搜索树,时间复杂度为O(...
2018-06-29 08:59:00
100
转载 题解 P3367 【【模板】并查集】
#include<iostream>#include<cstdio>using namespace std;int n,m,x,y,z;int f[150000]; //f[i]表示i的祖先 inline int find(int x){ //inline是把这个函数插入到调用的地方,速度会快一点 if(f[x]==x) ret...
2018-06-28 16:53:00
71
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人