上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: 线段树优化线性dp 拿到一道题目直接大力dp,设dp[i][j]表示考虑到第i个点并将其选中,且已经选了j个点的最优解,cost[i][j]表示选了i,j,之间的代价,显然可以压维: $$dp[i] = max (dp[k] + cost[k][i] ) +c[i] (j 1 include inc 阅读全文
posted @ 2018-11-05 17:31 Splitor 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 简单数学题 题目要求:$$\sum _{i=1}^a i^b mod10000(a,b 阅读全文
posted @ 2018-11-05 14:59 Splitor 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 棋盘形可行性dp 这种首先大力设状态:dp[i][j][k]代表考虑到 i,j;mod之后等于k是否可行,那么转移就很显然了,大力N^3转移就好了 include include include include include include include include include defi 阅读全文
posted @ 2018-11-05 14:54 Splitor 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 大力dp 一个正着跑,一个倒着跑,可以转换成两个正着跑 为了解决去重问题,我们规定第一条线不能越过第二条线,(没什么影响,不信画画图看看),这样就有一个显然的四维dp了,注意两个相等时要去一个 include include include include include include inclu 阅读全文
posted @ 2018-11-05 09:33 Splitor 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 悬线法 悬线法是一种解决矩形问题的利器,你可以抽象为:每个点都是一个固定着针的底座,你需要求出她的活动范围。 我们开3个数组:up,ll,rr代表了左、右、上的边界,那么最后我们遍历一下所有的点就能求出最大值。 怎么求up、ll、rr? up:如果上边的点和她反色,那么up[i][j]=up[i 1 阅读全文
posted @ 2018-11-05 08:58 Splitor 阅读(223) 评论(0) 推荐(0) 编辑
摘要: dp(记忆化搜索qwq) 这道题目本想练一下记忆化搜索,但是发现自己漏洞百出。 主要存在的问题:1、如果已经判断过边界了就没必要在终点位置return; 2、访问标记要注意用法qwq CODE: include include include include include include incl 阅读全文
posted @ 2018-11-04 16:58 Splitor 阅读(156) 评论(0) 推荐(0) 编辑
摘要: next_permutation可以将一个序列变为第一个字典序大于她的序列,并且本身具有返回值,如果不存在字典序大于她的序列了就返回false 所以,标准用法: int len=3; do { rep(i,1,len) cout 阅读全文
posted @ 2018-11-04 08:18 Splitor 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 可行性背包 令dp[i][j]表示选i个人能否达到j这个状态,那么转移就和背包一样了,外层枚举选哪一个(K),2、3层枚举i,j,那么$$dp[i][j] | = dp[i 1][j val[k]];$$ 阅读全文
posted @ 2018-11-03 20:35 Splitor 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 线段树+组合数学 这道题直接做好像根本不可做,考虑转化:我们可以用任意方案数 不合法的方案数,那么答案为:$$C_n^3 \sum_{i=1}^{n} C_{ki}^2$$ 其中ki为第i个点能打赢的人数。为什么是这样的:一个方案不合法只要一个人能打赢两个人就行了。 怎么求ki?考虑线段树,首先将所 阅读全文
posted @ 2018-11-03 08:00 Splitor 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 权值BIT || 线段树 ~~写一下主要是注意下别把边界打错了qwq~~ include include include include include include define maxn 500006 define max MAX using namespace std; inline int 阅读全文
posted @ 2018-11-01 20:14 Splitor 阅读(118) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 9 下一页