2017训练

UPD 2017.3.1 CFround402[8/8] CFround401[5/5](13题)

现在已经完成了:

58

bzoj [44]

bzoj1053 [HAOI2007]反素数ant

只考虑前10个素数,进行爆搜

bzoj1076 奖励关

倒着状压dp

bzoj1101 [POI2007]Zap

1xa/d1yb/d[gcd(x,y)==1]

=1xa/d1yb/dg|gcd(x,y)μ(g)

=1gmin(a\d,b\d)μ(g)1xa/d,x|g1yb/d,y|g1

=1gmin(a\d,b\d)μ(g)[x/dg][y/dg]

维护一下μ(g)的前缀和,后面部分分块
bzoj1176 [Balkan2007]Mokia

将询问拆成四个。cdq分治维护第一维x,用树状数组维护第二维y

bzoj1257 [CQOI2007]余数之和sum

i=1nkmodi

=nki=1n[ki]i

后半部分分块维护即可
bzoj1406 [AHOI2007]密码箱

x210(modn)

(x+1)(x1)=kn

x+1=k1n1

x1=k2n2

枚举k1n1即可
bzoj1408 [Noi2002]Robot

利用一个数约数的欧拉函数之和等于自身得知三个答案之和。然后对所有质数分奇数个偶数个进行dp得到前两个答案

bzoj1409 Password

答案即pF[n]。使用欧拉定理后矩阵倍增求F[n]即可

bzoj1419 Red is good

倒着递推答案

bzoj1420 Discrete Root

N次剩余模板题

bzoj1426 收集邮票

推公式

bzoj1441 Min

裴蜀定理,求gcd即可

bzoj1467 Pku3243 clever Y

扩展bsgs裸题

bzoj1778 [Usaco2010 Hol]Dotp 驱逐猪猡

构造转移矩阵,级数收敛,然后高斯消元

bzoj1951 [Sdoi2010]古代猪文

使用欧拉定理,对于指数部分,将mod-1质因数分解,用lucas计算每个组合数的值,最后用crt合并起来

bzoj1968 [Ahoi2005]COMMON 约数研究

暴力

bzoj2045 双亲数

同bzoj1101

bzoj2134 单选错位

考虑期望的线性性

bzoj2216 [Poi2011]Lightning Conductor

我们把询问max分为两部分,一部分比i大,一部分比i小,这样我们就可以把原式的绝对值去掉。之后我们会发现这样的答案一定满足单调性,所以我们可以想到用整体二分的方式来进行转移

bzoj2253 [2010 Beijing wc]纸箱堆叠

对x进行cdq分治,然后分成两部分后先递归处理左区间,再将两边分别对y进行升序排序。之后利用树状数组维护一下答案的max即可

bzoj2318 Spoj4060 game with probability Problem

设f[i]表示剩i个石子Alice先手的胜率,g[i]表示剩i个石子Alice后手的胜率。不难发现当f[i-1]>g[i-1]时,双方都不想拿掉石子。反之双方都想拿掉石子。这样最优策略出来了,之后我们只要考虑胜率的递推式即可。

bzoj2684 简单题

同1176

bzoj2698 染色

考虑每个点的贡献,即求这个点被染色的概率。考虑其反面问题,即每个点不被染色的概率,一定是单次不被染色的概率的m次方。一个点不被染色,当且仅当序列全部在这个点的左边或全部在这个点的右边。等差数列求和即可。

bzoj2720 [Violet 5]列队春游

枚举每个人在每个位置,贡献为i的概率,求和即可

bzoj2721 [Violet 5]樱花

y=x+t可得x=(n!)2t+n!,则答案为(n!)2的约数个数。

bzoj2738 矩阵乘法

整体二分过程中,每次加入比mid小的数,子矩阵和与k的关系

bzoj2882 工艺

字符串的最小表示,建立SS串的后缀自动机,每次走字典序最小的位置即可

bzoj3029 守卫者的挑战

期望背包dp

bzoj3036 绿豆蛙的归宿

拓扑排序后dp下即可

bzoj3143 [Hnoi2013]游走

列出点期望关系式,然后高斯消元,边的期望为E(a)/deg(a)+E(b)/deg(b)之后贪心编号

bzoj3450 Tyvj1952 Easy

差分后维护期望

bzoj3451 Tvyj1953 Normal

考虑每个点对的贡献,即当j点作为分割点时,i对其的贡献。我们知道如果满足条件,则i到j这条路径上所有点中,j最先被选为分割点。显然这个概率为1/(dist(i,j)+1)。所以我们需要统计出每条路径的长度。这里用点分治,合并树的时候,我们使用FFT进行转移即可

bzoj2969 矩阵粉刷

类似于2698

bzoj3110 [Zjoi2013]K大数查询

之前用树套树写的,这次用整体二分过了一遍

bzoj3566 [SHOI2014]概率充电器

树上期望dp

bzoj3926 [Zjoi2015]诸神眷顾的幻想乡

