|NOIPRP++|
文章平均质量分 65
MaywrILoi
这个作者很懒,什么都没留下…
展开
-
二分图的染色与匹配
二分图:图中点集可分成两部分,使处于同一部分的点间没有连边 染色法,是一种简单地判断是否为二分图的方法. 对图中的每个点进行染色,使相临的点颜色不同,如果可以完成则为二分图,否则不为.BFS实现:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<qu原创 2017-09-30 11:54:53 · 493 阅读 · 0 评论 -
2017.10.30清北学堂测试
Problem 1 :a 【思路】 不得不说本题正解还是比较难以理解的,还请仔细阅读推算。 (a * b)| x 意为(a * b)整除x,这里a,b限制条件为1x整除(a * b)的答案数相同。对于30%的数据,O(n^3)暴力: 枚举a,b,和1-n,判断是否存在一个c使得x整除(a * b)对于60%的数据,O(n^2)暴力:——这是正解的基础 我们设a * b *原创 2017-10-30 20:09:15 · 572 阅读 · 0 评论 -
Codevs2491玉蟾宫
http://codevs.cn/problem/2491/ 求最大子矩形面积,方法很多。 首先介绍一个cgold的O(n^3)暴力做法: http://blog.csdn.net/qq_36312502/article/details/77334624 除此之外这里还收集了三种方法,但首先要明确如下几点:本题的统计思路:分别计算以每一行为底所能得到的最大子矩形面积 。 无论什么方法,我们原创 2017-10-31 20:09:06 · 303 阅读 · 0 评论 -
洛谷 P3093 牛奶调度Milk Scheduling
https://www.luogu.org/problemnew/show/3093 思路 详见代码注释 代码 #include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<queue>using namespace std;int n,maxn,now,an原创 2017-11-08 20:36:04 · 467 阅读 · 0 评论 -
Tarjin算法求桥和割点模板
定义 存在于无向图中。 割点:删除此点使得图中连通块数量增加。 桥(割边):删除此边使得图中连通块数量增加——割点于割点之间的直接连边为桥。 判断割点方法: 1.u为树根,且u有多于一个子树。 2.u不为树根,且存在(u,v)为树枝边(或称父子边,即u为v在搜索树中的父亲),使得dfn(u)<=low(v)。 也就是u的子树中的v点无法到达u之前的点,所以去掉u点就是两个连通分支,所以原创 2017-11-09 11:27:41 · 633 阅读 · 0 评论 -
Codevs 2822 爱在心中
http://codevs.cn/problem/2822/ 思路 Tarjin算法找出图中所有的节点数>1的环即爱心天使,将每个爱心天使缩成一个点,重新建图,在新图中找到一个入度为0的点(至多一个),只有此点可能被所有人爱。 那么我们在建图的时候反向建边,看此点能否走到其他所有点即可。 代码 #include<iostream>#include<cstdio>#include<algor原创 2017-11-09 11:18:23 · 467 阅读 · 0 评论 -
Codevs2461反质数
http://codevs.cn/problem/2461/Codevs2912,洛谷P1463与此题完全相同…. 虽然分别是06浙江07河南和05山东的省队选拔赛题目….. 注意题目有问题..是求最小的反质数。思路 首先要明确一个结论: 某一个数的因子数 = 组成这个数的各质因子数的次数+1的乘积。可以由唯一分解定理和乘法原理得到。 这是我们统计因子数的计算式。 那么我们就将一个反质数原创 2017-11-02 19:19:12 · 189 阅读 · 0 评论 -
Codevs 2173 忠诚
http://codevs.cn/problem/2173/ ST表 代码 #include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int n,m,a,b,minx;int num[100010],d[100010][20];v原创 2017-11-09 11:03:26 · 279 阅读 · 0 评论 -
Codevs 2370 小机房的树
http://codevs.cn/problem/2370/ 倍增LCA版本代码 #include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;int n,m,u,v,c,tot;int next[50001*2],first[5000原创 2017-11-09 11:01:41 · 334 阅读 · 0 评论 -
NOIP2013火柴排队
http://codevs.cn/problem/3286/ 思路 首先易知,当a,b两串都进行过排序后,各对应位置的差值平方之和最小。 简单证明: 设序列只有两个数分别是a,b;c,d;且a < b;c < d 设S1=(a-c)^2+(b-d)^2,S2=(a-d)^2+(b-c)^2, S1-S2=2ad+2bc-2ac-2bd=2a(d-c)+2b(c-d)=2(c...原创 2017-10-26 19:26:04 · 400 阅读 · 0 评论 -
形形色色的水果姐逛水果街——codevs水果姐逛水果街1-3:线段树与ST表
这次的注释可能略显繁琐,但是是我认真写的帮助大家理解也帮助自己回顾,本文中重复部分不再添加注释,还请查看之前的部分作参考。 http://codevs.cn/problem/3304/水果姐逛水果街Ⅰ//线段树版本#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>usi原创 2017-09-27 16:13:14 · 457 阅读 · 0 评论 -
Codevs2404糖果——差分约束系统整理
http://codevs.cn/problem/2404/ 典型的差分约束系统,给定多个约束条件,求满足条件的答案最小,最大值等。 对于一个差分约束系统,我们可以将其转化为一个不等式组,然后据此建边跑最短路算法。为什么要建边跑最短路算法呢? 观察,在单元最短路问题中存在如下的三角形不等式 对于最短路有:f + v <=t,即 f - t <=-v 或 t - f >=v 对于最长路有:f原创 2017-10-24 16:21:02 · 344 阅读 · 0 评论 -
二分姿势
牢记二分姿势:while(r-l>1){ int mid=(l+r)>>1; if(check(mid)) l=mid; else r=mid;}原创 2017-10-21 15:55:56 · 345 阅读 · 1 评论 -
洛谷 P2309 loidc 卖卖萌
https://www.luogu.org/problemnew/show/P2309 思路 求一下前缀和,如有Si-Sj>0,即Si>Sj 则j+1到i的子段和>0 ans = 正序对个数+0到i的子段和中>0的个数即前缀和>0的个数 代码 #include<iostream>#include<cstdio>#include<algorithm>#include<cstring原创 2017-11-09 08:20:37 · 422 阅读 · 0 评论 -
欧几里得及扩展欧几里得算法详解
欧几里得算法 有两个数 a b,现在,我们要求 a b 的最大公约数,有欧几里得算法: gcd(a,b) = gcd(b,a%b) 若b>a,则第一步先完成了交换,再开始了求最大公约数的过程。 代码: 为什么要在b = 0时回溯呢? 对于两个数a b,显然在辗转相除的过程中一定会得到一个状态一个数非0,一个数为0。 简单的证明: 上图为欧几里得算法分部过程。 观察最后的a%原创 2017-10-27 07:05:20 · 504 阅读 · 0 评论 -
Codevs1074食物链
http://codevs.cn/problem/1074/ 加权并查集/扩展域并查集的经典题目方案一:加权并查集思路 我们设rank[i]记录记录i到其father的关系(或言距离),有0,1,2三种表示同类,吃与被吃 ,然后注意在路径压缩时维护此关系,当新得到的两只动物的关系已经被确定是判断此时关系是否矛盾,合并时确定新增关系(u与v)。 一定要注意:食物链为环状结构。 在这里解释两处对原创 2017-10-28 10:52:14 · 314 阅读 · 0 评论 -
2017.10.22队内互测——Loi水题汇总
出题人:Alicebuju,cgold,Leporidae 话说天下大事分久必合合久必分,今天下又三分,为了避 免生灵涂炭蜀、吴、魏三国决定用考试的方式决定霸主的 地位。汉献帝刘协不甘被曹操囚禁暗中派人偷偷混入考场 企图赢得霸主地位。而蜀、吴、魏三国君主也都是雄才大 略之辈,暗地里搜寻能人异士替他们作弊,于是一场没有 硝烟的战争正悄悄展开……Problem 1 :题目来源:http://原创 2017-10-24 19:00:46 · 338 阅读 · 0 评论 -
动态规划经典模型整理
最长上升子序列:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;int n,ans=1;int sequence[10000],f[10000];int main(){ scanf("%d",&n原创 2017-11-09 00:35:52 · 2266 阅读 · 0 评论 -
Codevs2488绿豆蛙的归宿
http://codevs.cn/problem/2488/ 思路 题目保证所有点都可以到达终点,则开始时加入队列的点有且仅有终点,且使得通过反向topsort/search 得到的期望与正向是相同的,并且起点到终点的期望始终等于终点到起点的期望 1. 正向DFS只需要记录可以到达n的路径的期望,依次传参找到终点再加入答案 反向DFS记录可以到达1的路径的期望,依次传参找到起点再加入原创 2017-10-23 00:08:57 · 284 阅读 · 0 评论 -
2017.11.1清北测试
Problem 1 :立方数Time Limit:1000ms Memory Limit:128MB题目描述LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数。 现在给定一个数P,LYK想要知道这个数是不是立方数。 当然你有可能随机输出一些莫名其妙的东西来骗分,因此LYK有T次询问~输入格式 第一行一个数T,表示原创 2017-11-01 16:49:48 · 607 阅读 · 0 评论 -
考试注意事项
NOIP2017复赛考试时间,11月11,12日,也就是大后天。 出发时间:11月10日早8:30,记得带身份证。 考试注意事项:1.来着学长的教导: 在NOIP前一天试机的时候,记得将键盘上的每一个键都按一遍,确保能用并且好用,键盘鼠标等硬件设备的问题尽量在考试之前解决。 监考老师你你和校方沟通的唯一渠道,切记利用。他还有最重要的一个用途 检查文件存放格式!在交卷之前,一定一定要让他帮你看看原创 2017-11-08 21:45:09 · 942 阅读 · 0 评论 -
NOIP2013货车运输
http://codevs.cn/problem/3287/ 方法一,二之后会补上的~方法三:按秩合并+并查集树结构上暴力查询时间复杂度O(mlogn)先放三张图片,作为对代码的解释 1.此处为样例按秩合并后的树形 2.按秩合并降低树高——还要合并到同一根节点 3. ask_min(6,7)—3对取min得到的答案无影响 思路 第三种方法比较难以理解——但却是理解按秩合并的好原创 2017-10-29 17:28:11 · 470 阅读 · 0 评论 -
Codevs2604舞会邀请
http://codevs.cn/problem/2604/按可扩展的节点数从大到小选取,直到通知到所有点为止…这个数据范围怎样花式做都可以啦~代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int n,ans,tmp,to原创 2017-11-02 18:53:29 · 205 阅读 · 0 评论 -
Codevs1332上白泽慧音
http://codevs.cn/problem/1332/ Tarjin裸题卡输出…代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int n,m,ru,rv,rw,tot,cnt,num,p,maxn;int fir原创 2017-11-02 18:49:48 · 266 阅读 · 0 评论 -
STL及各种技巧
数据生成: #include#include#include#includeusing namespace std;int main(){ srand(time(0)); int n=rand()%100+1; printf("%d\n",n); for(int i=1;i<=n;i++) { int a=rand()%10原创 2017-11-05 07:01:37 · 491 阅读 · 0 评论 -
Codevs1228苹果树
http://codevs.cn/problem/1228/思路 这个题咋一看就会想到树链剖分,但事实上,我们只需要将树链剖分中,由DFS序确定树上节点在数据结构中的对应位置的方法提取出来。用每个点的DFS序,及以此点为根节点的子树中最大的DFS序确定每个子树的范围,用数据结构维护其区间和即可。 我们需要知道: DFS序主要用于处理子树问题。 而树链剖分则主要用于处理树上两点间问题。线段树代原创 2017-11-02 19:34:46 · 353 阅读 · 0 评论 -
NOIP知识汇总及模板整理
排序求逆序对NOIP2013火柴排队 洛谷 P2309 loidc 卖卖萌二分牢记二分姿势前缀和及差分优化NOIP2012借教室差分优化贪心洛谷 P3093 牛奶调度 HDU 5500 Reorder the Books Codevs 1615 数据备份高精度高精加减乘模板最短路,最小生成树及拓扑排序最短路,最小生成树及拓扑排序模板第K短路Dijkstra版本 A*模板分层图最短路分层图最短原创 2017-11-09 10:25:03 · 1166 阅读 · 0 评论 -
A*模板
求第k短路。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<queue>using namespace std;const int INF = 1e9+7;int n,m,ts,te,k,tot1,tot2,ru,rv,rw;int first原创 2017-10-26 07:35:11 · 493 阅读 · 0 评论 -
OI知识总结表
———— ————原创 2017-10-24 18:36:41 · 294 阅读 · 0 评论 -
KMP模板
https://www.luogu.org/problem/lists?name=3375洛谷P3375KMP字符串匹配 这个算法真是精妙~#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int len1,len2,tot;原创 2017-10-24 17:27:42 · 245 阅读 · 0 评论 -
Codevs3315时空跳跃者的魔法
思路 将各奇点到其他奇点位置的消耗作为边的权值算出边来,做MST即可。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int n,tot,ls,cost;int u[1000010],v[1000010],w[1000010原创 2017-10-24 17:24:11 · 194 阅读 · 0 评论 -
背包问题整理
准确一点说是对背包九讲的学习笔记 …思想和方法:在学习过程中了解的求解DP问题的思想,以及部分细节方法1.DP初始化为一已知的合法解 2.滚动数组优化 3.”拆分物品”的思想和方法 4.当发现由熟悉的动态规划题目变形得来的题目时,在原来的状态中加一维以满足新的限制是一种比较通用的方法01背包问题: 有N件物品和一个容量为V的背包,第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入原创 2017-10-31 21:17:09 · 333 阅读 · 0 评论 -
快速幂模板及应用
实现原理: a^b mod c = ((a^2)^b/2)mod c,b为偶数, a^b mod c = ((a^2)^b/2 * a)mod c,b为奇数。代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<ctime>using namespace std;typedef原创 2017-11-01 12:59:31 · 285 阅读 · 0 评论 -
2017.11.3测试
Problem 1 :第二题【题目描述】 给你两个日期,问这两个日期差了多少毫秒。【输入格式】 两行,每行一个日期,日期格式保证为“YYYY-MM-DD hh:mm:ss”这种形式。第二个日期时间一定比第一个日期时间要大两个日期的年份一定都是 21 世纪的年份。【输出格式】 一行一个整数代表毫秒数。【样例输入 1】 2000-01-01 00:00:00 2000-01-01 00:00:原创 2017-11-04 07:29:00 · 361 阅读 · 0 评论 -
洛谷P2898haybale猜测Haybale Guessing
https://www.luogu.org/problemnew/show/2898思路 显然,若按照题目给定的顺序处理,判断过程将异常麻烦…. 但仔细分析题目后发现,本题对矛盾的产生有着诸多限制在。 那么我们可以考虑,对于矛盾的情况下一个统一定义。 对于本题,则为“若某一确定了最小值的区间,被一个或多个最小值比他大的区间完全覆盖,那么此时的情况就是矛盾的。”—— 注意适当的将此种方法扩展到原创 2017-11-04 08:31:46 · 418 阅读 · 0 评论 -
数论知识整理
最大公因数gcd和最小公倍数lcm:代码ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}ll lcm(ll a,ll b){ //return a*b/gcd(a,b); return a/gcd(a,b)*b;//防止a*b炸ll }扩展欧几里得算法exgcd:代码ll exgcd(ll a,ll b,ll &x,ll &原创 2017-11-04 09:22:16 · 724 阅读 · 0 评论 -
2017.11.6与章丘四中互测章丘试题
首先感谢章丘四中的同学精心准备了这套题并在考试结束后进行了细致讲解。 不过由于你们的题目背景太长了就不放在这里了。Problem 1 :谜团题目描述 谜团,是夜魇军团一名强大的战士。他来自远古,是一种不可思议的重力生命体,是来自原始黑暗的扭曲声音,在宇宙中的第一丝光线诞生前就存在的深渊化身。他能动用深渊之力将生物的身体污染,使之转化为自身的碎片“虚灵”。“虚灵”为谜团所控,拥有一定的战斗力。更为恐原创 2017-11-06 21:16:14 · 543 阅读 · 0 评论 -
分层图最短路问题简析
分层图最短路,就是在分层图上解决最短路问题。 一般解决方法是多开一维记录状态,多开的维度记录状态的种类数即为分层数。 基本模型:在图上,有k次机会可以直接通过一条边而不计算边权,问起点与终点之间的最短路径。 例题:Bzoj 2763 飞行路线 http://www.lydsy.com/JudgeOnline/problem.php?id=2763 思路 我们设置dis[i][k]表...原创 2017-11-07 12:06:39 · 4189 阅读 · 1 评论 -
2017.11.8NOIP模拟赛
Problem 1 :洗澡问题描述 你是能看到第一题的 friends 呢。——hja 洗澡的地方, 有一段括号序列,将一个括号修改一次需要1的代价(将左括号变成右括号或者相反),求最小代价使得括号序列合法。 输入格式 一行一个括号序列。 输出格式 一行一个整数代表答案。 样例输入 ())( 样例输出 2 数据范围与规定 对于50%的数据, 括号序列长度不超过100。 对于100%的原创 2017-11-08 16:32:01 · 590 阅读 · 0 评论 -
Codevs1995黑魔法师之门
http://codevs.cn/problem/1995/ 思路 对于题设条件:“图中每个点的度数大于零且都是偶数的子图”即为一个环。 当加入一条边的时候,计算此时图中环的个数。 当图中两个点已经连通时,又在两点间加入一条边,则产生新的环。 此时子图数=原图子图数*2+1 意义为:原图中环的个数+使用新增的一条边替换两点原边的个数+原边于新增边形成的环的个数(1) 并查集维护环上点的原创 2017-10-23 10:27:39 · 259 阅读 · 0 评论