05 2019 档案

摘要:思路 考虑比较朴素的解法,枚举每个长度为$k+1$的区间,然后统计区间中出现次数最多的颜色。这样的话复杂度为$O(n k)$的,显然不行。 观察到统计每个区间中出现次数最多的颜色中,可以只用看每种颜色在区间中出现的最后一个位置,这样的话只需要我们开个桶统计一下数量就行。 所以就类似于尺取那样,维护颜 阅读全文
posted @ 2019-05-22 12:51 heyuhhh 阅读(230) 评论(0) 推荐(0) 编辑
摘要:虽然中途写的时候有点波折,但是最后一发A,还是有点爽。 这虽然是个模板题,但还是涉及到许多知识的= = 首先我们求出一个最小生成树,并且求出其边权和$ans$。那么现在考虑加入其它的边,每次加入在树上就会形成一个环,这时因为是一个生成树,所以我们要删去一条边。很明显现在就要删去最小生成树上最大的边即 阅读全文
posted @ 2019-05-22 12:50 heyuhhh 阅读(208) 评论(0) 推荐(0) 编辑
摘要:这个题以前写过一遍,现在再来写,感觉以前感觉特别不好写的细节现在好些多了,还是有进步吧。 这个题的核心思想就是贪心+二分。因为要求最小时间,直接来求问题将会变得十分麻烦,但是如果转换为二分答案来判断可行性,问题就会简化许多。 至于贪心的话,很容易发现每个点尽量往上面跳是最优的,这里向上跳的话我们用倍 阅读全文
posted @ 2019-05-22 12:48 heyuhhh 阅读(268) 评论(0) 推荐(0) 编辑
摘要:4484: [Jsoi2015]最小表示 "题目链接" 题解: bitset的题感觉都好巧妙啊QAQ。 因为题目中给出的是一个DAG,如果$u v$这条边可以删去,等价于还存在一个更长的路径可以使得$u$到$v$。 这里的“更长”我们可以用拓扑序来搞,拓扑序大的相对于起点也肯定更长。那么思路就是对于 阅读全文
posted @ 2019-05-22 12:46 heyuhhh 阅读(426) 评论(0) 推荐(0) 编辑
摘要:四川第十届省赛 A.Angel Beats bitset "题目链接" 题解参考: "http://www.cnblogs.com/Aragaki/p/9142250.html" 考虑用bitset来维护对于所有的$x$,需要翻转的位置。但是这样来搞的话,很难处理题目的要求。 所以换个角度,考虑翻转 阅读全文
posted @ 2019-05-22 12:33 heyuhhh 阅读(160) 评论(0) 推荐(0) 编辑
摘要:HDU5036 题解 "题目链接" 思路: 求出破坏or打开所有门所需要的期望炮弹数量,那么根据期望的线性性质,我们可以求出每一个门的期望值最后累加起来就行了。 我们最后的目标就是求对于一个门$i$,有多少门可以到达$i$,假设有$s$个门(包含$i$),那么$E_i=1 \frac{1}{s}$。 阅读全文
posted @ 2019-05-21 22:40 heyuhhh 阅读(414) 评论(0) 推荐(0) 编辑
摘要:P2495 [SDOI2011]消耗战 "题目链接" 题解: 虚树$dp$入门题吧。虚树的核心思想其实就是每次只保留关键点,因为关键点的dfs序的相对大小顺序和原来的树中结点dfs序的相对大小顺序都是一样的,所以可以就求出dfs序并且利用它来构造。最后的图中只有关键点以及某些关键点对的lca。 具体 阅读全文
posted @ 2019-05-21 22:34 heyuhhh 阅读(141) 评论(0) 推荐(0) 编辑
摘要:P3071 [USACO13JAN]座位Seating "题目链接" 思路: 一开始把题给读错了浪费了好多时间呜呜呜。 因为第二个撤离操作是区间修改,所以我们可以想到用线段树来做。对于第一个操作,我们只需要维护suml,sumr,sum分别表示当前结点左端连续有多少个空位、右端连续有多少个空位、以及 阅读全文
posted @ 2019-05-19 22:43 heyuhhh 阅读(315) 评论(0) 推荐(0) 编辑
摘要:洛谷P2216 理想的正方形 "题目链接" 思路: 直接暴力显然不可行,可以发现每一个矩形向右边扩展时是一列一列增加,于是可以想到单调队列,用数组来维护当前每列的最大值。因为行也有限制,所以还要用一个单调队列来维护行的信息。 做法大概就是每次扩展一行,然后求出每一列当前的最大值,之后再一列一列来搞。 阅读全文
posted @ 2019-05-19 22:38 heyuhhh 阅读(190) 评论(0) 推荐(0) 编辑
摘要:洛谷P4556 雨天的尾巴 "题目链接" 题解: 因为一个点可能存放多种物品,直接开二维数组进行统计时间、空间复杂度都不能承受。因为每一个点所拥有的物品只与其子树中的点有关,所以可以考虑对每一个点来建立一颗权值线段树来维护多种物品以及其数量,然后最后在回溯时合并,这样就可以得到我们所需要的信息了。 阅读全文
posted @ 2019-05-19 22:33 heyuhhh 阅读(276) 评论(0) 推荐(0) 编辑
摘要:Codeforces Round 561 (Div. 2) 题解 "题目链接" A. Silent Classroom 水题。 Code cpp include using namespace std; typedef long long ll; const int N = 105; int n; 阅读全文
posted @ 2019-05-18 20:03 heyuhhh 阅读(807) 评论(2) 推荐(0) 编辑
摘要:Codeforces Round 142 (Div. 1) C. Triangles "题目链接" 今天校内选拔赛出了这个题,没做出来....自己思维能力还不够强吧。~~我题也给读错了。。~~ 每次拆掉一条边,可以考虑在原图中会破坏多少三角形,但这也不好统计;所以可以转化一下,在新图中是什么样子的。 阅读全文
posted @ 2019-05-17 22:13 heyuhhh 阅读(120) 评论(0) 推荐(0) 编辑
摘要:Educational Codeforces Round 65 (Rated for Div. 2)题解 "题目链接" A. Telephone Number 水题,代码如下: Code cpp include using namespace std; typedef long long ll; c 阅读全文
posted @ 2019-05-16 21:50 heyuhhh 阅读(339) 评论(0) 推荐(1) 编辑
摘要:P3311 [SDOI2014]数数 思路: 因为这个题有多个串,所以我们可以考虑构建一个AC自动机,然后在AC自动机上面跑数位dp。 设$dp(i,j)$表示当前是第$i$位(从高到低),在AC自动机上面的第$j$个结点的合法情况总数。 同数位dp一样,看看当前这一位目前是否有限制,如果没限制,就 阅读全文
posted @ 2019-05-16 20:26 heyuhhh 阅读(194) 评论(0) 推荐(0) 编辑
摘要:P3121 [USACO15FEB]审查(黄金)Censoring (Gold) 思路: 首先构造AC自动机,然后那串去匹配,并且记录一下每一个字符匹配时在AC自动机上的位置。 如果成功匹配一个单词,那么就需要从串中删除这个单词,并且从之前标记的位置开始匹配。 因为单词的长度我们知道,所以直接利用一 阅读全文
posted @ 2019-05-16 20:15 heyuhhh 阅读(224) 评论(0) 推荐(0) 编辑
摘要:P3375 【模板】KMP字符串匹配 来一道模板题,直接上代码。 cpp include using namespace std; typedef long long ll; const int N = 1e6 + 5; int n, m; char s1[N], s2[N]; int nxt[N] 阅读全文
posted @ 2019-05-16 20:07 heyuhhh 阅读(167) 评论(0) 推荐(0) 编辑
摘要:P3193 [HNOI2008]GT考试 思路: 设$dp(i,j)$为$N$位数从高到低第$i$位时,不吉利数字在第$j$位时的情况总数,那么转移方程就为: \(dp(i,j)=dp(i+1,k)*a(j,k)\) 这里$a(j,k)$就是从第$j$位到第$k$位的情况总数。那么根据这个转移方程我 阅读全文
posted @ 2019-05-16 20:06 heyuhhh 阅读(252) 评论(0) 推荐(0) 编辑
摘要:P2606 [ZJOI2010]排列计数 因为每个结点至多有一个前驱,所以我们可以发现这是一个二叉树。现在我们要求的就是以1为根的二叉树中,有多少种情况,满足小根堆的性质。 设$f(i)$表示以$i$为根的子树中满足小根堆性质的情况,那么就有:$f(i)=f(ls) f(rs) C_{sum(i) 阅读全文
posted @ 2019-05-16 19:50 heyuhhh 阅读(179) 评论(0) 推荐(0) 编辑
摘要:P2657 [SCOI2009]windy数 数位dp模板题,这里要考虑到前导0的情况,考虑一下就行了。 代码如下: cpp include using namespace std; typedef long long ll; const int N = 55; ll bit[N] ; ll a, 阅读全文
posted @ 2019-05-16 19:40 heyuhhh 阅读(126) 评论(0) 推荐(0) 编辑
摘要:P2602 [ZJOI2010]数字计数 思路: 首先考虑含有前导0的情况,可以发现在相同的$i$位数中,每个数的出现次数都是相等的。所以我们可以设$f(i)$为$i$位数每个数的出现次数。 那么就有递推方程:$f(i)=f(i 1) 10+10^{i 1}$。 假设现在要求的数为$x$位,那么我们 阅读全文
posted @ 2019-05-16 19:38 heyuhhh 阅读(199) 评论(0) 推荐(0) 编辑
摘要:我们维护$d[i,0/1]$,其中$d[i,0]$表示从1到$i$号结点经过路径中的最小值,$d[i,1]$表示从$n$出发到$i$的最大值。之后可以考虑枚举中转站$i$,利用$d[i,1] d[i,0]$来更新答案即可。这样做的正确性就是这样可以覆盖所有的情况(肯定会经过一个中转站。 这里我用的d 阅读全文
posted @ 2019-05-16 19:29 heyuhhh 阅读(130) 评论(0) 推荐(0) 编辑
摘要:思路 题中给出的图有单向边和双向边,其中单向边边权可能为负,这其实就说明我们不能直接用dijkstra。(貌似可以双端队列优化的spfa水过去= = 注意到无向边边权是非负的,这提示我们可以在无向边上跑最短路。并且我们可以知道,如果将无向边连接的点缩为一点,最后图中只剩下有向边的话,这个图就是一个D 阅读全文
posted @ 2019-05-16 19:28 heyuhhh 阅读(147) 评论(0) 推荐(0) 编辑
摘要:如果考虑不算上新修的道路,那么答案显然为$2 (n 1)$。 考虑$k=1$的情况,会发现如果我们新修建一个道路,那么就会有一段路程少走一遍。这时选择连接树的直径的两个端点显然是最优的。 难就难在$k=2$的时候,还是上面的思路,首先肯定连接两个叶子结点最优。假设我们连接的是$x,y$两个叶子结点, 阅读全文
posted @ 2019-05-16 19:26 heyuhhh 阅读(140) 评论(0) 推荐(0) 编辑
摘要:将1号点从图中去掉过后,图会形成几个连通块,那么我们首先可以在这些连通块内部求最小生成树。 假设有$tot$个连通块,那么我们会从1号点至少选$tot$个出边,使得图连通。这时我们贪心地选择最小的,这应该都很好懂。 因为题目中的要求是度数不超过$s$,那么也就是说我们可以从1号点出发,再加入$s t 阅读全文
posted @ 2019-05-16 19:25 heyuhhh 阅读(313) 评论(0) 推荐(0) 编辑
摘要:这个题可以默认有前导0,然后那些位数比输入数据小的数就可以被一起统计了。 之后就从第一位开始往后面扫,对于每一位,看是否达到限制,没有的话剩下的数随便排列就行,那么此时我们需要解决的就是 可重集的全排列问题 ;如果达到限制就继续考虑之后的一位。 下面重点说下怎么解决可重集的全排列问题: 设$S=\{ 阅读全文
posted @ 2019-05-16 19:23 heyuhhh 阅读(180) 评论(0) 推荐(0) 编辑
摘要:Codeforces Round 560 (Div. 3) F2. Microtransactions (hard version) 题意: 现在有一个人他每天早上获得1块钱,现在有$n$种商品,每种商品最后需要$k_i$个;现在有$m$个打折信息,每个打折信息包含$d_i,t_i$,表示第$t_i 阅读全文
posted @ 2019-05-16 19:21 heyuhhh 阅读(256) 评论(0) 推荐(0) 编辑
摘要:Codeforces Round 558 (Div. 2)题解 A. Eating Soup 水题,直接给出代码。 Code cpp include using namespace std; typedef long long ll; const int N = 1e5 + 5; int n; in 阅读全文
posted @ 2019-05-16 19:12 heyuhhh 阅读(371) 评论(0) 推荐(0) 编辑
摘要:Educational Codeforces Round 64 (Rated for Div. 2)题解 "题目链接" A. Inscribed Figures 水题,但是坑了很多人。需要注意以下就是正方形、圆以及三角形的情况,它们在上面的顶点是重合的。 其余的参照样例判断一下就好了了。~~具体证明 阅读全文
posted @ 2019-05-16 15:59 heyuhhh 阅读(208) 评论(0) 推荐(0) 编辑
摘要:F. Maximum Balanced Circle "题目链接" 题意 给出$n$个数,现在要从中选出最多的数$b_i,b_{i+1},\cdots,b_k$,将这些数连成一个环,要求两两相邻的数相差不超过1。 最后要求输出具体的方案。 题解 ~~一开始想了一个dp,似乎也可以做~~ 这个题也不用 阅读全文
posted @ 2019-05-12 21:27 heyuhhh 阅读(151) 评论(0) 推荐(0) 编辑
摘要:莫队算法 总结 最近两天学习了一下莫队,感觉莫队算法还是挺好用的(现在看到离线询问就想莫队... 就稍微写一下总结吧,加深一下对算法的理解。 普通莫队 核心思想 :莫队算法一般用来离线处理一系列无修改的区间询问问题,通过将所有的询问保存下来,并且将所有的询问区间进行适当地排序,从而达到降低时间复杂度 阅读全文
posted @ 2019-05-07 18:14 heyuhhh 阅读(242) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-05-07 00:27 heyuhhh 阅读(5) 评论(0) 推荐(0) 编辑