我们发现叶子节点个数很少,我们只要以每个叶子作为根得到一遍trie树,对于每棵trie树建立一棵广义后缀自动机即可(建在同一个后缀自动机上)。最后统计下sam[i].val-sam[sam[i].par].val的和即可

bzoj3998 [TJOI2015]弦论

建完后缀自动机后进行拓扑排序,我们在parent树上获取每个节点的right集合大小,再倒序dp得到后缀自动机上每个点的子树大小,至此问题得到了解决

bzoj4008 [HNOI2015]亚瑟王

考虑这r轮一起轮,计算p[i][j]表示到第i张牌时还有j次机会的概率。这一部分可以递推得到,然后分别计算对答案的贡献

bzoj4204 取球游戏

考虑每类求在操作第i次后,每类球的期望,发现转移矩阵是循环矩阵,可以将矩阵乘法优化到O(n^2)

bzoj4318 OSU!

差分,之后分别维护l[x],E[X],E[X^2],E[X^3]即可

bzoj4516 [Sdoi2016]生成魔咒

动态加入一个点之后,我们可以发现新增的答案为sam[np].val-sam[sam[np].par].val,即np这个结点maxlen-minlen+1的结果,表示新增的以其为终止结点的本质不同的子串的个数

bzoj4723 [POI2017]Flappy Bird

我们很容易发现,当结束位置确定时,需要点击的次数也就确定了,所以我们只要维护到每个柱子时,bird能到达的区域范围。注意这里要考虑坐标的奇偶性

bzoj4724 [POI2017]Podzielno

我们发现如果这个数能被B1整除,其各个位数字之和一定是B1的倍数。我们先把所有数字从大到小排成一列,这时各个位数字之和未必是B1的倍数,我们至少减少一个其余数那个数字即可。然后预处理前缀和,查询的时候二分下就行

bzoj4726 [POI2017]Sabota?

第一眼想到二分实际上是不对的。我们考虑下这个叛徒的性质。首先我们容易发现,最坏情况一定是叛徒在某个叶子节点上。然后我们能发现所有叛徒节点形成的一定是一个完整的子树。我们设f[x]表示当以x为根节点的子树被完全策反的概率。f[x]=max{min(sz[e[i]]/(sz[x]1),f[e[i]])}。当sz[x]超过k时更新答案

hdu [1]

hdu5126 stars

把询问拆成8部分。用第一次cdq分治维护x,用第二次cdq分治维护y,用树状数组维护z

Codeforces [13]

【Codeforces Round #402】 (8/8)

Div 2 A Pupils Redistribution 模拟
Div 2 B Weird Rounding 贪心
Div 2 C Dishonest Sellers 贪心,排序
Div 1 A String Game 二分答案,判断是否能在只删除前mid个的情况下完成匹配。匹配时使用贪心策略,即能匹配就匹配即可
Div 1 B Bitwise Formula 考虑每一位的贡献,然后模拟下
Div 1 C Peterson Polyglot 我们只需要求得如果删去第x层的所有节点,会缩减多少个节点即可。我们进行一次dfs,到每个点时,考虑删去该节点,其儿子结点们缩减的情况。不难发现,任意两个节点合并,只能实在考虑删去其lca的时候进行。并且这个路径上所有点都已经缩减完毕。因此可知,每两个节点只会被缩减一次。所以我们暴力合并即可
Div 1 D Parquet Re-laying 构造。我们可以考虑这样一个思路,把上下两个图案全变成只由LR构成的图案或只由UD构成的图案。这样我们把第二个图案变过去的方案倒转。所形成的所有操作即为答案。下来考虑怎样把一个图案全变成LR或UD,我们只需要不断进行循环,把所有UD变成LR,然后把所有LR变成UD。不断进行下去,显然我们可以得到答案
Div 1 E Selling Numbers 挺麻烦的一道DP。f[x][i]为考虑第x个字符时,此处有i个数字有进位的情况。不难发现,每个i的取值,最多只对应一种进位情况。这样我们从假设没有一个数进位开始,计算当前的ans,用于计算相应的dp值。然后进行考虑i+1,我们只用增加把一个数加1,更新下ans即可。(PS:WA了N久,在女朋友亲了一下之后发现竟然是自己数组开小了,迅速A了此题)

【Codeforces Round #401】 (5/5)

Div 2 A Shell Game 找到循环节,然后模拟
Div 2 B Game of Credit Cards 贪心
Div 2 C Alyona and Spreadsheet 预处理出每个位置向上构成最长不升序列的长度,然后记录一行的max即可
Div 2 D Cloud of Hashtags 贪心发现,我们倒着考虑,让第i个字符串小于第i+1个字符串即可。之后对于每个字符串二分下删除的后缀的长度
Div 2 E Hanoi Factory 排序,以外径为第一关键字降序,内径为第二关键字降序排列。考虑如果当前第i因为外径小于当前方案中的最上面ring的内径,我们必须将这个最上面的ring去掉,否则我们之后都没法放了。用一个栈维护这个过程就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值