2021ICPC西安邀请赛记录
作者:互联网
过4,rk40,Ag。
Au线在5题,除非罚时爆炸,否则Au
-
-
通过的题目
-
C
两个硬币,由两名玩家各自选择正面或者反面朝上。当硬币同为正,玩家一获得A元,同为反,玩家一获得B元,否则玩家二获得C元。问足够多轮数的情况下,谁能胜出。保证A+B=2*C
简单题,若A==B,则永远平局。
若A!=B,则玩家一每次选择较大的一边,玩家二不得不来回变换硬币的正反进行博弈,但最终还是玩家一胜出。嗯,就是这样一道简单题,贡献了3发罚时,呕了。
陷阱:多组数据
-
F
n个男生n个女生,进行m次配对,每次配对,每个男生必然会和一个女生凑成一对,如果他们是第一次凑成一对,则对于每个男生,会产生bi的权值,问期望获得的权值是多少?
n<=10^5 m<=10^18简单期望,而且每个bi对答案的贡献是相同的。
考虑到,产生贡献的概率=1-不产生贡献的概率,不产生很好计算,就是((n-1)/n)^m,快速幂求逆元即可。嗯,一发过,短暂的rk1
-
K
n本书,每次选择两堆,交错排成新的一堆,求最终的那一堆的形态
n<=3*10^5简单题,直接暴力合并复杂度可能被卡到O(n^2),但是小的合并到大的,复杂度会变成O(nlogn)。
嗯,一发过。
-
M
一个人在数轴零点上,正方向出发,在时间段[li,ri]必须沿某一方向一直行走,行走范围不能超过[0,m],问对n段时间[li,ri]能否有满足的方案。行走速度为1单位长度每秒。在两段时间的空隙,可以选择行走,转向,或者原地不动,转向消耗1秒。
n<=10000 m<=100简单动态规划,设f[i][j][0/1]表示完成前i段时间,当前所在位置为j,方向为正方向或者负方向是否可行。
转移时采用前缀和,讨论一下,就可以做到O(nm)
-
-
-
赛后过的题目
-
A
n块积木,长度最长为m,每块用两个长度为m的数组描述上方和下方突起的长度,两块积木可以铆合,当且仅当:
1.上方积木长度小于等于下方积木
2.上方积木的下边缘和下方积木的上边缘对应位置的和都相等
问每块积木使用一次的情况下,最多能搭起多少块积木?最下方的积木可以任意选择
n,m<=500KMP+BFS
判断铆合,可以用差分+KMP,判断两两之间铆合,可以在O(mn^2)时间内做到。
接下来就是找最长链,O(n^2)的bfs可以解决由于是最后1h才想到读了题目,所以无力回天。
-
H
一棵n个节点的数,每个点上有个权值wi,如果确定了数字P,且点Z是点对(u,v)最短路径上的一点,且wu-wz<=p,wv-wz<=p,wu,wv>wz,那么z可以称作p条件下点对(u,v)的中间站。
现在给定数m,要求一个最小的p,满足所有点在p条件下有不超过m对点对将之作为中间站。
n<=10^5 m<=n*(n-1)/2二分+dfs序+滑动窗口
先对所有点按权值从大到小排序,二分p,再将点依次加入树中,第i次加入的点,我们假设为qi,则前i-1个加入的点权值都比qi大,再记录最早加入的还在树中的点,如果超过了p的限制,则删掉。
统计点对数量,用一个数据结构维护dfs序,再p限制下,以点qi作为中间站的点对数量=qi的各个儿子子树以及树上除qi的子树部分中包含的已加入的点的数量的乘积。写起来很简单,但是考场上脑子裂了,作为数据结构手,这波背大锅。
-
J
给定n个数,有一种操作和一种询问。
操作:给定数k,将所有数和k写成二进制形式,对于每一个数,从高到低位找到第一位与k不相同的一位,并将这位之后的所有位取反。
询问:给出l,r,询问有多少个数介于[l,r]
n<=10^5 操作<=10^5 询问<=10^5 数值<=2^30trie
每次操作,在节点上打个tag表示之后所有的数都取反。
询问的话,在tag上分别找到l和r所在的位置,或者它们的前驱所在的位置,相减即可也很好写,但考场上脑子裂了,作为数据结构手,再来一锅。
-
标签:积木,2021ICPC,玩家,铆合,西安,权值,qi,长度,邀请赛 来源: https://www.cnblogs.com/lmlysklt/p/14891162.html