NO.1 CF Gym 100738A Fitting boxes
分类: 数学
简要题解:
- 设大矩形(长宽为c,dc,d)水平放置,小矩形(长宽为a,ba,b),与水平方向夹角为θθ,那么需要满足:b∗sinθ+a∗cosθ<=da∗sinθ+b∗cosθ<=cθ∈(0,π2)b∗sinθ+a∗cosθ<=da∗sinθ+b∗cosθ<=cθ∈(0,π2)
- 判断是否有解即可
反思
- 需要找到合适的方式表达矩形的包含关系
NO.2 Pretty Buses CF Gym - 100738E
分类: 树
简要题解:
- 先求出最小生成树,显然在司机们最后汇集到任意一个点花费相同,问题在于如何换车
- 换车次数限制是25,也就是lognlogn 级别,所以启发式合并就好了.
NO.3 CF Gym - 100283A
分类: 数学
简要题解:
- 首先,设各边长度为l1,l2...lnl1,l2...ln,能构成多边形的充要条件是lk<∑i≠klilk<∑i≠kli
- 显然可以二分答案,问题转化为判定半径为RR 的圆能否包含给定的多边形
- 对于每一条边,假设其两端点均在圆上,可求出圆心角,判断∑αi<=2π∑αi<=2π 即可
NO.4 CF Gym - 100283C
分类: dp
简要题解:
- 设f(x,y,t)f(x,y,t)表示从(x,y)(x,y)这点出发,还剩下tt单位的时间,能挖到的最多宝藏
- 令x′=x+y,y′=x−yx′=x+y,y′=x−y,曼哈顿距离的限制转化成对x′,y′x′,y′ 的分别限制,可用前缀和优化.
反思
- 类似的,切比雪夫距离d=max(|x1,x2|,|y1,y2|)d=max(|x1,x2|,|y1,y2|) 经过变换x′=x+y2,y′=x−y2x′=x+y2,y′=x−y2 之后转化为了曼哈顿距离
NO.5 CF Gym - 100739A
分类: 位运算,线段树
简要题解:
- 对序列求前缀xor后,按位讨论
- 问题转化为给定01序列,每次询问区间[L,R]求∑L≤i,j≤Raixoraj∑L≤i,j≤Raixoraj
- 用线段树维护区间内0,1的数量即可
反思
- 异或运算满足自反律和交换律
- 设计位运算的题目常常逐位处理
NO.6 CF Gym - 100971I
分类: 贪心
简要题解:
- 考虑任务之间没有依赖关系,那么直接按最晚时限 didi 依次做就是最优的
- 现在只是对任务ii按照 排序,DFS一次即可.
反思
- 从简单问题到复杂问题的思考方式
NO.7 CF Gym - 100971M
分类: dp,单调性
简要题解:
- 设前缀S1,2,...iS1,2,...i 最少能被分成f(i)f(i) 个good_string
- f(i)=min{f(j)+1|Sj+1...i is a goodstring}f(i)=min{f(j)+1|Sj+1...i is a goodstring}
- 注意到f(i)f(i) 是单调递增的,能够转移的jj 的左端点随增加也是只会的增大,用一个指针就能解决问题
反思
- 注意一些单调性总能简化问题…