编号 | 题目 | 链接 | AC submission | Solution |
---|---|---|---|---|
Mr. Kitayuta's Gift | CF506E | |||
邮箱题 | P9150 | |||
[THUPC 2023 初赛] 种苹果 | P9136 | Link | Link | |
Drazil and His Happy Friends | CF516E | Link | Link | |
[CQOI2018] 异或序列 | P4462 | - | Link | |
[IOI2009] Regions | P5901 | - | Link | |
[IOI2009] Salesman | P5902 | - | Link | |
[IOI2009] Hiring | P9113 | Link | Link | |
【清华集训2015】V | uoj164 | - | Link | |
【清华集训2015】Flea | uoj165 | Link | Link | |
【清华集训2015】King | uoj166 | |||
【JOISC2020】变色龙 | uoj504 | |||
【JOISC2020】扫除 | uoj503 | Link | Link | |
【JOISC2020】汉堡肉 | uoj502 | |||
【JOISC2020】建筑装饰 4 | uoj501 | |||
【ULR #1】多线程计算 | uoj574 | |||
【ULR #1】光伏元件 | uoj575 | |||
【ULR #1】服务器调度 | uoj576 | |||
【ULR #1】打击复读 | uoj577 | |||
【ULR #1】校验码 | uoj578 | |||
【ULR #1】卫星基站建设 | uoj579 | |||
【UER #2】手机的生产 | uoj113 | |||
【UER #2】信息的交换 | uoj114 | |||
【UER #2】谣言的传播 | uoj115 | |||
「BalticOI 2018」交流电 | loj2777 | |||
「BalticOI 2011 Day2」树的镜像 Tree Mirroring | loj2637 | |||
「BalticOI 2016 Day1」公园 | loj2781 | |||
「BalticOI 2015」文本编辑器 | loj2706 | |||
「BalticOI 2022 Day1」Uplifting Excursion | loj3776 | |||
「BalticOI 2013」Vim | loj2687 | |||
「BalticOI 2022 Day2」Boarding Passes | loj3779 |
根据地区内的人数大于根号和小于根号分治即可。
线段树维护即可。
莫队即可。
首先,对于 不同的男女生互不相关,所以可以先规约为 互质的情况。
这个问题可以泛化为多源最短路问题,而多源最短路可以视作多个单源最短路取 ,所以去考虑一开始只有一个男生 是快乐的情况。
不难发现, 男生在第 秒变为快乐, 在第 秒变为快乐……这和女生已经无关了!所以应该去把男女生分开考虑然后取 (一个初始快乐的女生对男生的影响,可以把她转化为她对面的男生是初始快乐的,这同时也带来了上述结论的正确性)。
现在单独去考虑男生的 。而男生唯一有用的信息其实 ,把所有男生按照 排序,那么可能作为最值的只有每个关键男生的前面一个男生,断环成链做一下就好了。
用一个 LCT 维护,每个结点上维护 splay 子树内对应点的权值排序后的结果。若子树大小小于根号,则直接存下;否则不存,在询问的时候再递归下去。这个做法的可拓展性极强,可惜过于麻烦,在序列上劣于分块,在树上却很优秀。
还有一种办法是用 Linshey 分块,再加上根号重构。感觉码量很大。
先不考虑总钱数最小的限制,因为第二个限制很弱,只要二分一下就能去掉。
对于每个选中的工人,他提供的限制是:,也就是 ,按照 排序,从大到小枚举其比值最小的一个,剩下的一定是贪心选 最小的,直到不能选了为止。用堆维护即可。
怎么把二分的 去掉?比值和比值排序的结果是固定的,直接枚举比值最小的工人,对应贪心选出尽可能多的工人,再算出这些工人对应的最小总工资即可。
吉老师线段树板子题。
事实上, 类型的标记是符合结合律的,可以直接用懒标记来维护。
一个想法是,求出 ,并求出这两条抛物线的交点 ,再求出 ,若 的话,直接返回 ;否则,向 两边递归下去,这样需要 次。
事实上,我们只需要每次取出最高的一个交点向下递归,如果不能向下递归就输出答案,这样就只需要 次了;最后一次是细节讨论可以优化掉的。
考虑由修改操作构成的序列,一次查询,相当于询问一个点,经过了操作 后,会在哪一个点。
对修改序列分块,散块容易处理,整块的话,平面会被分成 份,需要对每一份分别预处理出它会移动到哪里。
预处理:考虑分治下去,,所以递归下去加上双指针的复杂度是正确的。
询问时:离线,并预处理一个长度为 的数组记下双指针的结果,就可以去掉 ,总复杂度 。
事实上,这个做法没有完全利用上题目性质,一个性质是:
对于所有操作过至少一次的点,都满足 。
所以,对于每个还没有操作过的点单独维护,剩下的点就是一个单调栈的形状,随便维护。