随笔分类 - 模拟
摘要:"题目" 细节比较多的二分+跟LCA倍增差不多的思想 首先有这样一个贪心思路,深度越低的检查点越好,而最长时间和深度具有单调性,即给定时间越长,每个军队能向更浅的地方放置检查点。因此可以考虑二分时间,然后判断军队是否可以放置在控制疫情的地方。 但是有的军队需要先满足自己当前所在的节点,然后此节点如果
阅读全文
摘要:"题目" 搜索+剪枝 对于每个操作都只需要模拟就可轻松得出每一步操作的代码。 这个题需要考虑回溯操作,由于搜索是在一棵搜索树中,因此我们可以记录每一个深度的回溯状态,仅仅用一个数组会出现状态转移失误的情况,所以需要用多个数组。然后考虑剪枝,如果交换不交换没有区别,则不需要交换,而且i向左交换等同于i
阅读全文
摘要:"题目" 如果没有氮气加速器,则该题为一个模拟题。 但是本题存在氮气加速器,所以我们需要考虑贪心策略。 题目要求我们使所有人等待的时间最短,因此我们需要算出每段路径(路径即为车站之间的DD)对时间的贡献多少,取其中最多的减去就好了。首先我们需要求出每个车站最远向右影响到什么地方,然后算出这段地方的
阅读全文
摘要:"题目" 双向链表+倍增+模拟。 70pts70pts: 说白了此题的暴力就是细节较多的模拟题。 我们设离ii城市最近的点的位置为B[i]B[i],第二近的位置为A[i]A[i]。设AA或BB数组等于00的的情况不能接下去走到第二或第一近的位置。 1. 处理到底能不能继续向下走,即当前城市下一步无法选择城
阅读全文
摘要:"寻宝" 模拟加优化,细节比较重要。 我们用ti[i]表示i这一层有楼梯的个数,然后我们把当前1号点的数据mod上ti[i],然后使该数不能等于0,就行了。 c++ include define int long long const int mod = 20123; using namespace
阅读全文
摘要:"题目" 对于这种题目描述比较长的题,可以考虑简化题意。 简化后的题意: 给定一棵带边权无根树 在其直径上求出一段长度不超过s的路径F, 使得离路径距离最远的点到路径的距离最短。求最短距离。 根据题目范围,直接暴力floyd求多源最短路径。然后n2n2求出直径和直径端点。搜索求出直径上的点。然后再
阅读全文
摘要:"题目" 求树的直径,因为任意两个居住点之间有且只有一条通路,所以这是一棵树。 根据题意父母先从C去A,再去B,或者反过来。 我们一定是要让A到B最大,也要让C到A和B的最小值最大。 AB最大一定就是直径了。 CA最大直接先求出任意一条直径的两个端点,必定一个是A、一个是B。然后枚举C,找到最大的$
阅读全文
摘要:"题目" 首先分析数据范围发现m很大,所以线性做法肯定不行,因此考虑倍增,即预处理出每个点跳1次后的位置。然后只用两个数组类似于快速幂,推出每个点跳m次后的位置。 预处理离每个点第k小的点,可以用长度为k的尺子尺取。 c++ include include include include inclu
阅读全文
摘要:"题目" 先判断是否有解,然后开两个栈,分别存进入递归时间复杂度为O(1)的变量,和时间复杂度为O(n)的变量,最后取最大值。 include using namespace std; int T; int tong[1000100]; stack s, s2; int main() { // fr
阅读全文
摘要:"题目" 一道模拟题,问题不是很大,主要需要读题清晰,且算法的操作顺序要搞明白,比如在每一秒的开始,所有无人机 先 移动,然后再一步一步操作。 然后就是判断方向是否一致了,细节还是很多的。 c++ include using namespace std; int n, t; struct dir {
阅读全文
摘要:"题目" 按理来说是可以二分的,但是发现其实直接暴力然后注意细节就可以了。 先找到牛所在的起点,然后分别向右找和向左找。 第一次查找从rr点冲到ll点时,突破不了ll,从ll点冲到rr,能突破rr,要给rr加多少,然后取minmin,每次l,r并不需要返回原先值,原因是l没有增加前
阅读全文
摘要:"题目" 一道模拟和队列题,但模拟比队列的成分多一些。队列也就是用两个指针模拟的。 可以用枚举的思想。首先我们知道r(即区间的右端点是肯定不会左移的),而l右移的同时,r可能不变,也可能右移,所以这样就可以不用O(n2)处理了,剩下的就只剩下模拟的细节。 c++ include include
阅读全文
摘要:"题目" 因为可能要参加qbxt的数论考试,所以最近要开始猛刷数论题了。 这是第一道,不过看样子并不想数论题啊,只是一个博弈论。 思路 一位著名老师说过,数学就是转化和化简,所以先考虑化简,先考虑化简年份,因为无论从闰年到普通年都是偶数个月,所以年份没有影响。 然后就来判断月份,我们发现11.4输,
阅读全文
摘要:"题目" 一道考验递归的题目,在面对这种字符串处理的题时,还是应该用递归这种比较好看懂而且比较简单写的算法。 code c++ // luogu judger enable o2 include include include include include define int long lo
阅读全文
摘要:"题目" 这个题主要是一个考分类讨论的模拟题,做这个提的时候首先要脑子清醒,才可以清楚地写出怎么模拟来。 Code c++ include include include include include define N 100100 using namespace std; int n, k,
阅读全文
摘要:"题目" 这个题是一个名副其实的考验细节和头脑清醒的一个题。 根据提议我们可以进行分类讨论。 我们用优先队列来模拟CPU,我们可以用在线的算法来写,每次输入一个进程都要判断这个进程是否可以挤掉优先队列里的进程,当可以挤掉时就可以换下一个进程了,我们可以把最大的挤掉,其余就都可以挤掉了,而如果该进程挤
阅读全文