![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Youga_
oier
展开
-
[BZOJ1003][ZJOI2006][DP][SPFA]物流运输
Description 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转 停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种 因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是 修改路线是一件十分麻烦的事情,会带来额外的成本原创 2016-10-21 17:28:28 · 407 阅读 · 0 评论 -
[NOIP模拟题][模拟][DP][乱搞]
T1 给定文本串A,模板串B,在A中从小到大找到B的每一个字符,输出最大字典序答案刚看到这道题就想是不是KMP,然而这并不可以,然后我就一脸懵逼。敲完第二题回来才发现这是道傻逼题,倒叙扫描即可T2 给定n*m 01串,奇数行0只能上下通过,且无价值,偶数行0的价值为连着一整块0的数量,求从第一行到最后一行最大价值一眼DP无疑,f[i][j]表示i行j列最大价值,从上往下推即可。只是这里要原创 2016-11-02 19:12:44 · 374 阅读 · 0 评论 -
[NOIP模拟题][LIS][同余最短路][DP][矩阵快速幂][容斥原理]
小L的二叉树 【题目描述】 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利。但是,小L对数据结构的掌握实在十分渣渣。 所以,小L当时卡在了二叉树。 在计算机科学中,二叉树是每个结点最多有两个子结点的有序树。通常子结点被称作“左孩子”和“右孩子”。二叉树被用作二叉搜索树和二叉堆。随后他又和他人讨论起了二叉搜索树。什么是二叉搜索树呢?二叉搜索树首先是一棵二叉树。设key[p]原创 2016-11-15 19:58:07 · 361 阅读 · 0 评论 -
[BZOJ1087][SCOI2005][状压DP]互不侵犯King
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子。 Input 只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N) Output 方案数。 Sample Input 3 2原创 2016-10-20 14:16:37 · 679 阅读 · 0 评论 -
[NOIP模拟题][DP][高效算法][RMQ][子集]
T1 BZOJ原题,DP,再来一个前缀和即可 T2 关键在于预处理魅力值,枚举每一个点,分别往两边扫,利用前缀和,统计大小关系,显然一个合法的区间要求左侧与右侧之和为0,剩下的就是RMQ或线段树即可 T3 神奇的做法,考虑所有数小于2^16,建立sum[pre][suf]表示前缀为pre,后缀为suf子集的数的个数。之所以这样定数组是因为对于a&s==a前提是a是s的子集,位运算搞搞即可原创 2016-10-29 16:35:06 · 286 阅读 · 0 评论 -
[NOIP模拟题][DP][水题][数学][树链剖分][差分序列]
T1 描述 给定3个字符串,求它们的最长公共子序列。 输入 第一行一个整数n,表示三个字符串的长度 接下来三行,每行是一个长度为n只包含小写字母的字符串。 输出 输出最长公共子序列的长度。 输入样例 4 abac abbc cbca 输出样例 2 提示 30% n<=10 100% n<=120水题原创 2016-11-09 18:53:44 · 330 阅读 · 0 评论 -
【dp】【倍增】花花的聚会
4.1 题意描述 花花住在H 国。H 国有n 个城市,其中1 号城市为其首都。城市间有n �� 1 条单向道 路。从任意一个城市出发,都可以沿着这些单向道路一路走到首都。事实上,从任何一个城市 走到首都的路径是唯一的。 过路并不是免费的。想要通过某一条道路,你必须使用一次过路券。H 国一共有m 种过 路券,每张过路券以三个整数表示:v k w:你可以在城市v 以价格w原创 2016-10-19 10:48:31 · 514 阅读 · 0 评论 -
NOIP2007守望者的逃离
恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者 在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这 个荒岛施咒,这座岛很快就会沉下去。到那时,岛上的所有人都会遇难。守望者的跑步速度为 17m/s,以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不 过每次使用闪烁法术都会消耗魔法原创 2016-10-18 09:14:15 · 1328 阅读 · 2 评论 -
[NOIP模拟题][DFS][DP]
T1 给定一棵树,定义一棵子树美丽当且仅当子树所以节点编号为连续整数区间,求美丽子树个数dfs记录每一棵子树的总节点数,最大编号,最小编号,若max-min+1=cnt,则ans++#include<cstdio>#include<cstring>#include<algorithm>#include<cctype>using namespace std;const int maxn原创 2016-11-07 17:07:36 · 234 阅读 · 0 评论 -
[BZOJ1079][SCOI2008][DP]着色方案
Description 有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块。 所有油漆刚好足够涂满所有木块,即c1+c2+…+ck=n。相邻两个木块涂相同色显得很难看,所以你希望统计任意两 个相邻木块颜色不同的着色方案。 Input 第一行为一个正整数k,第二行包含k个整数c1, c2, … , ck。原创 2016-10-26 16:35:42 · 348 阅读 · 0 评论 -
[BZOJ1037][ZJOI2008][DP]生日聚会Party
Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party。 hidadz带着朋友们来到花园中,打算 坐成一排玩游戏。为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之 差不超过k。很快,小朋友便找到了一种方案坐了下来开始游戏。hidadz的好朋友Susie发现,这样的就座方案其实 是很多的,所以大家原创 2016-10-26 11:07:26 · 231 阅读 · 0 评论 -
[BZOJ1037][ZJOI2008][DP]生日聚会Party
Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party。 hidadz带着朋友们来到花园中,打算 坐成一排玩游戏。为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之 差不超过k。很快,小朋友便找到了一种方案坐了下来开始游戏。hidadz的好朋友Susie发现,这样的就座方案其实 是很多的,所以大家原创 2016-10-26 11:07:09 · 298 阅读 · 0 评论 -
[BZOJ2431][HAOI2009][DP][前缀和]逆序对数列
题面复制出来有问题,就不贴题面了状态转移很明显,对于dp[i][j]表示填i这个数,有j个逆序对,显然将i插在i-1个数中,在它后面有多少数,就增加了多少逆序对,因为1-n是单调递增的。那么就可以得出dp[i][j]=sum(dp[i−1][k]sum(dp[i-1][k],这里j-k表示i能够提供增加的逆序对数。但这样时间复杂度为O(n3),会TLE。 考虑优化显然sum那段可以用前缀和表示,那原创 2016-10-24 20:41:05 · 511 阅读 · 0 评论 -
[LA3983][DP][单调队列]捡垃圾的机器人
n个垃圾,第i个垃圾坐标为(xi,yi),重量wi,有一个机器人,按照编号从小到大捡垃圾并扔进垃圾箱(垃圾桶在原点(0,0)),可以捡起几个垃圾后一起扔掉,但机器人持有垃圾总重量不得超过lim,两点间行走距离为曼哈顿距离(即横坐标之差加上纵坐标之差),求机器人行走最短路程 n<=1e5,c<=100我们一开始能够很容易想到用当前垃圾序号和载重量来表示一个状态进行DP,当数据量过大,这样不可行原创 2016-11-03 21:32:53 · 805 阅读 · 0 评论 -
[UVA11825][状压DP]黑客的攻击
题目大意 把n个集合P1,P2,P3,…,Pn分成尽量多组,使得每组中所有集合的并集等于全集考虑状压DP,P[i]表示i集合,cover[i]表示若干集合的并集,不难预处理出cover[i],那么DP方程就很好想了,f(S)=max(f(S-S0)|S0为S的子集,且cover[S0]=全集)+1,这里再次用到子集的枚举 for (int S0=S;S;S0=(S0-1)&S)#includ原创 2016-11-03 19:31:04 · 344 阅读 · 0 评论 -
[NOIP模拟题][数学][乱搞][DP?][扫描线][线段树]
T1 给定区间[ L,R ]{L<=R<=21亿},区间长度<=1e6,求区间内素数个数看数据范围就知道应该从这个区间入手 想到一个重要的性质,n以内的数最多只有一个大于根号n的质因子,那么我们如果只用根号n以内的素数,一定可以将n以内的素数筛出来 那么就可以先将根号n以内的素数筛出来,再用它们来筛一遍[L,R]即可#include<cstdio>#include<cstring>#i原创 2016-11-17 14:51:26 · 425 阅读 · 0 评论