补题进度:6/10

A(状压dp)

题意:

  有n个数字1,2,...,n,有m个限制(a,b),表示至少要有一个数字a排在数字b的前面

  你需要构造出一个含有数字1~n的序列,数字可以重复多次,要求该序列满足所有的m个限制,并且长度最短,你只需要输出最短的长度

  n<=18,m<=n(n-1)

分析:

  首先,最多只需要2n长度就可以满足任何限制,即在前面放上1~n,在后面放上1~n,每个数最多只需要出现2次就够了,有的仅仅需要出现一次

  我们很自然的想到枚举哪些数出现一次,把出现一次的放在中间,出现两次放在两边,然后判断是否合法,判断是否合法只要中间的数形成一个拓扑序就行了

  这样复杂度是$O(2^n*n^2)$的,在多组数据的情况下有点超时

  因为n很小,我们考虑状压dp,dp[s][i]表示考虑到第i个数应该放谁,前面放的数字的集合是S情况下,目前最短的序列长度

  我们枚举第i位填上x,那么

  dp[s∪x]=dp[s]+1(x的前驱都在s中,我只需要把x放进去就行了)

  dp[s∪x]=dp[s]+2(x的某些前驱不在s中,我不仅要把x放进去,还要把一个x丢到最后面来满足其它限制)

  这样时间复杂度是$O(2^n*n)$的,可以顺利通过

B

solved

C(异或性质+分段打表)

题意:

  给定n,m,求(0 xor n)*(1 xor n)*(2 xor n)*......(m xor n)的值,对一个大质数取模

  1<=m<n<=1e9

分析:

  有这样一个性质:$[0,2^l-1]$中所有数去和一个数x异或,得到的数仍旧是$[0,2^l-1]$中每一个数,只不过映射位置发生了变化

  于是我们可以把m转成二进制,枚举位置i作为分界点,当然m[i]=1,那么令m[i]=0,后面位都是自由元了,就可以去计算了,结果是一段数字的乘积

  那么问题是如何快速统计一段数字的乘积,数字的值可能高达1e9

  我们可以预处理1~1e9的阶乘表,然后相除就行了,但1~1e9的阶乘表很大不能全部打下,我们就分段打表,每隔2e5个打一个

D(树形dp)

E(二次剩余)

待填坑

F(计算几何+贪心)

待填坑

G(dfs+dp)

待填坑

H(贪心)

题意:

  给出长度为n的序列,序列中每个元素是P或者V,左端是起点,右端是终点,通过一个V可以获得1个金币,通过一个P必须要支付1个金币(换句话说如果金币不够不能通过该位置)

  现在一个team若干个人共同来玩这个挑战,他们的金币是共用的,现在他们的目标是至少有一个到达终点,现在问这个team中最少需要多少人参加这个挑战

  n<=1e5

分析:

  二分人数mid,然后判定

  容易发现所有人应该站在一个位置的,首先用现有的金币拿一个人向后试探(如果试探到了终点,那么就可行了),然后在可到达的这段区间中选一个获得金币最大的位置,让所有人都去那,不断迭代下去

  如果发现所有人始终停在一个固定的位置但不是终点,那说明当前人数是不够的

  时间复杂度O(nlogn)

  这题很容易有个错误的思路,就是拿mid-1个人去赚金币,让1个人去通关,当时Onsite的时候就是这样WA了一下午,事实上那1个人也可以帮忙赚金币的

I(插头dp)

待填坑

J(后缀树)

题意:

  给出一个长度为n的字符串,字符串是由小写字母a~l(12个字符)组成的

  现在你可以构造一个12个元素的置换把a~l分别置换掉

  你需要对于字符串的每个后缀都判断是否可以构造一个置换p,使得该后缀成为所有后缀中字典序最大的那个

  n<=1e5

分析:

  考虑把所有后缀都丢到一个Trie中

  考虑一个后缀suf[i]要想成为最大的后缀那么要满足什么条件呢?

  那就是从root到它这个点x之间所有路径的分叉处,会产生一些限制条件,比如某个点下面三个分叉点,边上的字符分别是'a' 'd' 'f',含有点x的是'd',那么必须满足p['d']>p['a'] p['d']>p['f']

  我们去遍历一遍x到root,把所有限制拿出来,如果能拓扑排序的话那么就是ok的

  很显然我们要去用后缀树去优化建树

  这样时间复杂度是O(n^2+n*12*12)的

  注意用SAM去构后缀树的时候,我们还要求出每条边的对应字符,然后限制用状态压缩之后的二进制数表示,在后缀树上dfs统计每个后缀节点的答案就行了

