杂题
200815147
这个作者很懒,什么都没留下…
展开
-
「LibreOJ Round #11」Misaka Network 与任务
题解:显然只需要知道某几位上是111的有多少个就可以容斥了,这个用枚举子集可以做到O(3n)O(3n)O(3^n),但是不能AC。考虑一个错误的做法,对于某个状态SSS,它出现了cnt[S]cnt[S]cnt[S]次,然后对于SSS去掉某一位上的111得到的S′S′S',cnt[S′]+=cnt[S]cnt[S′]+=cnt[S]cnt[S']+=cnt[S],但是这样显然是错的,比如A−&g...原创 2018-08-27 21:31:54 · 516 阅读 · 0 评论 -
美团2018年CodeM大赛-决赛 C Traffic
题解:先考虑一下怎么走。显然不会有先跳到前面再跳到后面的走法,因为如果有a<b<ca<b<cabbb跳到aaa,aaa再跳到ccc,那么bbb一定可以直接跳到ccc。所以我们可以先考虑向后跳。对于一个固定的起点iii,如果它只向后跳,那么可以用一个数组维护跳xxx步后的最远位置,这样能求出从它开始只向后跳的答案。然后再来考虑往前面跳,我们从当前答案小的点开始更新其它点,...原创 2018-08-25 10:43:28 · 353 阅读 · 0 评论 -
ARC102 D - All Your Paths are Different Lengths
题解:容易想到最后答案都是由若干个222的次幂加起来的,也就是第iii个点向第i+1i+1i+1个点连2i−12i−12^{i-1}的边,但是这样只有2x2x2^x条路径,剩下的L−2xL−2xL-2^x条怎么办呢?现在我们还剩下L−2xL−2xL-2^x条路径,注意到前iii个点可以凑出000~2i−1−12i−1−12^{i-1}-1,所以我们这样做:每次先找到一个最大的yyy使得2y&l...原创 2018-09-06 17:40:10 · 256 阅读 · 0 评论 -
[BZOJ]3043: IncDec Sequence 差分
Description给定一个长度为n的数列{a1,a2…an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。SolutionGDOI后这题就是SB题了。直接差分后乱搞即可。Code#include<bits/stdc++.h>using names...原创 2019-01-10 17:24:22 · 181 阅读 · 0 评论 -
[BZOJ]3136: [Baltic2013]brunhilda
Description给定m个素数和Q个询问。每个询问有n个人,每次操作可以任意选择其中的一个素数p(素数可以重复使用),然后去掉剩余人数 mod p个人。对于每个询问,我们想知道,至少需要多少步操作才能去掉所有人。Solution这题的一个想法是fif_ifi表示iii这个数的最少步数,但是这样要做到O(1)O(1)O(1)转移。其实决策点是单调的,fff也是单调不降的,所以可以一边扫一...原创 2019-01-09 13:09:28 · 394 阅读 · 0 评论