zr2019普专题No.1

\(\color{red}{A}\)

若删除长度为 x 的子串后序列中没有相同元素,那么一定有至少一个长度为 x+1
的子串,删除它后序列中也没有相同元素,然后可以离散+二分

木得代码

\(\color{blue}{B}\)

打几个表忽然发现: 哎?怎么还有个循环节啊23333

代码 : 木得

\(\color{yellow}{C}\)

先把所有物品按照拿走的时间从小到大排序,拿走的时间相同就按照放上去的时
间从大到小。那么一件物品上方的物品就一定会在它的前面。
考虑 dp,设 f[i][j]表示 i 以及 i 上面物品在所有时刻中最大重量为 j 时的最
大收益。
转移的时候,我们需要枚举所有 i 上面的物品,维护一个 g[i]表示时刻 i 之前
物品的最大收益是多少。然后直接转移就好了。

代码 : 木得

\(\color{orange}{D}\)

这道题简化一下题意的话就是

给你n个长度为m的二进制串,让你选k个出来,使得这k个二进制异或起来全为1

这个时候,我们想,如果这个串串一共只有\(2^n\)个子集,然后我们只要用这个\(2^n\)减去不符合条件的就好了!然后我们就可以容斥一下

\(ans = \sum2^cnt{cnt是k的子集个数,k\inS}\)

然后难点就变成了求cnt

这时候我们想到了fmt , 用来求高维矩阵和

1522713-20190908201355202-1691890967.png

如图 : x轴上方有几个*就代表有几个子集

还是木得代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值