2020.7.23 12:00~17:00
7/17
5/6/11
给了 n 个水杯,可以把水杯装满水或倒完,也可以向另外的杯子倒直至一个杯满或空,问你能否倒出指定体积的水。
首先最大的被子都装不下就不可能实现。我们把最大的杯子当成容器,然后让别的杯子往里倒水,这就变成了一个模意义下的完全背包问题。
求区间里一个数,使数的每一位的乘积最大。
答案一定为最高几位和右区间的相同,后面就是某一位减一之后全是九,枚举这一位出现的位置求出最大乘积的值。
有$n$组$(a,b)$,$m$组$(c,d)$,对于每一个组$(a_i,b_i)$,选出一个$(c_j,d_j)$,使得$a_i*c_j+b_i*d_j$最小。
首先按$c_i$升序,$d_i$降序排序,把一些没意义的组删去,接下来推一波式子得到$\frac{a_i}{b_i}>\frac{d_k-d_j}{c_j-c_k}$。这个式子的意思是,如果$j,k$满足这个式子,那么对于第$i$组,选$j$就比$k$更优,于是我们对第二类维护一个下凸壳,按照$\frac{a_i}{b_i}$降序排列,然后一个个扫描,取最优值即可。
构造一个长度为$n$的数字序列(从数字1开始),使得满足一定的条件下字典序最小。
条件:对于每个位置$i$,给定之后的一些位置$p_j$,该位置$p_j$上的数字是$i$位置之后第一次出现
要字典序最小,当然是使用当前能使用最小的数字
每次走到一个位置,如果这个位置没有被之前任意一个位置限制,那么就放$1$
否则,只需要查找最早限制的位置到这个位置之间最小的没被用过的数字
这个可以用可持久化线段树维护
建立一个权值线段树,记录每个权值最后出现的位置,维护区间最小值,对于区间$[l,r]$,只需要在$r$位置线段树中通过左右区间最小值判断区间内是否有合法权值,然后尽量往左走即可。
有$n$个插排$m$个设备和一个插口,每个插排有各自的插口个数$a_i$,每个设备有各自的性能$b_j$,$b_j$表示该设备正常运行最多能经过的插排个数,求最多能使多少设备正常运行
容易发现,插排一定是越大越要先用,设备一定是$b_j$越大越先用
那么就二分使用的设备个数,贪心地分层插入插排。如果当前层有必须使用的设备,就使用之,否则尽量插插排。最后看能否合法插入完。
填坑
填坑
开局hxm看A,wxg看G,wxg开写G
fyh和hxm讨论A无果,fyh继续想A,hxm想J
12:38 wxg过G
hxm和wxg讨论出J做法
13:07hxm过J
fyh wxg想H,fyh开写H,中间目测调题,wxg尝试乱搞A
14:28 fyh过H,hxm想I,想出做法
hxm用错数据结构,和wxg讨论后修改
wxg wa A 放弃A
16:06 hxm过I,wxg想出F,fyh尝试D
16:40 wxg过F
fyh:本次比赛我们队的罚时得到了很大的进步,大部分题都能1A,我在推H的时候不等号忘记变号,导致输不对答案,肉眼调了一小会,耽误了一点点时间,算是一个易错点。
hxm:
wxg:G题写的有点慢,A的乱搞没有搞过去。