NOIp_复习
le0tan
Per Aspera Ad Astra
展开
-
【hdu】【线段树入门】I Hate It
Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M ( 0Output对于每一次询问操作,原创 2016-11-07 09:19:11 · 321 阅读 · 0 评论 -
【NOIp复习】图论算法模板合集
#include <queue>#include <vector>using namespace std;//Kruskalstruct edge{ int from,to,val;}e[maxn];bool operator < (const edge&a,const edge&b){ return a.val<b.val;//边按边权排序 }int find(int a原创 2016-11-17 16:10:30 · 671 阅读 · 0 评论 -
【NOIp复习】图论基础算法
图有向图的拓扑排序(用来判环)定义将有向图中的顶点以线性方式进行排序。即对于任何连接自顶点u到顶点v的有向边uv,在最后的排序结果中,顶点u总是在顶点v的前面。存在条件如果存在环,那么就不可能满足u->v时u总是在v的前面了。所以必须是有向五环图(DAG)才能拓扑排序。是否唯一如果该DAG任意两个顶点都有确定的关系,拓扑排序就是唯一的。如果有这么一个唯一的拓扑排序,容易知道这样的顺序恰好能够遍历全图原创 2016-11-06 11:42:57 · 2419 阅读 · 0 评论 -
【NOIp复习】dp复习列表
1、背包问题01背包完全背包多重背包混合背包二维花费(包括限制物品件数的变式)分组背包(dp方程为第k组花费为c选或者不选)有依赖背包问题——树形dp2、树状dp没有上司的舞会(练习多叉树转左儿子右兄弟树,处理有依赖的背包问题)皇宫看守(还没有ac,有时间尝试以下把状态表示换成dp[i][0/1/2]代表当前有看守、父节点有看守、子节点有看守?)3、区间dp石子归并(线性)原创 2016-11-02 20:43:33 · 607 阅读 · 0 评论 -
【NOIp复习】数据结构复习列表
栈 数制转换判断回文数后序表达式队列 搭档问题封闭面积问题链表树 二叉树(性质、存储方式、前中后序遍历、递归建树)二叉查找树最优二叉树哈夫曼编码堆排序优先队列图 最小生成树次小生成树最短路哈希表并查集线段树 树状数组二分图 二分图最大匹配最小边覆盖最小点覆盖最小路径覆盖最佳匹配问题原创 2016-11-02 20:54:09 · 472 阅读 · 0 评论 -
【NOIp复习】数据结构之栈、队列和二叉树
栈1、STL中的stack头文件自带函数empty()堆栈是否为空push()压入元素pop()弹出元素(并不会返回顶部元素,pop之前先判断!empty())size()(返回栈的元素个数)top()(返回栈顶元素)声明:stack<元素类型> 堆栈名复制:stack c1(c2) 代表将c2复制到c12、数制转换输入格式输入一个十进制数N与需要转换的进制d输出格式输出转换后的d进原创 2016-11-03 08:58:18 · 1661 阅读 · 0 评论 -
【NOIp复习】数据结构之树状数组
树状数组的功能以O(log(N))的复杂度实现区间求和、单点修改以O(log(N))的复杂度实现单点查询、区间修改实现方法lowbit函数取出一个二进制数的最末尾1 例如:lowbit(10010100)=100int lowbit(int x) {return x & (-x);}原理分析(直观)末尾0的个数代表了该数组在树上的深度(从下往上) 比如100末尾有两个0,它就等于10\11原创 2016-11-05 10:20:49 · 527 阅读 · 0 评论 -
【NOIp复习】数据结构之线段树
线段树会用到的公式:将完全二叉树从左到右、从上到下依次编号,设当前结点编号为n左节点编号为:2*n 右节点编号为2*n+1把空节点的编号初始化为-1 线段树的本质其实是二叉搜索树啦,所以说可以很方便的解决区间最大最小、查询区间和、修改区间和的问题用数组表示线段树的话,如果本身的区间长度为n,线段树节点数2*n左右,开3*n的大小很保险设线段树上节点代表区间为[a,b],那么左子树代原创 2016-11-05 23:04:12 · 330 阅读 · 0 评论 -
【NOIp复习】欧拉函数
基础欧拉函数phi(x)是指从1…x与x互质的自然数的个数性质1:如果p是质数,phi(p)=p-1,phi(p^k)=p^k-p^(k-1)性质2:如果p,k互质,phi(p*k)=phi(p)*phi(k)然后就得到了百度百科的那个通式: phi(x)=x*(1-1/p1)…(1-1/pn);所以任何一个数,只需要分解质因数,把每个p^k都乘起来就是这个数的欧拉函数值了。在C++中这样原创 2016-11-10 14:58:22 · 581 阅读 · 0 评论 -
【NOIp复习】网络流笔记
基础流网络性质 容量限制:对所有的u,v∈V,要求f(u,v)<=c(u,v)。 反对称性:对所有的u,v∈V,要求f(u,v)=-f(v,u)。 流守恒性:对所有u∈V-{s,t},要求∑f(u,v)=0 (v∈V)。残流网络在给定的流网络G=(V,E)中,设f为G中的一个流,并考察一对顶点u,v∈V,在不超过容量c(u,v)的条件下,从u到v之间可以压入的额外网络流量,就是(u,v)原创 2016-11-10 16:23:39 · 619 阅读 · 0 评论 -
【NOIp复习】STL
String初始化声明:string s1; 默认构造函数,s1为空串string s2(s1); 将s2初始化为s1的一个副本string s3("valuee"); 将s3初始化一个字符串面值副本string s4(n,'c'); 将s4 初始化为字符'c'的n个副本读入:cin>>s5; 读取有效字符到**遇到空格**getline(cin,s6); 读原创 2016-11-11 13:34:51 · 1235 阅读 · 0 评论 -
【模板】KM算法模板(带注释)——二分图带权最大匹配
/*求最小值就把权值全部取相反数,继续套这个最大值的模板*/ #include <iostream>#include<cstring>#include<cstdio>#include<cmath>const int maxn = 101;const int INF = (1<<31)-1;int w[maxn][maxn];int lx[maxn],ly[maxn]; //顶标in原创 2016-11-10 07:46:28 · 636 阅读 · 0 评论 -
【vijos】【拓扑排序】拓扑编号
描述H国有n个城市,城市与城市之间有m条单向道路,满足任何城市不能通过某条路径回到自己。 现在国王想给城市重新编号,令第i个城市的新的编号为a[i],满足所有城市的新的编号都互不相同,并且编号为[1,n]之间的整数。国王认为一个编号方案是优美的当且仅当对于任意的两个城市i,j,如果i能够到达j,那么a[i]应当格式输入格式第一行读入n,m,表示n个城市,m条有向路径。 接下来读原创 2016-11-07 18:25:14 · 612 阅读 · 0 评论 -
【NOIp复习】最近公共祖先LCA&区间最大最小RMQ
RMQ问题的在线ST算法VIJOS 1514#include #include #include using namespace std;int n,m,a,b,dp[201000][30],s[201000];void init_RMQ(){ for(int i=1;i for(int j=1;(1 for(int i=1;i原创 2016-11-15 15:43:36 · 395 阅读 · 0 评论