DP
TARsier_Gu
这个作者很懒,什么都没留下…
展开
-
【NOIP2016提高组模拟】积木
DescriptionData ConstraintSolution比赛的时候用了个神奇的小暴力,本来打算拿40分,没想到暴力出奇迹,随机数据下表现优良,居然碾过去了。暴力方法不讲,只贴代码,仅供对拍。 正解显然要用状态压缩(看数据范围),设fS,i,0/1/2f_{S,i,0/1/2},S表示当前已选择的积木集合,i表示在最上方的积木编号,0/1/2表示最上方的积木哪面朝上。转移方程容易推导。C原创 2016-09-03 09:51:15 · 404 阅读 · 0 评论 -
【NOI2014】挖宝藏(treasure)
DescriptionSolution这道题目是WinterCamp 2008 游览计划的加强版,原题是只有一层,但是主要解题思路原创 2017-03-23 15:21:23 · 599 阅读 · 0 评论 -
【NOI2017】无限棋盘
Description无聊的小A在一个无限大的棋盘上玩游戏,这个棋盘由一个M*N的模板不停重复生成。例如,当模板为: honi hsin 时,我们会生成如下棋盘: …honihonihonihoni… …hsinhsinhsinhsin… …honihonihonihoni… …hsinhsinhsinhsin… 其中,该棋盘在任意一个方向都可以无限延伸。 现在小A在棋盘上随机挑选原创 2017-04-07 11:41:42 · 559 阅读 · 0 评论 -
【NOI2017】机器人游戏
Description小A和小B在一个R行S列的棋盘上玩游戏,棋盘上的每一个棋格都有一个方向标记(上、下、左或右)。游戏按如下方式进行: 小A先将K个棋格涂上黑色(初始为白色),并且他不能涂黑最后一列的棋格;随后,小B在第一列的任意一个棋格上放一个小机器人;此时,小机器人将会不停地沿着他所在的棋格所指示的方向走到一个相邻的棋格,直到他到达最后一列的棋格,游戏结束。 游戏胜负规则如下: ●如果小原创 2017-04-07 11:55:32 · 811 阅读 · 0 评论 -
【GDSOI2017模拟】树
Description有n个点,它们从1到n进行标号,第i个点的限制为度数不能超过A[i]. 现在对于每个s (1 <= s <= n),问从这n个点中选出一些点组成大小为s的有标号无根树的方案数。Solution一个名叫prufer数列的东西,这是由标过号的无根树转化而来的数列,大致原理是:移去所有叶子节点(度为1的顶点)中标号最小的顶点和相连的边,并把与它相邻的点的编号加入prufer序列中,原创 2017-04-18 22:32:15 · 478 阅读 · 0 评论 -
【GDSOI2017模拟】奶酪
DescriptionCJY很喜欢吃奶酪,于是YJC弄到了一些奶酪,现在YJC决定和CJY分享奶酪。 YJC弄到了n-1块奶酪,于是他把奶酪挂在了一棵n个结点的树上,每根树枝上挂一块奶酪,每块奶酪都有重量。 YJC和CJY决定这样分奶酪:首先砍掉一根树枝,把树分成两部分,每人取一部分,然后各自在自己取的那部分树上选择一条路径并取走路径上的奶酪,然后把剩下的奶酪拿去喂老鼠。 两人都想让自己取走总原创 2017-04-18 22:17:18 · 446 阅读 · 0 评论 -
【GDSOI2017模拟】Travel Plan
DescriptionSolution很容易看得出是DP,但是在转移的方面有点意思。 如果我们把这个树按dfs序转化成数列之后可以发现,问题变成了:现在有一段连续的dfs序的节点不能够被选则,问除去这一段的其他节点最大贡献是什么? 可以发现,若是转化成数列,就是很简单的背包,但是要如何解决把所有节点的贡献合并起来呢?可以发现,如果我们弄一个DP的前缀值和后缀值,每次询问就很好解决了。但是还有一个原创 2017-04-22 21:15:01 · 486 阅读 · 0 评论 -
【GDOI2017模拟】树的难题
DescriptionSolution比较明显的树分治,把树分治之后直接对其子树进行处理,因为这道题目并不需要去掉子树的重复贡献,比起其他的一些题就要更好处理了。 对于一个以重心为根的子树,关键在于如何把每一棵子树都合并起来,可以发现要分成两种情况来计算贡献:当前根到子树的颜色与要合并子树的颜色相同或不同,因为相同就要减去重复的边的贡献,为了方便处理,我们要把子树的颜色排序,然后用树状数组维护。C原创 2017-04-22 21:29:53 · 524 阅读 · 0 评论 -
【51Nod 1022】石子归并 V2
Description1022 石子归并 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 N堆石子摆成一个环。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法 1 2 3 4 => 3 3 4(3) => 6 4(原创 2017-02-14 16:52:31 · 1051 阅读 · 0 评论 -
【NOIP2014八校联考第1场第2试】大水题(water)
Descriptiondzy 定义一个n^2 位的数的生成矩阵A 为一个大小为n*n 且Aij 为这个数的第i*n+j-n位的矩阵。 现在dzy 有一个数n^2 位的数k,他想知道所有小于等于k 的数的n*n 生成矩阵有多少种。(如果不足n^2 位则补前缀零)Solution首先要发现一个性质,除去回文数,其他数字反过来只要不超过k,就一定要减去另一个,于是就有递推式。除以2是因为这样子计算会重复原创 2017-01-15 22:31:23 · 549 阅读 · 0 评论 -
【NOIP2014八校联考第2场第2试】帮助Bsny(help)
DescriptionBsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数。例如,如果书的高度是30,30,31,31,32,那么混乱值为3;30,32,32,31的混乱值也为3。但是31,32,31,32,31的混乱值为5,这实在是太乱了。 Bsny想尽可能减少混乱值,但他有点累了,所以他决定最多取出k本书,再随意将它们放回到书架上。你能帮助原创 2017-01-15 07:58:15 · 592 阅读 · 0 评论 -
【NOIP提高组模拟】树塔狂想曲
Description相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和。走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1)。如下图是一个数塔,映射到该数塔上行走的规则为:从左上角的点开始,向下走或向右下走直到最底层结束。 1 3 8 2 5 0 1 4 3 8 1 4 2 5 0 路径最大和是1+8+原创 2016-09-03 21:36:57 · 590 阅读 · 0 评论 -
【NOIP提高组模拟】幻象
Descriptionphantom是一位爱思考的哲♂学家。 最近phantom得到了森の妖精的真传。在他练功的时候, 每秒他的思绪中都有一定的概率浮现出奇♂异的幻象,持续x秒的幻象将产生x^2 的幻象值。 phantom练功发自真心,他想知道,在N秒内他期望产生的幻象值是多少。Solution因为持续x秒的幻象将产生x2x^2的幻象值,所以设一个L数组,lil_i表示持续到i秒的期望,容易推出原创 2016-09-06 15:52:22 · 454 阅读 · 0 评论 -
【NOIP提高组】数格子
DescriptionData ConstraintSolution以前做过一道经典题目和这题类似:铺砖块 很明显就是一道状压DP题目,把图形旋转成N*4的矩阵,复杂度显然就是O(N∗24)O(N*2^4),但是发现N很大,那么就要用矩阵乘法了。在普通状压中,我们会处理出一个24∗242^4*2^4的二维数组,该数组表示从i状态能否转移到j状态,能为1,不能为0,这个矩阵就是转移矩阵,然后快速幂解原创 2016-09-20 16:18:29 · 370 阅读 · 0 评论 -
【NOIP提高组】天使的分裂
DescriptionData ConstraintSolution看到数据范围显然就是矩阵乘法快速幂了,那么问题的关键就在于推出转移矩阵。设GiG_i表示∑Fi\sum F_i,利用Fi−1F_{i-1}与Fi−2F_{i-2}组合成FiF_i,容易推出Fi=Fi−1+Fi−2+fi−1+fi−2F_i=F_{i-1}+F_{i-2}+f_{i-1}+f_{i-2}。刚开始设出了一个四元数组[f0原创 2016-09-24 22:01:10 · 324 阅读 · 0 评论 -
【GDOI2017】Market
DescriptionData ConstraintSolution可以发现,对于某个询问,开张时间超过计划的是没有贡献的,显然就可以通过以时间为第一关键字排序,用个指针添加有贡献的商店。分析数据后发现,总价值最大不超过9000。设fif_i为当答案为i时,需要花费fif_i的价值,设gig_i为min(gi,gi+1,gi+2,……)\min(g_{i},g_{i+1},g_{i+2},……),得原创 2016-11-07 22:36:34 · 500 阅读 · 0 评论 -
【NOIP提高组】最近公共祖先
DescriptionYJC最近在学习树的有关知识。今天,他遇到了这么一个概念:最近公共祖先。对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。YJC很聪明,他很快就学会了如何求最近公共祖先。他现在想寻找最近公共祖先有什么性质,于是他提出了这样的一个问题:n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA原创 2016-11-12 22:20:08 · 414 阅读 · 0 评论 -
【NOIP提高组】幻魔皇
Description幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。 所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。 请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。Solution先看到题目的关键字“斐波那契”,就很容易原创 2016-12-13 16:14:00 · 475 阅读 · 0 评论 -
【NOIP提高组】C
Description给出一个H的行和W列的网格。第i行第j列的状态是由一个字母的A[i][j]表示,如下: “.” 此格为空。 “o” 此格包含一个机器人。 “E” 此格包含一个出口,保证出口在整个网格中有且只有一个 每次可以选择上,下,左,右之一的方向,将所有剩余的机器人向这个方向移动一个格子,如果一个机器人被移出了网格,那么这个机器人会爆炸,并立即消失。如果一个机器原创 2016-12-22 15:22:41 · 608 阅读 · 0 评论 -
【NOIP2017提高组】好路线
DescriptionSolution很容易的DP。 先把式子化简可以发现变成了(a12+a22+......+ak2)∗k−(∑ai)2({a_1}^2+{a_2}^2+......+{a_k}^2)*k-(\sum{a_i})^2,后面的部分可以作为DP的其中一维状态,设成后面的值确定时,前一部分的值最小的情况。Code#include<algorithm>#include<math.h>原创 2017-11-06 14:41:22 · 716 阅读 · 0 评论