随笔分类 - OI
摘要:挺难的。。 这道题以点与点的结合作为问题,问我们如果一个点被删掉,那么有几组点的有序结合不能进行。 题目给的是无向图,所以内存双倍。 不知道为什么,与割点有关系。 如果一个点不是割点,那么去掉这一个点,其他点之间的相互到达显然都不会被影响,而只有被割的点与其他点之间的才受影响。 如果一个点是割点,那
阅读全文
摘要:思路不难,但是实现过程还是错了。。。 给这道题的几个点补充一下: 可以按照顺序滴下这些油滴。 滴油滴的过程,是以滴下的点为圆心,向四周扩展出最大的半径。图形一定是个圆。 油滴碰到边界就停止流。 因为用圆表示,所以你绝对不可能弄个数组模拟!我真的菜! 我最开始的时候还想着把坐标平移,结果没必要。。。
阅读全文
摘要:弱连通模板题,不过还是不会。。。 这道题在POJ2762有,这个出题人直接翻译弄过来了。。。 弱连通的定义是:从u能到达v 或 从v能到达u,则u和v这两个点弱连通。 显然如果是强连通分量就一定是弱连通分量啦,所以可以直接缩点弄掉。 缩点后的DAG中,可能会不符合条件的不可能被我们缩掉。 那么对于这
阅读全文
摘要:这道树形dp我又跪了。。 这道题给你二叉树,共有$n 1$条边,每条边有边权,只有在父亲结点被保留的情况下才能算进答案,求保留$m$条边的答案最大值。 我拿起来就开始写,后来才发现是边权啊! ~~翻题解~~发现,还是那个老思路:边权变为点权。只要把每一条边的边权弄到终点的点权即可。 由于是树,所以不
阅读全文
摘要:第一次用set水splay好爽啊! 这道题很明显,就是弄两个平衡树(一个也可以)。 进来一个人,就去另一边找找前驱和后继,优先找前驱,找个绝对值最小的配对走。 其实用一下set就可以了啊! 使用 就可以找到x元素, 一下就得到前驱,++一下应该就得到了后继。 其实后继也直接可用 。 再根据题意模拟一
阅读全文
摘要:神级剪枝。。。 首先这道题有坑点,超过50的木棍不读入。 思想肯定就是爆搜啊!但是直接的爆搜会gg。 接下来是剪枝: 1. 你当然会聪明地取能够整除的答案来枚举嘛。。 2. 这些木棍可以从大到小排序,然后从大到小凑木棍。对答案无影响。 3. 可以记录木棍的最大值和最小值,然后枚举木棍的时候就在这个区
阅读全文
摘要:紧接着的一道树形dp。 这道题直接告诉你这是一颗树了。叶子节点是客户。 连边要费用,客户会付钱。求不亏本情况下能满足的最大用户。 还是老思路:用 表示第i个节点的子树下,取j个客户的最大值。 还是那个方程: 要不亏本,这个值肯定要大于0嘛。所以逆序搞一搞就好了。 代码:
阅读全文
摘要:第一道树形dp。挺奇怪的。 这道题选择一个点是有一个先决条件,也就是要先选他父亲的点。 画出草图可以发现就是森林嘛。。。 利用网络流的思想,建立超级根结点,把以0为父亲的都连到root去。 树形dp较线性dp的不同之处就是要dp儿子。 所以在树上要dp之前先弄一下儿子,确保他已经被dp好了就可以了。
阅读全文
摘要:真·毒瘤题! 这道题给你那么少的东西,就是要你爆搜了。 先注意一下,不然后面的做不了了,直接WA掉。 他的意思是: 我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 所以除了最下一层的下表面之外的所有蛋糕表面积都要算进答案。 可以发现,上面的圆柱体可以按下去,所以所有的上表面等于最下的圆柱底
阅读全文
摘要:原来splay还能换钱呐! 这道题让我明白了一点:原来splay还可以不是二叉排序树啊! 本来第一次想,就认为我们应该要维护一个优先级,然后每个操作就更改一下。 但其实只要用来维护这段序列就可以了。。。 看一下这五种操作: 1. 将某元素置顶。先splay到根,如果左子树为空就无须操作,否则寻找后继
阅读全文
摘要:只要知道套差分就没难度了。 因为你要区间添加一个等差数列,等差数列做差分的话,中间的值是一样的。 随便手膜几组数据,就会发现如何处理差分数组了: 对于点$l$:加上首项$k$。 对于区间$(l, r]$:加上公差$d$。 对于点$r + 1$:减掉等差数列的第$n$项。 只要减不要写成加就可以了。。
阅读全文
摘要:这道题和后面一道题是孪生兄弟。。。 给你两组单调递增的序列,可以拿里面的元素相互相加,要你求出第1至第$m$小的值。 同样是那样的思路,用堆。 设$y = a_i+b_i$,那么就同样有$n$个元素了。 这里固定b的下标先不定,向堆里面添加$a_i+b_1$。 然后执行$m$次出队,每次出队补充另一
阅读全文
摘要:这道题跟 "P1631 序列合并" 嘻嘻相关 题目给你$n$个二次函数,给你$a$,$b$,$c$。 不过仔细的话可以发现:这三个系数都是正整数! 所以意味着二次函数的对称轴在x轴负半轴,在我们考虑的$[1, +\infty]$中的整数区间都是单调递增的。 所以同一个函数中,$x=1$时的函数值是最
阅读全文
摘要:注意细节! 我一开始没有分清摄像头和区域,结果都视为一谈。结果只有10分。。。 松鼠敲摄像头的顺序就是拓扑序。 为了方便起见,把区域也视为结点,然后做toposort。 最后能删除多少个摄像头就有多少个摄像头被敲,拿总数$n$来减掉这个就是答案。 代码:(我打成嗲吗) cpp include inc
阅读全文
摘要:很气。。。 就是给你一个序列,让你支持四种操作: 1. 全体数字加一个数k。 2. 全体数字减一个数k。如果有元素的值小于minv则必须删去。 3. 添加一个元素。当且仅当元素值k小于minv时添加。 4. 查询全局第k大。是真的第k大。 ~~一开始就不会~~ 由于加减都是针对全局的,如果使用laz
阅读全文
摘要:这道题才是真正的模板题啊! 自信地把那个模板敲下来,只有60。 因为我又不知道如何判无解或者无穷解。 然后在漫长的查资料过程中,我改变了我的写法。 虽然原来那种解法理解起来也很容易,但是~~过不了~~,所以我决定抄另一种高斯消元模板。 代码从这里抄的:https://blog.csdn.net/ya
阅读全文
摘要:水古董题也不轻松。。。 题目都这么说了,就照它的意思去模拟吧。 但是注意:$0 \leq x \leq 100000$,不优化是会T的。但是优化也非常容易。 只需要记录下每一层楼有梯子的房间数cnt[i]即可。 然后多余的数就是在重复转圈,删除掉即可。 后来发现不能直接取模,在整除的时候加个特判就o
阅读全文
摘要:刷模板多好啊,不用动脑。。。 新学习了高斯消元。 其实高斯消元就是把我们小学就学过的解方程组用程序语言表达出来了而已。 小学学的东西有加减法,代入法。我们这里都会用到。 ~~但是也挺难记的~~ 给你三个形如ax+by+cz=d,怎么求出答案?n个呢? 所以还是老老实实地学习一下高斯消元。 首先,我们
阅读全文
摘要:简单的树链剖分,自己随便弄个样例就能过。 给你一个树,支持两个操作: 1. 从u点到v点的路径上的点的权值都添加上d。 2. 查询以u点为根的子树的权值和。 唯一可能错的就是1操作了。 u到v的路径,显然需要找出他们的lca。 那么就分为两部分:u到lca和lca到v。 但是发现:走这么一段路,df
阅读全文
摘要:至少我觉得比去年的D1T2简单。。。 题目已经叫你模拟这个cpu做事。 进程有优先级,显然就弄一个优先队列,重载小于号别弄错了。 这道题的重点我觉得是在“进程被优先级高的进程中断”最难。 后来发现可以记录一个lastnow变量,表示目前的上一个任务是在什么时候完成的。 发现没有进程中途加入最容易弄了
阅读全文

浙公网安备 33010602011771号