09 2019 档案

摘要:题目链接:Link Problem Solution 不难发现最瘦的塔一定是最高的。 将序列翻转后作如下定义: $ f(i) $ = 1~i的草搭成的最小宽度 $ g(i) $ = 1~i的草搭成的最大高度 $ s(i) $ = 1~i的草搭成的宽度的前缀和 则 \[\large f(i)= \mi 阅读全文
posted @ 2019-09-29 21:37 happyZYM 阅读(169) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 显然不难找到状态转移方程,关键是如何快速预处理出某一段区间的代价。 易证对于某个确定的区间,b值就是中位数。在用对顶堆维护时顺带维护当前堆里的元素和即可在 $ O(n^2 log n) $ 内预处理完(15000ms好评)。。。 Code //h 阅读全文
posted @ 2019-09-24 21:09 happyZYM 阅读(180) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 这题其实就是一道数位dp的板子题。。。但是我一开始想复杂了。。。莫名其妙WA了。。。拍几万组数据都找不到锅在哪儿。。。心肌梗塞的感觉。。。 坑点:a可能大于b Code #include<cstdio> #include<cstring> #in 阅读全文
posted @ 2019-09-20 20:00 happyZYM 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 显然,如果我们知道从每个地方跳下去会落到哪里,就可以很方便地dp了,于是我们可以用线段树维护区间赋值操作,先预处理出跳到哪里。 Code #include<cstdio> #include<cstring> #include<algorithm> 阅读全文
posted @ 2019-09-18 21:55 happyZYM 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 这题主要在于预处理出可能的决策以减少不必要的计算。 Code #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int mod=10 阅读全文
posted @ 2019-09-17 21:18 happyZYM 阅读(86) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 可以跑出直径的2个端点再来个树上lca 这题是经典的二次扫描+换根法,分向上和向下dp2次即可。 Code #include<cstdio> #include<cstring> #include<algorithm> #include<vecto 阅读全文
posted @ 2019-09-17 21:02 happyZYM 阅读(113) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 这题。。。其实就是个很简单的选/不选树形dp,千万别想复杂。。。 Code #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespa 阅读全文
posted @ 2019-09-16 21:49 happyZYM 阅读(107) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 显然,我们可以发现,平均值和n都是确定的,因此就可以很愉快地区间dp了。 O(170859375)好像过不了诶时间复杂度 $ O(8^5 * 15^2) $ 。 一下为本题坑点: 每次分割后,都会扔掉一半 POJ上double输出用"%f"!!! 阅读全文
posted @ 2019-09-15 09:56 happyZYM 阅读(153) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution A+B型拼接的转移方程很显而易见,因此我们只要知道由循环构成的拼接。 可以考虑先预处理出每个数字的位数,然后最小循环节长度可以用kmp $ O(n^2) $ 预处理, $ O(1) $ 求出,由于我不会证最佳循环节长度一定是最小的,$ O(\sq 阅读全文
posted @ 2019-09-15 08:38 happyZYM 阅读(158) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 这题好难啊只需要判断能否拼接出sum/2即可,因为剩下的必然也是sum/2。。。 然后就可以愉快地多重背包了。。。 Code #include<cstdio> #include<cstring> #include<algorithm> using 阅读全文
posted @ 2019-09-14 09:54 happyZYM 阅读(197) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 一开始很愉快地想到了一个dp,然后发现AB+C和A+BC这两种情况会重复计数。。。 但其实在枚举A+B型时,可以强制令A一定形如(C),这样就可以避免重复计数了。 Code #include<cstdio> #include<cstring> # 阅读全文
posted @ 2019-09-14 09:35 happyZYM 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 经过一番尝试,不难找出使用子序列自动机优化的搜索方法,使得不会搜索重复解。但使用如下代码会发现存在一系列不可描述的问题: #include<cstdio> #include<cstring> #include<algorithm> #includ 阅读全文
posted @ 2019-09-10 21:53 happyZYM 阅读(159) 评论(0) 推荐(0) 编辑
摘要:题目链接:Link Problem Solution 序列长度显然可以很简单地求出,至于个数,在不考虑重复的情况下,若更优则覆盖,相同则累加。 考虑重复的情况,设i<=j,a[i]=a[j],显然在计算j的时,不能从i之前转移,且对序列长度无贡献,因此可用tag来维护一下,倒序枚举决策即可。 Cod 阅读全文
posted @ 2019-09-09 21:55 happyZYM 阅读(153) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示