码迷,mamicode.com
首页 > 其他好文 > 详细

模拟测试20191023

时间:2019-10-23 21:52:18      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:题意   $1   转化   哪些   搜索   计划   线性筛   span   处理   

$morning$

$T1:最大异或和$

设$sum$=$a_{1}$^$a_{2}$^......^$a_{n}$,

转化题意,相当于小$T$初始权值为$sum$,小$Q$初始权值为$0$,可以选不相连的点两个人同时异或这个点的权值

从高到低$sum$二进制下某一位,如果是$0$,那么小$Q$和小$T$在这一位上一定相等

如果是$1$,那么必须选一个这一位上是$1$的点小$Q$才能大于小$T$

而如果$sum$这一位是$1$,那么至少一个点这一位上是$1$

则题意转化为如果$sum>0$,则输出$Q$,反之输出$D$

 

$T2:简单的括号序列$

设$pre_{i}$表示$i$即之前(的个数,$nxt_{i}$表示$i$之后)的个数

很容易得到$O(n^{2})$的柿子:

$$\sum_{s[i]==‘(‘}\sum_{j=1}^{pre_{i-1}}{pre_{i-1}\choose j }\times {nxt_{i}\choose j+1}$$

稍化一下

$$\sum_{s[i]==‘(‘}\sum_{j=1}^{pre[i-1]}{pre[i-1]\choose j }\times {nxt[i]\choose j+1}$$

$$=\sum_{s[i]==‘(‘}\sum_{j=1}^{pre[i-1]}{pre[i-1]\choose j }\times {nxt[i]\choose nxt[i]-j-1}$$

$$=\sum_{s[i]==‘(‘} {nxt[i]+pre[i-1]\choose nxt[i]-1}$$

 

$T3:旅行计划$

很容易得到$O(n^{3}k)$的暴力算法

利用分块思想优化,设$dp[i][j][k]$表示从$i$到$j$刚好走了$k \times 100$布的最短路

配合暴力的$dp$就可以$AC$了

 

$afternoon$

$T1:Smooth$

类似蚯蚓的思想

维护15个队列,每次取出最小的队头来更新每个队列

为了避免有的数被重复更新,我们利用类似线性筛的思想,只让每个数被他的最小质因子筛出就好了

 

$T2:Six$

显然我们只关心每次加入的数含有哪些质因子而不是他是谁

对于相同的质因子集合他的贡献可以预处理出来

于是我们可以进行搜索,每次枚举这一位放的是哪个集合

然后我们发现合法的状态非常之少,只有$20$多万个

那么我们可以记忆化搜索,把之前选的所有集合看成一个字符串压入$hashmap$中

记得要把集合排序后$hash$

模拟测试20191023

标签:题意   $1   转化   哪些   搜索   计划   线性筛   span   处理   

原文地址:https://www.cnblogs.com/mikufun-hzoi-cpp/p/11729038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!