随笔分类 -  题解

摘要:逆序对 逆序对非常常见,有三种求解的方法,效率差不多,但是树状数组法较快。 归并排序 归并排序的思想就是递归分治,把要解决的区间分成两个区间比较$a_i$和$a_j$的大小(其中$a_i$属于左区间,$a_j$属于右区间,其实就是将左右区间合并、并排序),若$a_i include include 阅读全文
posted @ 2019-04-14 14:32 DAGGGGGGGGGGGG 阅读(169) 评论(0) 推荐(0)
摘要:"题目" 一道模拟和队列题,但模拟比队列的成分多一些。队列也就是用两个指针模拟的。 可以用枚举的思想。首先我们知道r(即区间的右端点是肯定不会左移的),而l右移的同时,r可能不变,也可能右移,所以这样就可以不用$O(n^2)$处理了,剩下的就只剩下模拟的细节。 c++ include include 阅读全文
posted @ 2019-04-13 19:23 DAGGGGGGGGGGGG 阅读(170) 评论(0) 推荐(0)
摘要:"题目" 由于题目不要求强制在线,所以可以离线。 而离线的话就会带来许多便利,所以我们可以先处理出全部打击后的图,通过并查集来判断是否连通。 然后再从后往前枚举,得出答案 c++ include using namespace std; define int long long int n, m, 阅读全文
posted @ 2019-03-31 14:58 DAGGGGGGGGGGGG 阅读(154) 评论(0) 推荐(0)
摘要:"题目" 因为可能要参加qbxt的数论考试,所以最近要开始猛刷数论题了。 这是第一道,不过看样子并不想数论题啊,只是一个博弈论。 思路 一位著名老师说过,数学就是转化和化简,所以先考虑化简,先考虑化简年份,因为无论从闰年到普通年都是偶数个月,所以年份没有影响。 然后就来判断月份,我们发现11.4输, 阅读全文
posted @ 2019-03-22 17:29 DAGGGGGGGGGGGG 阅读(375) 评论(0) 推荐(0)
摘要:"题目" 一道考验递归的题目,在面对这种字符串处理的题时,还是应该用递归这种比较好看懂而且比较简单写的算法。 $code$ c++ // luogu judger enable o2 include include include include include define int long lo 阅读全文
posted @ 2019-03-17 15:03 DAGGGGGGGGGGGG 阅读(142) 评论(0) 推荐(0)
摘要:"题目" 很好想的一道二分题,首先,二分一定满足单调性,而题目中非常明显的就是用的车越多,所用时间越少,所以可以枚举时间,判断是否可以比$m$少。 然后在二分时,更是要注意下标的一些问题,也要注意车和$m$作比较的顺序。 $Code$ 阅读全文
posted @ 2019-03-15 21:00 DAGGGGGGGGGGGG 阅读(125) 评论(0) 推荐(0)
摘要:"题目" 一道比较好想的树形$DP$ 完全可以用树形DP的基本思路,递归,然后取最优的方法。 $Code$ c++ include include include include using namespace std; int n, a, b, cnt, maxn, data[100100], d 阅读全文
posted @ 2019-03-15 19:36 DAGGGGGGGGGGGG 阅读(155) 评论(0) 推荐(0)
摘要:"题目" 一道十分经典的数论题,在考场上也可以用暴力的算法来解决,从而得到$50pts$的较为可观的分数,而如果想要AC的话,我们观察原题给的数据范围$a,b,c,d$(为了好表示,分别代表a1,a2,b1,b2)。 这样我们可以根据比较容易推出的定理来优化 $$gcd(a,b)==c~= ~gcd 阅读全文
posted @ 2019-03-14 17:15 DAGGGGGGGGGGGG 阅读(166) 评论(0) 推荐(0)
摘要:"题目" 此题是一个状态转移方程还算比较多的一个区间DP,这个题也能启示我们如果某个状态不能够很好地解决问题,那么不妨试试再加一维,而且如果转移顺序不确定的话,可以试试记忆化搜索,说不定就可以比较容易的写出状态转移方程和状态转移。 状态 如果我们要关掉$i$到$j$的灯,则最后一个关掉的灯就是$i$ 阅读全文
posted @ 2019-03-14 17:01 DAGGGGGGGGGGGG 阅读(148) 评论(0) 推荐(0)
摘要:"题目" 这个题主要是一个考分类讨论的模拟题,做这个提的时候首先要脑子清醒,才可以清楚地写出怎么模拟来。 $Code$ c++ include include include include include define N 100100 using namespace std; int n, k, 阅读全文
posted @ 2019-03-10 16:42 DAGGGGGGGGGGGG 阅读(270) 评论(0) 推荐(0)
摘要:"题目" 作为$NOIp2017D1T3$ 这个题还是很良心的,至少相对于$NOIp2018$来说,希望$NOIp2019$不会这么坑吧。 这个题可以作为记忆化搜索的进阶题了,做这个题的方法也是多种多样。 $30pts$ 30分可以直接套用最短路计数的模板直接套上就可以了。 $100pts$ 100 阅读全文
posted @ 2019-02-24 20:16 DAGGGGGGGGGGGG 阅读(154) 评论(0) 推荐(0)
摘要:"题目" 这个提示一个简单的最短路计数,除了用数组存上最短路的个数的做法以外,还有可以在得出最短路之后,搜索加剪枝的方法来通过该题。 可以反向搜索用A 的方法来通过,但是这个题的去重十分的恶心,需要一些玄学操作。 $Code$ c++ // luogu judger enable o2 includ 阅读全文
posted @ 2019-02-22 21:09 DAGGGGGGGGGGGG 阅读(135) 评论(0) 推荐(0)
摘要:"题目" 此题主要是考察二分图匹配,而二分图匹配最主要的就是建图,而图一般都是要分成两个部分来分,比如该题就需要先将在学校住的人和床连在一起,因为在学校住就会与一个床。然后每两个人之间假如他们相互认识就可以相互连边,这样就可以通过人人相连实现人床相连。 $Code$ c++ include incl 阅读全文
posted @ 2019-01-18 19:22 DAGGGGGGGGGGGG 阅读(125) 评论(0) 推荐(0)
摘要:"题目" 这个题考察二进制分解。 $Code$ c++ include pragma GCC optimize(2) pragma GCC optimize(3) using namespace std; long long n, data[100010], cnt; int main() { sc 阅读全文
posted @ 2019-01-14 17:09 DAGGGGGGGGGGGG 阅读(137) 评论(0) 推荐(0)
摘要:"题目" 这个题是一个名副其实的考验细节和头脑清醒的一个题。 根据提议我们可以进行分类讨论。 我们用优先队列来模拟CPU,我们可以用在线的算法来写,每次输入一个进程都要判断这个进程是否可以挤掉优先队列里的进程,当可以挤掉时就可以换下一个进程了,我们可以把最大的挤掉,其余就都可以挤掉了,而如果该进程挤 阅读全文
posted @ 2019-01-10 17:44 DAGGGGGGGGGGGG 阅读(194) 评论(0) 推荐(0)
摘要:"题目" 不得不说这个题非常毒瘤。 简化题意 这个题的暴力还是非常好想的,完全可以过$50\%$的数据。但是$100\%$就很难想了。 因为数据很大,所以我们需要用$O(\sqrt n)$的时间求出每个时间的前面第一个跟它满足均衡区间的时间。 此时我们会很快速的想到$Hash$或$Map$,他们的时 阅读全文
posted @ 2019-01-09 16:50 DAGGGGGGGGGGGG 阅读(154) 评论(0) 推荐(0)
摘要:"题目" 这个题可以说是一个很基础偏中等的$DP$了,很像$NOIpD1T2$的难度,所以这个题是很好想的。 简化题意 可以先简化一下题意,这个题由于从上面向下调和从下向上爬都是一样的,所以我们就可以轻松的想到暴力的方法。 设$dp[i][j]$表示i编号的树的j高度从一开始跳最多能吃多少柿子,每次 阅读全文
posted @ 2019-01-09 16:34 DAGGGGGGGGGGGG 阅读(243) 评论(0) 推荐(0)
摘要:打井 "题目" 该题是一个最小生成树的好题,但是比起一般的最小生成树来说他不仅仅有各个井相连,而且还要和地下水相连,所以地下水我们也可以看成一口井。 代码 cpp include using namespace std; struct edge { int a, b, c; }e[100100]; 阅读全文
posted @ 2019-01-05 21:06 DAGGGGGGGGGGGG 阅读(191) 评论(0) 推荐(0)
摘要:"题目" 这是一道简单的搜索题,考查的还是比较基础的东西,其时搜索有时候并不难写,主要是要想到怎么搜。比如这个题,如果想二维四个方向搜则没有头绪,反之因为搜索是用递归实现的,所以我们可以使用递归的特性,把大问题处理成小问题来解决。 所以我们可以用处理每一行的形式,把这一行的最大值求出来,再接着向下一 阅读全文
posted @ 2018-12-22 21:23 DAGGGGGGGGGGGG 阅读(426) 评论(0) 推荐(0)
摘要:"题目" 首先我们先分析一下题目范围,$a,b,c$ 都是整数,因此我们可以得出它的函数值在$(0,+\infty )$上是单调递增的,,然后我们可以根据函数的性质,将每个函数设置一个当前指向位置,都从从小的自变量开始找,每次找到最小的函数,并将最小函数的当前指向位置+1,因为并不知道最小函数自变量 阅读全文
posted @ 2018-12-14 19:27 DAGGGGGGGGGGGG 阅读(203) 评论(0) 推荐(0)