该文被密码保护。 阅读全文
摘要:
小技巧—双向边快速枚举 在与图有关的题中,我们可能会建立双向边。那么如果我们想要对这条双向边(也就是两条有向边)同时做操作。咋整? 第一种方法:从2开始存边的编号,然后异或1即可。 第二种方法:新开数组记录双向边编号是谁。 第三种方法:直接暴力再开个循环判一下。(它死了 着重讲解一下第一种方法,也是 阅读全文
摘要:
ZJOI 2008 骑士 洛谷传送门 JDOJ传送门 Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英。他们劫富济贫,惩恶扬善,受到社会各界的赞扬。 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争。战火绵延五百里,在和平环境中安逸了数百年的Z 阅读全文
摘要:
小技巧—指数形式的枚举 指数形式的枚举一般使用递归来实现。 通常,求一个集合的全组合(也就是全部子集)的时候,常用指数型枚举。 原理很简单,每层递归只有两个分支:选还是不选。 然后对于每次到达递归出口的时候,对当前的组合判断一下合不合法即可。 对于回溯来讲,可以使用各种STL实现(反正都是暴力,不用 阅读全文
摘要:
小技巧—滚动数组 滚动数组是常见的一种空间优化方式。 应用是递推算法,动态规划(其实现方式是递推)。 举个栗子: 斐波那契数列是递推的一个最好的例子,它的递推公式是: \[ fib_n=fib_{n-1}+fib_{n-2} \] 也就是说,我们只需要知道n-1和n-2项就能知道第n项,第n项跟前面 阅读全文
摘要:
刷题心得—背包问题的枚举方式 以0/1背包为例,到底正序枚举还是倒序枚举? 正序枚举还是倒叙枚举的原则取决于0/1背包的性质,即一个阶段的状态(1个物品)不能被放进背包两次。如果正序枚举的话,当前阶段被上一个阶段更新,而下一个阶段仍然可能被上一个阶段更新。多以就相当于一个物品被放进了背包两次。违背0 阅读全文
摘要:
洛谷 P2014 [CTSC1997]选课 洛谷传送门 JDOJ传送门 Description 学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了N(N< 300)门的选修课程,每个学生可选课程的数量M是给定的。学生选修了这M门课并考核通过就能获得相应的学分。 阅读全文
摘要:
小技巧—对于深搜森林的处理 所谓森林(请读者收起邪恶的笑容),就是很多棵互相独立的树。是一张不连通的图,其中每个连通块都是一个树。 所以我们发现,如果对这张图进行遍历的话,要先记录每个树的根节点,然后才可行。 感觉很麻烦很耗时。 怎么办呢? 新建一个0节点为所有树根的父亲,相当于一个虚的节点把所有节 阅读全文
摘要:
JDOJ 1070: phoneline JDOJ传送门 Description 小h最近准备给家里新装条电话线,好让他在奥运假期能够天天上网冲浪,不用再忍受那昂贵的无线上网。 电信局的工作人员对小h说,电话线网络上有n个站点,它们用m条边来连接,小h家的站点在1号,连接的终点在n号,站点之间有电线 阅读全文