10.28XJ模拟赛

T1:
直接n*2^m次方就好了,能拿80分。具体可以用哈希实现。gyc说是lyc出的,要用高维前缀和,这直接不会了。
补一下。我们容斥一下。首先枚举字符串i,j,将他们相同的下标集合称作si,j。如果有一个集合属于这n^2个集合的其中一个,那么就不可以。我们考虑在一个最大的集合打标记,然后不停往下扫,如果有标记,那就再下传,时间为\(O(n^{2}m+m2^{m})\)

T2:
gyc发力了,首先发现我们如果不限制的话那就是图中所有XYD之和,但因为不能相交所以真实答案会减少。这种网格的大概率要想到建图了。我们将XYD连边,又因为3的特殊性,我们如果存在合法的xyd,那么就将Y向X连边,Y向D连边。我们发现一个连通块内要么只选横的,要么只选竖的,这样才会有最大值,反证法易证,所以我们使用并查集即可。

T3:
经典题目逆天变化,首先将所有数从小到大排序,这是一个经典结论。然后就是一个部分分一个部分分骗了。对于\(\sum \le 10^6\)的部分使用优先队列存下每一个饮水机的时间即可。对于n=1的,所有人肯定是平均分配。对于m=1,也简单。对于m=2,肯定也是尽量平均。考虑正解,发现这个平均的过程是O(m)的,无法进行下去了,用数据结构,应该可以吧,但整个做法应该都要换掉了。容易发现,每次最小的会变成最大的(没发现这个)。所以我们的答案是\(a_{i} + a_{i}+t + a_{i}+2t +a_{i}+3t ... +a_{i}+kt\)就是\((2a_{i}+kt)*(k+1)/2\)化简\(a_{i}*k+t*k(k-1)/2\)。所以只要维护区间和即可,

posted @ 2025-07-09 10:29  wuhupai  阅读(4)  评论(0)    收藏  举报