
dp
文章平均质量分 74
Flaze_
一只蒟蒻【扑通扑通跪laekov 扑通扑通跪yjqqqaq 扑通扑通跪mhy12345 扑通扑通跪zms_
展开
-
20161024的考试】noip模拟,dp,区间中位数,值域分块
T1题意:1~n的全排列中,有k个逆序对的排列有多少种(n思路:显然是个dp,n^3,于是前缀和优化成n^2#include#define MAXN 1005#define MOD 10000using namespace std; int T,n,K;int f[MAXN][MAXN];int sum[MAXN][MAXN];int main(){ freopen("原创 2016-10-24 20:58:24 · 775 阅读 · 0 评论 -
BZOJ 3672 [Noi2014]购票【点分+斜率优化
先扔到序列上看看……dp式子写出来一眼斜率优化……dp[i] = ……因为有个l……所以决策看起来好像不单调啊……斜率也不单调……cdq啊稳啊分块之后先处理前面那段,然后用前面的结果更新后面的;反正都分治了,就把需要被更新的点按照 dis[i] - l[i] 从大到小排个序,然后把左边用来更新的dp值……从右往左把可以用来更新的值加进去,维护个凸包;【第一次原创 2017-02-20 15:31:08 · 978 阅读 · 0 评论 -
BZOJ 4709: [Jsoi2011]柠檬【斜率优化
发现……每一段的开头结尾应该是同一个颜色才会最优于是……就是个naive的斜率优化dp了,斜率单增,对于每种颜色,点的横坐标也有序,要最大化截距…于是…单调栈……#include#define MAXN 100005#define MAXS 10004using namespace std ; int n ;const double eps = 1e-7 ;const原创 2017-02-28 09:47:51 · 1934 阅读 · 1 评论 -
BZOJ 3864: Hero meet devil【dp套dp
把LCS当成子串 看样例看了一年这几天特别颓废啊【滑稽…先考虑LCS的求法,以及给出的字符串长度,显然是需要状压的对于求LCS的时候用的数组 dp[i][j] 把dp[i]差分之后,差分数组里只会有0和1,显然可以把这个东西状压了然后又发现,对于每个 i ,dp数组只与dp[i-1]有关于是可以用trans[s][ch] 表示在s状态的dp数组后原创 2016-12-25 21:36:57 · 866 阅读 · 0 评论 -
BZOJ 3831 [Poi2014]Little Bird【单调队列优化dp
显然每次转移最多+1,于是单调队列维护一下前面的答案就好, f[i] 单增,如果 f 相同,则比较 h 的大小【正确性显然【看第一句话】#include#define MAXN 1000005using namespace std; int n,q,k;inline int read(){ register char ch = getchar(); register int原创 2016-11-24 20:06:47 · 550 阅读 · 0 评论 -
BZOJ 1799 [Ahoi2009]self 同类分布【数位dp
枚举数字总和为多少(设为mod),f[i][j][k][0..1]表示算到第i位,前i位的和为j,这个数的数值%mod=k,是否顶上界转移就是f[i+1][j+x][(k*10+x)%mod] += f[i][j][k]这样的(顶上界的特判一下嘛,上面那个公式就省略0..1那一维了【滑稽手癌把i打成了x,调了一年2333#includeusing namespace st原创 2016-12-01 10:04:13 · 444 阅读 · 0 评论 -
NOIP 2015 D2 T1T2T3【写着玩
……去年去考D2似乎只有二十分来着……【捂脸于是今天晚上就补补进度【T1:二分答案【去年不会于是写的贪心【跪地#include#define MAXN 50005using namespace std; int l,n,m;int a[MAXN];bool check(int x){ for(int pre = 0,cnt = 0,i = 1;i<=n;++i){ if原创 2016-11-16 23:41:22 · 456 阅读 · 0 评论 -
20161101的考试】搜索,搜索+dp,ds水题
看到T2就觉得去年考过……似乎去年的我也在磕T3【啊…………今天啊,解锁了新成就【考到一半蓝屏】……T3在对拍,然后T1RE了,正在这个时候,老师打开了教师机,GG……还好T3存了档……期望100,得分100T1:题面:汉诺塔升级了:现在我们有n个圆盘和n个柱子, 每个圆盘大小都不一样,大的圆盘不能放在小的圆盘上面, n个柱子从左到右排成一排。 每次你可以将一个原创 2016-11-01 21:29:52 · 636 阅读 · 0 评论 -
20161031的考试】模拟,暴力取模+矩阵快速幂,搜索脸的dp
首先……我要大喊三声flaze煞笔T2……当时刚写完不知哪儿抽了手一抖一个shift+del删源码,解锁成就【mdzz】,然后重写的时候,果断脑残取模优化GG嗯……T3莫名其妙WA了一年,这种瘠薄题拿头来WA啊【跪地】……最后发现……调试的时候数组开小了,然后……タマダ,没删调,GGGGGG……T1:煞笔模拟题,没什么好说的T2:题面:……求 fib(f原创 2016-11-01 16:35:25 · 808 阅读 · 0 评论 -
BZOJ 1694 && 2037 【DP……算是区间?
先送个大爷的题解传送门显然在经过了l点和r点之后,[l,r]中途的点也是经过了的,并不会有任何贡献,于是可以用f[l][r]来记录这一段的贡献,还要记录当前是在左端点还是右端点,于是再开一维0..1就好了每次转移到 l-1和r+1,转移的代价就是当前未经过的点在转移的时间里减少的价值。BZOJ 1694直接用数量就好,2037开个前缀和瞎搞搞就好注意给出的数据是无序原创 2016-11-13 15:28:18 · 433 阅读 · 0 评论 -
BZOJ 3687 简单题【dp,bitset基础应用
因为sum发现出现次数的奇偶性才会影响对答案的贡献,于是存01就好每次新加一个数x,显然有更新: for(int i=x;i既然存01,就用bitset了bitset的左移右移很方便啊2333对了……这题……数据有毒,没给够n个数,顺手读入优化RE了一年2333#include#define MAXN 2000005using namespace std; in原创 2016-11-16 16:40:14 · 589 阅读 · 0 评论 -
BZOJ 3120 Line【矩阵乘法优化dp
矩阵乘法写到想哭【感觉不会再爱了x我失去了信仰【x看到数据范围,和题面,觉得多半是个矩乘优化dp【虽然这个不太靠谱2333反正刚才当场被yjq大爷打脸】这些都不管嘛先yy一下转移,因为限制有两个,如果用0表示女孩子,1表示男孩子的话【并没有别的意思23333则限制分别是横着连续的1的个数以及全是1的列的列数【对不起我m和n看反了但是不影响嘛2333原创 2016-09-24 22:20:35 · 708 阅读 · 0 评论 -
BZOJ 4300: 绝世好题【DP
SBDP,题意有毒,bi&bi-1!=0的意思是b[i]&b[i-1]!=0#include#define MAXN 100005#define MAXM 31using namespace std; int n;int read_x;int f[MAXM];int cf2[MAXM];int main(){ cf2[0]=1; for(int i=1;i<MAXM;++原创 2016-09-26 15:30:44 · 376 阅读 · 0 评论 -
BZOJ 1009: [HNOI2008]GT考试【KMP上DP+矩阵快速幂
很明显是个AC自动机/KMP上的数位dp看数据范围是要用矩阵优化的乱搞推矩阵……这种技能……大概需要意会QwQ……考虑最暴力的做法,f[i][j]表示长度为n的串匹配到了第i位,且此时在KMP上匹配到了第j个字符如果转移,在目前的已经匹配的串后面加一个字符,肯定就是直接用KMP匹配的姿势,反正字符集只有0到9,于是暴力枚举在后面加某个数会发生的转移就好了然后会发现,向量原创 2016-09-22 19:55:11 · 454 阅读 · 0 评论 -
BZOJ 4417: [Shoi2013]超级跳马【矩阵快速幂优化dp
矩阵快速幂优化dp……大概似乎还是很裸的……然而我昨天才学会这套理论于是考试只好在200+分场里110滚粗【哭嗯考虑用f[i][j]表示在第i行第j列的方案总数转移的话,因为只能跳奇数格,所以f[i][j]=f[i-2][j]+f[i-1][j-1]+f[i-1][j]+f[i-1][j+1](边界啥的判一下就是了如果不考虑从i-1列转移的方案,那么f[i][j]==f[i-2][j]原创 2016-09-21 15:05:30 · 917 阅读 · 0 评论 -
BZOJ 2152: 聪聪可可【树形dp
……煞笔树形dp看错题调了一年怎么办QAQ…直接上代码了没什么好说的码风越来越丑我也很绝望啊【#include#define MAXN 20005using namespace std ; int n ;inline int read() { register int ch = getchar() ; while (!isdigit(ch)) ch = getchar()原创 2017-02-14 18:35:03 · 692 阅读 · 0 评论