【训练日记】20161028

【训练日记】20161028

初赛成绩出了,不过今年省线好低啊……
连续几天没有什么值得发博客的训练题,今天终于找到机会了。
版权原因,不上传题目。

T1:maou

题意:定义一个 N(N10000) 个元素的有效序列为满足以下性质的序列:若前 i 位出现的最大数为x,则第 i+1 位的数字的范围是 [1,x+1] 。比如 1 2 2 3 2 3 是有效的,而 3 1 1 2 1 2 不是。给出一个序列,求其是字典序第几小的有效序列。

题解: f[i][j] 表示待确定长度为 i ,前面的最大值为j,易得转移方程

f[i][j]=jf[i1][j]+f[i1][j1]
计算出 f 数组后,就可以从后往前,假设前面所有位置与原序列相同,求有多少合法序列字典序比原序列小。设当前位置为i,第 i 位的数是a[i],前面最大的数是 j ,答案显然是
(a[i]1)f[ni][j]
时间复杂度 O(N2)

最水的一道题,其实没什么好讲的……

T2:steins

题意:有一个长度为 N(N107) 的01序列,起始时各位均为0。给出 M(M105) 种操作,每种操作都是将一个区间 [li,ri] 取反。求在若干次操作后,最多能生成多少种互不相同的序列。

题解:首先,有一个显而易见的结论:每次操作后的序列必然是形如…000…111…000…111…的形式,即连续的0与连续的1交替出现。对于两种等价的操作序列,其异或和必然相等。由此想到,将原序列看作一个只包含 N 个点的无向图,对于每种操作[l,r],从 l r+1连一条边。对于每个环,其中的任意一条边都等价于其他边的异或和,因此可以任意删去一条边,最后必然形成一个森林。令 i 为每棵树的边数,答案即为2i。因为每次删边操作不会改变图的连通性,所以每个连通块中点的个数都不会改变。又因为每个连通块最后都形成一棵树,所以只要统计出连通块中点的个数就能直接计算出边数。由于点的总数固定,令 k 为连通块个数,答案即为2nk。时间复杂度 O(M)

训练的时候迷糊了,没想到可以任意删去一条边……

T3:rezero

题意:有一张大小为 WH(WH2.5106) 的纸,在上面滴 N(N2105) 滴墨水,第 i 滴墨水滴在(xi,yi)处,并用一组参数 (ai,bi) 描述。对于一个网格 (xp,yp) ,第 i 滴墨水对它的影响是Max(0,abdist(p,i)),其中 dist=Max(xpxi,ypyi) ,最终每个网格的受损值就是每滴墨水对它的影响之和。给出 Q(Q2105) 组询问,每次询问一个矩形范围内受损值的平均值。

题解:多次差分,还在理解中……感觉脑洞巨大啊。

这套题难度果然跟之前的训练不是一个级别,得好好参悟才行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值