寒武纪camp Day5的更多相关文章

  1. 寒武纪camp网络测试赛

    寒武纪camp网络测试赛 地址:oj点我进入 A(树形dp+树链剖分) 题意: 分析: 考虑树形dp,f0(x)和f1(x)分别表示以x为根的子树,不取x点或取x点的最大合法子集的元素个数 那么对于一 ...

  2. CCPC-Wannafly Winter Camp Day5 (Div2, onsite) Sorting(线段树)

    题目链接 题意 对序列进行三种操作: 1.区间求和. 2.将区间小于等于$x$的数不改变相对顺序的前提下放到$x$左边,用同样规则将比$x$大的放到右边. 3.将区间大于$x$的数不改变相对顺序的前提 ...

  3. CCPC-Wannafly Winter Camp Day5 Div1 - Sorting - [线段树]

    题目链接:https://zhixincode.com/contest/22/problem/I?problem_id=314 样例输入 1 5 9 31 5 3 2 41 1 52 1 51 1 1 ...

  4. CCPC-Wannafly Winter Camp Day5 (Div2, onsite)

    Replay: Dup4: 时间复杂度算不对? 一点点思路不经过验证就激动的要死? 浪费自己一个小时还浪费别人一个小时? 对1e3不敏感? 1e3 * 1e3是多少? 模拟建边跑dp不写非要写个大模拟 ...

  5. 2019 CCPC-Wannafly Winter Camp Day5(Div2, onsite)

    solve 5/11 补题:7/11 A Cactus Draw Code:zz Thinking :zz 题意:要在n*n的网格内画上一棵节点数为n树,使得没有边相交. 很好想的构造题,因为网格有n ...

  6. 寒武纪camp Day6

    补题进度:10/10 A(树形dp) 略 B(dp) 题意: 给出一个n个关键节点的机械手臂,最开始是竖直的,即关键点在二维平面上的坐标分别是(0,0) (0,100) (0,200) (0,300) ...

  7. 寒武纪camp Day4

    补题进度:7/11 A(博弈论) 略 B 待填坑 C(贪心) 题意: 一个序列是good的当且仅当相邻两个数字不相同.给出一个长度为n的数列,每个数字是ai.定义一种操作就是把a中某个元素拿到首位去, ...

  8. 寒武纪camp Day3

    补题进度:9/10 A(多项式) 题意: 在一个长度为n=262144的环上,一个人站在0点上,每一秒钟有$\frac{1}{2}$的概率待在原地不动,有$\frac{1}{4}$的概率向前走一步,有 ...

  9. 寒武纪camp Day2

    补题进度:8/10 A(计数+BIT) 题意: 给一个长度为n的数组a[],任意选0<=i<=j<n,将a[i]~a[j]从小到大排序,形成新的数组.问有多少个不同的新数组. N,a ...

随机推荐

  1. Intel手册 Chapter23 VMX的简单介绍

    23.2  虚拟机架构 1: VMX为处理器上的虚拟机定义了处理器级的支持.VMX主要支持两类,VMM和VM 2: VMM作为HOST可以完全控制处理器和其他平台硬件. 每个VM都支持一个栈,并且由O ...

  2. tac命令

    tac——显示文件内容(反列显示) 命令所在路径:/usr/bin/tac 示例1: # tac /etc/hosts 反列显示/etc/目录下hosts文件内容 ☛适合查看内容较短的文件

  3. javaee 第四周作业

    分析hello.java.下载链接:https://github.com/javaee/tutorial-examples/tree/master/web/jsf/hello1 /** * Copyr ...

  4. java生成饼图svg

    package com.tellhow.svg; import java.io.File;import java.io.FileOutputStream; /** *  * @author 风絮NO. ...

  5. JQuery 获得绝对,相对位置的坐标方法

    获取页面某一元素的绝对X,Y坐标,可以用offset()方法:(body属性设置margin :0;padding:0;) var X = $('#DivID').offset().top; var ...

  6. 版本号对比方案及参考代码(Objective-C,Java,JavaScript)

    常用版本号 如 2.0.1 与 2.0.2 相比  2.0.2是比2.0.1要新的 那么该如何对这个版本号进行对比 这里有一个比较简单的实现方案 2.0.1 这种格式可以拆分为多个部分 如这里的2是大 ...

  7. 使用docker搭建gitlab 服务器

    本次使用的docker版本为 1.首先需要安装docker. 2.启动docker后,service docker start   3.拉取镜像  docker pull gitlab/gitlab- ...

  8. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  9. img元素srcset属性浅析

    img srcset 属性 img 元素的 srcset 属性用于浏览器根据宽.高和像素密度来加载相应的图片资源. 属性格式:图片地址 宽度描述w 像素密度描述x,多个资源之间用逗号分隔.例如: &l ...

  10. 聊聊svg

    来源:SVG的用法 补充 CANVAS产生的dom数量比SVG要少 SVG可以使用css设置动画样式 对于动画性能来说,不能说svg或canvas谁更优,而是要看情况: SVG 是一种使用 XML 描 ...