zoukankan      html  css  js  c++  java
  • 退役III次后做题记录(扯淡)

    退役III次后做题记录(扯淡)


    CF607E Cross Sum

    计算几何屎题

    直接二分一下,算出每条线的位置然后算

    注意相对位置这个不能先搞出坐标,直接算角度就行了,不然会卡精度/px

    flag:计几题都不写了

    CF611G New Year and Cake

    真香

    双指针扫可行的区间然后维护。

    一个三角形的面积可以用(|AB+BC+CA|)算,其中(A,B,C)是向量(OA,OB,OC)(O)在三角形外

    然后推出的式子可以很好地化简然后维护(为啥我写这么慢啊

    CF504E

    巨大常数卡过去了 舒服

    二分+哈希,然后哈希可以(O(巨大常数))算,要长链剖分算一个(x)(k)级祖先

    https://codeforc.es/contest/504/submission/63411989

    CF506C

    二分,然后倒着做,变成一开始有(n)个高度为(mid)的,每个时刻开始高度全部减(a_i),然后选择(k)个高度加(p)

    考虑限制是啥,正着做的时候一开始是(h_i),中间会出现一些(<0)的时候很不爽,一开始先给(h_i)加上一个数就很爽了,条件就是高度始终(ge 0),倒着做的话另一个条件就是最后的高度满足(ge h_i)

    对每个东西维护:如果不再操作,最后的值(fi)。如果有(fi<0),肯定先做(fi<0),有多个先做更早会(<0)

    否则随便做一个(fi_i<h_i)的,然后可以check了

    CF704B

    对连通块dp。

    AGC028C

    答案一定是所有(A,B)中选(n)个,先拿出所有的升序排序,然后拿出最小的(n)个,看是否能取到,如果不能再分情况讨论

    (懒得写了

    CF521D

    求个(ln)后三操作就是加,1,2操作是凸的,可以用一个堆维护

    CF536D

    每个点到(s,t)最短距离后转化为一个坐标,在坐标轴上面dp,前缀和优化

    CF547D

    这提姆不就是704d吗= =

    CF571D

    先对每个询问求出最后一次清空的时间就可以忽略清空操作了

    搞出重构树,直接在上面操作

    CF576D

    bitset优化01矩乘

    毒瘤= =zbl

    CF582D

    这题先咕了

    CF587D

    屎题

    抠出每种颜色,显然只能是很多链或者环,分情况讨论亿下,长度为奇数的链还要二分 2sat

    CF643D

    搞一堆set大模拟,修改点时只用修改父亲

    CF521E

    加边加到图不是仙人掌时可以找到端点,然后输出方案

    CF576E

    线段树分治 可以操作到叶子节点之后再放之后的操作

    CF582E

    (f_{i,j})表示树上点i,对于所有变量取值的答案压到(j),方案数

    转移用fwt

    CF585E

    直接莫反,不算(1)的话每对集合和数会算(-1)

    CF538H

    显然图是个二分图,染色之后同一个连通块同一个颜色缩成一个区间

    然后问题就是有很多对区间,取两个位置(p1,p2)对于每一对区间正好分别在一个区间内

    然后直接枚举左端点,对一对区间可行的右端点还是个区间,线段树维护即可

    CF575I

    鸽子好神仙啊

    先要维护三个东西:

    以一个点为右上角的矩形

    以一个点向左下的直线和向下的直线围成的图形(直角三角形)

    以一个点向右下的直线和向下的直线围成的图形(直角三角形)

    然后4个操作都可以用这三个东西容斥出来

    CF626G

    (t)表示题面中(l)(s)表示你的方案中每个箱子放的数量。有限制(sum sleq T)

    那么你最终收益期望是(sum p_i-sum frac{t_ip_i}{t_i+s_i})

    那么要最小化后面的东西,也就是最大化(frac{t_ip_i}{t_i+s_i})

    一组询问可以用堆维护,然后修改一个(t_i)并不会影响其他选取方案的相对顺序

    可以证明,给一个(t_i)修改(1)过后的(s)最多只会有一处增加和一处减少

    先看给(t_i)加1,那么选这个箱子整体会变差,所以策略是可能会拿走一个给别的箱子

    如果拿走两个是不可能的,因为原来选了这个箱子收益是(frac{t_ip_i}{t_i+s_i}),后来变成了(frac{(t_i+1)p_i}{t_i+s_i+1})(s_i)减去(1)后变成(frac{(t_i+1)p_i}{t_i+s_i}),严格大于原来的收益,既然原来的选了这个肯定不会被换掉

    (t_i)减1类似,策略是如果超了先减1然后选这个箱子会变好,可能会从另一个箱子拿一个过来,不过类似上面可证明不会拿两个过来

    然后用一个堆维护“插入箱子”和“从箱子拿出”的最大值就行了

  • 相关阅读:
    python_day25_私有变量(在变量前加两个下划线即可)_私有方法_静态方法_
    python的切片操作
    python_静态字段_普通字段_静态方法@staticmethod__静态类@classmethod_属性@property、@per.setter、@per.deleter
    python_class_类_对象_自己改编的一个选英雄的小程序
    python_类_方法_对象_实际应用
    python_day24_class_类_继承
    python_day24_class_类_方法_对象
    python_day不知道_json方法存字典中的内容到文本中
    python_dayo20_if __name__ == '__main__':的学习
    python_day20_自己定义模块和模块的调用_包(Package)以及包之间的调用
  • 原文地址:https://www.cnblogs.com/xzz_233/p/11734255.html
Copyright © 2011-2022 走看看