Codeforces Round #406 (Div. 1)

A.Berzerk

考虑先手必胜态,一定是先手移动到某一个位置以后,这个位置是后手的必败态

考虑先手必败态,一定是无论先手如何移动,先手所能一道的任何位置都是后手的必胜态

基于此,我们可以直接记忆化搜索

可能题目比较煞笔我的搜索姿势不好,由于loop的关系,我需要正着和倒着各搜一遍才行


B.Legacy

很显然这是最短路

但是有到区间的边

考虑用线段树辅助建图

一颗线段是表示由区间出发的点,即2类型的边,默认所有点对应的叶节点指向所有点,显然,线段树中父节点应该可以花费0通往儿子节点,然后2类型的边,从线段树连向对应的点即可

需要另外一颗线段树,来建出3类型的边,与2相似,显然,线段树中儿子节点应该可以花费0通往父节点,所有的点指向其对应的叶子结点,3类型的边有对应的边指向第二课线段树中的点即可

这是一张稠密图,所以直接跑dij即可


C.Till I Collapse

显然,贪心策略是正确的,考虑优化

数组f[i][j]表示范围[i,j)之内,如果不存在和a[j]相等的数,那么f[i][j]=1,反之f[i][j]=0

对于每一个f[i]我们可以构建一个线段树来快速的求解,考虑的内存,我们用主席树

那么对于每一个k,我们只需要二分即可

复杂度∑ans(k)<=nlogn,那么,直接二分的话,会使复杂度带3个log,会TLE

考虑直接在主席树上二分,可以化掉一个log


D.Rap God

开起来是一道树分治,不过很繁琐啊

弃疗咯...............


E.ALT

只会简单的建图啊

用二分图来建图

把每一个公民看作是第一部分的一个点,第二部分的每一个点对应树上的一条路径

当且仅当,公民x,从xi-->xj经过了节点j,那么从第一部分的点x向第二部分的点y连边

这样以后,我们所需要解决的问题就成了二分图点的最小覆盖

二分图点的最小覆盖是说要把每一条边,至少一个顶点包含在所求集合内,对于这道题目,这样,来建图显然是正确的

然后一个性质就是说二分图的|最小点集|=|最大匹配|

那么直接跑二分图匹配时间复杂度显然是过不去的

然后就gg了........

CF768的更多相关文章

随机推荐

  1. proc_info_list

    内核中每种处理器架构抽象为一个proc_info_list结构体,在arch/arm/include/asm/procinfo.h中定义, struct proc_info_list { unsign ...

  2. poj-1700 crossing river(贪心题)

    题目描述: A group of N people wishes to go across a river with only one boat, which can at most carry tw ...

  3. PAT Basic 1081

    1081 检查密码 本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能.该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母.数字和小数点 .,还必须既有字母也有数字. 输 ...

  4. js基础之javascript的存在形式和js代码块在页面中的存放位置和 CSS 对比

    1.存在形式 文件 如: <script src='js/jc.js'></script> 前页面 <script type='text/javascript'>a ...

  5. Java学习笔记4---打包成双击可运行的jar文件

    写笔记四前的脑回路是这样的: 前面的学习笔记二,提到3个环境变量,其中java_home好理解,就是jdk安装路径:classpath指向类文件的搜索路径:path指向可执行程序的搜索路径.这里的类文 ...

  6. oracle游标遍历

    --创建存储过程 CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p (--参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型. is_ ...

  7. 创建sql作业(JOB)

    在SQL Server日常需求处理中,会遇到定时执行或统计数据的需求,这时我们可以通过作业(JOB)来处理,从而通过代理的方式来实现数据的自动处理.一下为SQL Server中创建作业的脚本,供大家参 ...

  8. equal(),hashcode(),toString()方法的作用

    equal(),hashcode(),toString()方法的作用 这三个方法都是java.lang.Object的方法. equal();判断两对象是否相等hashcode();为对象在容器中添加 ...

  9. 【bzoj2333】[SCOI2011]棘手的操作 可并堆+STL-set

    UPD:复杂度是fake的...大家还是去写启发式合并吧. 题目描述 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条 ...

  10. 树状数组--前n项和;

    树状数组是和线段树类似的数据结构,基本上树状数组可以做的线段树都可以做: 树状数组就是一个数组,在信息记录上有一些特点,以动态求前n项和为例:可以改变数组的某一个元素,求前n项和: 数组tree[ i ...