随笔分类 -  DP

摘要:我们爱数数 (counting) TankEngineer 是数数高手,每天早上的乐趣是倒背圆周率。 TankEngineer 的家里有一张圆桌,每个位置按顺时针从 1 到 N 编号,差的绝对值为 1 的两个位置 相邻。特别的,编号为 N 的位置与编号为 1 的位置相邻。 他的家里某天来了 N 个人 阅读全文
posted @ 2018-10-28 21:28 泪寒之雪 阅读(201) 评论(0) 推荐(0)
摘要:题链 Description Description 字符串拆分 字符串拆分 Code #include<bits/stdc++.h> #define ULL unsigned long long #define N 500007 #define Ha 100000007 using namespa 阅读全文
posted @ 2018-10-28 21:09 泪寒之雪 阅读(182) 评论(0) 推荐(0)
摘要:注意到一个最优区间的 s0==区间的开头 && s0==区间的结尾,那么我们有个N^2的dp。 f[i]=max(f[j-1]+a[i]*(s[i]-s[j]+1)^2)。 注意到单调性,在栈上二分答案。 阅读全文
posted @ 2018-09-04 20:57 泪寒之雪 阅读(127) 评论(0) 推荐(0)
摘要:题目描述 输入 第一行两个正整数n,m 接下来一行n个正整数描述ai 第一行两个正整数n,m 接下来一行n个正整数描述ai 输出 一个正整数,表示答案 一个正整数,表示答案 样例输入 3 1000000007 1 2 3 样例输出 75 提示 发现同样大小的连乘块系数相同。对其DP #include 阅读全文
posted @ 2018-08-16 20:22 泪寒之雪 阅读(132) 评论(0) 推荐(0)
摘要:题目描述 给出两个序列{a[i]}、{b[i]},一个排列 p 的权值定义为∑a[i]*b[p[i]]。 一开始有一个排列 P 作为限制,表示任意与 P 有某一位相同的排列均不合法。 初始时 P[i]=i,有 q 次操作,每次交换 P 中的两个元素。 在每次操作后,求出此时所有合法排列的权值中的最大 阅读全文
posted @ 2018-08-16 20:19 泪寒之雪 阅读(189) 评论(0) 推荐(0)
摘要:题目描述 小H为了参加NOIP复赛坐了一趟高铁,高铁的每节车厢里有n行m列的座位,这天恰好同时有n×m个人买了这节车厢的车票。每个人的车票可以看成一个二元组(x,y),对应于第x行y列的一个座位。 当然,有的人喜欢坐在过道边上,有的人则喜欢坐窗边,他们就会找附近的人换位置。不过,如果一名乘客离自己原 阅读全文
posted @ 2018-08-16 20:14 泪寒之雪 阅读(352) 评论(0) 推荐(0)
摘要:SOL: BFS式dp。 阅读全文
posted @ 2018-07-19 14:52 泪寒之雪 阅读(349) 评论(0) 推荐(0)
摘要:Description Description 在 n 行 m 列的网格中,你要圈一些地。你从左上角出发,最后返回左上角,路径内部的区域视为被你圈住。 你不可以进入网格内部, 只能在边上行走。 你的路径不能在左上角以外自交, 但是边足够宽, 你可以重复经过而不自交。网格中有一些格子对你很重要,你要尽 阅读全文
posted @ 2018-07-13 14:52 泪寒之雪 阅读(310) 评论(0) 推荐(0)
摘要:出题人的语文真是哗了狗了。 当一个不能被你捡起的东西被抛出你不捡是没有关系的。 那就是一个很简单的DP 阅读全文
posted @ 2018-07-02 21:33 泪寒之雪 阅读(148) 评论(0) 推荐(0)
摘要:题链 好像是轮廓线DP。 阅读全文
posted @ 2018-07-02 21:27 泪寒之雪 阅读(307) 评论(0) 推荐(0)
摘要:T1: .Double color chessboard 程序名称:dcc.pas/c/cpp 时间限制:2000ms 空间限制:8MB 题目描述 有一个游戏:给出一个n行n列的棋盘,里面有n*n个方格,其中每个格子上有颜色,总共 两种颜色0和1。 Bob要遵循规则去玩:一张卡要正好覆盖两个相邻且同 阅读全文
posted @ 2018-05-20 18:17 泪寒之雪 阅读(256) 评论(0) 推荐(0)
摘要:SOL: 我们发现轮廓线一定是单调不减的。 所以这个博弈的总状态数只有10C20 种呢。 算一下 有184756 种状态,大力dp一下就好了啦。 阅读全文
posted @ 2018-04-10 21:07 泪寒之雪 阅读(298) 评论(0) 推荐(0)
摘要:同zjoi2010 基站选址 阅读全文
posted @ 2018-03-28 20:49 泪寒之雪 阅读(146) 评论(0) 推荐(0)
摘要:题链 我们可以从大到小搞一搞,那么就有50分了。 然后我们可以证明,这个方案是最优方案脑残选错几次再把选错的几次取消。 因为在每个点最多选一次的情况下解唯一。 那么就可以对最优方案列DP,然后PaPaPa。 阅读全文
posted @ 2018-02-27 20:56 泪寒之雪 阅读(227) 评论(0) 推荐(0)
摘要:A:题链 B:题链 打表 C:题链 记得特判1 D:题链 做dp即可 E:题链 注意到p很小,那么对p暴力 阅读全文
posted @ 2018-02-04 12:43 泪寒之雪 阅读(183) 评论(0) 推荐(0)
摘要:题链 非常native的题目,我们考虑以下一些性质: .一个数若mo了一个小于自己的模数,那么其至少变成原来的一半。 我们构造三元对(i,j,k)表示当前做到i位,当前x可以取0至j,当前的答案是k+i*j, 我们考虑这样的转移: (i,j,k)to (i+1,j%num[i+1],k+i*(j-j 阅读全文
posted @ 2018-01-28 14:28 泪寒之雪 阅读(230) 评论(0) 推荐(0)
摘要:题链 SOL:我们易得 N&1 时答案为0. 我们再考虑偶数。我们知道树的完美匹配<=1.(证明方法是贪心的把叶子拿下来)。 如果存在完美匹配的话,我们知道要用到的匹配边两侧有奇数个点, 不用到的边两侧有偶数个点, 我们知道输入不一定是有完美匹配的。那么我们可以用边旁边的点得奇偶性来分类这样的边,然 阅读全文
posted @ 2018-01-25 10:18 泪寒之雪 阅读(253) 评论(0) 推荐(0)
摘要:我们发现,一个大小为X的集合的答案和在里面的元素是无关的。那么我们用ans[n]表示大小为n时的答案。 我们考虑如何转移这个答案。 我们发现ans[0]=ans[1]=0; 我们考虑增量法,答案可以被拆成最后一个强连通分量和之前的那部分,我们给出以下转移式 strong[i]表示一个大小为i的点集有 阅读全文
posted @ 2018-01-18 13:17 泪寒之雪 阅读(176) 评论(0) 推荐(0)
摘要:SOL: 这是最难的一道题。我一脸蒙蔽。 首先我们发现正面做这道题很难。那么我们求答案的补集。 我们把图缩点后,若其为点数大于1的DAG,那么我们就认为其不合法。 利用容斥原理,DAG图的特征是有至少一个入度为0的点并且这个图不止一个点(这里及以下所说的点都是指求强连通后的 点),就根据这个进行容斥 阅读全文
posted @ 2018-01-10 19:55 泪寒之雪 阅读(238) 评论(0) 推荐(0)
摘要:SOL::我们有以下dp 不难想到记f[i][j]表示统计到第i门课,此时j个人被碾压的方案数。 f[i][j] = f[i-1][k] * C[k][j] * C[n-k-1][n-rank[i]-j] * P[i] (k >= j) P[i]=∑(j=1 to U[i])j^(n−rank[i] 阅读全文
posted @ 2018-01-06 21:03 泪寒之雪 阅读(163) 评论(0) 推荐(0)