上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页
摘要: noip范围内的dp优化方法: 加速状态转移 1.前缀和优化 2.单调队列优化 3.线段树或树状数组优化 精简状态 3:精简状态往往是通过对题目本身性质的分析,去省掉一些冗余的状态。相对以上三条套路性更少,对分析能力的要求更高。 前缀和优化 逆序对(loj) 求长度为n,逆序对为k的排列有多少个,答 阅读全文
posted @ 2019-08-09 23:36 Sweetness 阅读(1061) 评论(0) 推荐(0) 编辑
摘要: 两个常见模型 bzoj4321 编号为1~n的人排成一排,问有多少种排法使得任意相邻两人的编号之差不为1或 1。 n用这个点集的连通方案数乘以剩余点集的总方案数即可。??? 我们设两个数组,g[s]表示s状态下的所有情况,即s状态下的点两两之间任意连边(包括不连边的情况),f[s]表示s状态下的合法 阅读全文
posted @ 2019-08-09 23:01 Sweetness 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 概率与期望dp 概率 某个事件A发生的可能性的大小,称之为事件A的概率,记作P(A)。 假设某事的所有可能结果有n种,每种结果都是等概率,事件A涵盖其中的m种,那么P(A)=m/n。 例如投掷一枚骰子,点数小于3的概率为2/6=1/3。 如果两个事件A和B所涵盖的结果没有交集,那么P(A或B发生)= 阅读全文
posted @ 2019-08-09 20:53 Sweetness 阅读(941) 评论(0) 推荐(0) 编辑
摘要: 图的基本概念 图是点和边组成的集合体,G=; V是点集 E是边集 有向边,有向图 无向边,无向图 无权、点权、边权、负权 环、自环、重边、有向无环图(DAG) 路径、简单路径:没有经过重复的点、连通 树:n个点n 1条边的连通图、完全图:任何两点间都有一条边(无向图)、竞赛图:将完全图上的每条边定一 阅读全文
posted @ 2019-08-09 18:11 Sweetness 阅读(256) 评论(0) 推荐(0) 编辑
摘要: Dp test solution 按照难易程度排序题解; Problem B Problem Description Tarzan 现在想要知道,区间 [L,R] 内有多少数是优美的。我们定义一个数是优美的,这个数字要满足在它 C 进制下的各位数字之和可以整除这个数字本身。 Tarzan 不会做这道 阅读全文
posted @ 2019-08-09 14:00 Sweetness 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 斜率优化 hdu3507 要输出N个数字a[N],输出的时候可以连续的输出,每连续输出一串,它的费用是 :这串数字和的平方加上一个常数M。求最小的; 0 ≤ n ≤ 500000, 0 ≤ M ≤ 1000 首先最暴力的:dp[i]表示输出到i的最小费用是多少;$dp[i]=min\{dp[j]+( 阅读全文
posted @ 2019-08-09 13:45 Sweetness 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 前言 1:与树或图的生成树相关的动态规划。 2:以每棵子树为子结构,在父亲节点合并,注意树具有天然的子结构。这是很优美的很利于dp的。 3:巧妙利用Bfs或Dfs序,可以优化问题,或得到好的解决方法。 4:可以与树上的数据结构相结合。 5:树形Dp的时间复杂度要认真计算,部分问题可以均摊复杂度分析。 阅读全文
posted @ 2019-08-08 13:26 Sweetness 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 经典的数位Dp是要求统计符合限制的数字的个数。 一般的形式是:求区间[n,m]满足限制f(1)、 f(2)、 f(3)等等的数字的数量是多少。 条件 f(i) 一般与数的大小无关,而与数的组成有关。 善用不同进制来处理,一般问题都是10进制和二进制的数位dp。 数位dp的部分一般都是很套路的,但是有 阅读全文
posted @ 2019-08-08 08:55 Sweetness 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 0/1背包 给出n个物品,每个物品有Vi的价值和Wi的费用,我们总共有m块钱,求最多能得到多少价值的物品。 N<=10^3,m<=10^3 记录方案数?记录输出方案? 输出方案: 对每个dp[i][j]记录是由哪个状态转移过来的,然后从最后一直往前找,输出; 最优策略方案数:再定义一个数组f[i][ 阅读全文
posted @ 2019-08-07 19:10 Sweetness 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 1.随机生成数据: 1.随机生成一个数: 非常简单啦也是,这里的mod取决于你要生成的数最大想要多大; int random(int mod){ return (long long)rand()*rand()%mod; } int main(){ freopen("data.in","w",stdo 阅读全文
posted @ 2019-07-25 09:33 Sweetness 阅读(274) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页