上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 69 下一页
摘要: 模拟。 首先暴力找到答案的位数,然后就是分类讨论输出答案。 阅读全文
posted @ 2016-09-23 12:29 Fighting_Heart 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 矩阵快速幂,欧拉定理。 $g(n)$递推式:$g(n)=5g(n-1)+5g(n-2)-g(n-3)$,可以构造矩阵快速求递$n$项,指数很大,可以利用欧拉定理降幂。 阅读全文
posted @ 2016-09-21 20:41 Fighting_Heart 阅读(226) 评论(0) 推荐(0) 编辑
摘要: $AC$自动机。 用$AC$自动机匹配一次,开一个$flag$记录一下以$i$位置为结尾的最长要打$*$多少个字符,然后倒着扫描一次就可以输出了。 阅读全文
posted @ 2016-09-21 20:10 Fighting_Heart 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 树的直径。 比赛的时候想着先树$dp$处理子树上的最长链和次长链,然后再从上到下进行一次$dfs$统计答案,和$CCPC$网络赛那个树$dp$一样,肯定是可以写的,但会很烦.......后来写崩了。 然后有一种新思路,很容易写。 假设下图中红线是树的直径,圆圈是直径上的节点,黑线表示一颗树。 如果删 阅读全文
posted @ 2016-09-21 13:43 Fighting_Heart 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 预处理,$01$背包,$bitset$优化。 可以预处理出每一种询问的答案,用$01$背包计算答案,$dp[i][j][k]$表示,前$i$个数字中,选择了$j$个,能否凑出$k$这个数字,可以开成$bitset<90>dp[55][12]$,第三维$bitset$位运算优化。 $HDU$不稳,有时 阅读全文
posted @ 2016-09-21 07:29 Fighting_Heart 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 欧拉回路。 首先根据连通性以及欧拉回路存在条件判掉不可能的情况,剩下的情况都存在解。 如果有两个奇度的点,那么答案是唯一的。(可以利用度来求解每一个点被走了几次) 如果全是偶数度的点,那么答案不唯一,但是去掉起点被多访问一次的答案也是唯一的,因此只需枚举起点就可以了。 阅读全文
posted @ 2016-09-19 22:42 Fighting_Heart 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 打表,二分。 满足条件的数字个数不多,可以全部找出来,排个序,每次询问的时候二分一下。 阅读全文
posted @ 2016-09-19 22:37 Fighting_Heart 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 打表,预处理。 因为只要保留$5$位小数,所以$n$大于某个数字的时候,答案都是一样的,通过寻找可以发现$n$大约为$2000000$。读入的时候需要用字符串。 阅读全文
posted @ 2016-09-19 22:35 Fighting_Heart 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 简单题。 阅读全文
posted @ 2016-09-19 22:33 Fighting_Heart 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 二分,验证。 二分$k$,然后进行验证。有一个地方需要注意一下:如果$n$个数,每次合并$k$个,最后一次不能合$k$个,那么一开始需要补$0$之后再合并才是最优的。合并的时候用优先队列合并时间复杂度过高,可以用两个队列模拟一下,优化掉一个$log$。 阅读全文
posted @ 2016-09-19 22:32 Fighting_Heart 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 背包,$map$,优化。 和普通背包一样,$map$加一个$erase$优化一下就可以跑的很快了。 阅读全文
posted @ 2016-09-19 22:28 Fighting_Heart 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 并查集,$dfs$。 从大的数字往里加,每加一个数字合并一下连通块,判断连通块内数字个数是否够,以及k能不能被当前加入的数字整除。然后$dfs$一下构造答案。 阅读全文
posted @ 2016-09-19 11:11 Fighting_Heart 阅读(225) 评论(0) 推荐(0) 编辑
摘要: $dp$,前缀和。 记$dp[i][j]$表示$i$轮结束之后,两人差值为$j$的方案数。 转移很容易想到,但是转移的复杂度是$O(2*k)$的,需要优化,观察一下可以发现可以用过前缀和来优化。 我把所有的数组全部开成$long$ $long$超时了,全改成$int$就$AC$了...... 阅读全文
posted @ 2016-09-17 10:10 Fighting_Heart 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 离散化,树状数组,组合数学。 这题的大致思路和$HDU$ $5700$一样。都是求区间交的问题。可以用树状数组维护一下。 这题的话只要计算每一个$i$被统计了几次,假设第$i$点被统计了$ans[i]$次,累加和就是答案。 $ans[i]$就是看$i$点之后有多少个区间右端点,假设有$m$个,那么$ 阅读全文
posted @ 2016-09-16 10:01 Fighting_Heart 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 递归,$RMQ$。 因为$n$较大,可以采用递归建树的策略。 对每一个点标一个$id$。然后按照$v$从小到大排序,每一段$[L,R]$的根节点就是$id$最小的那个。 因为二叉搜索树可能是一条链,所以不能暴力找$id$最小的,需要用线段树或者$RMQ$预处理快速寻找。 阅读全文
posted @ 2016-09-15 20:22 Fighting_Heart 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 暴力。 每个人找到一个入口,也就是从回收站到这个入口走的路程由人的位置到入口的路程来替代。 因此,只要找两个人分别从哪里入口就可以了。注意:有可能只要一个人走,另一人不走。 阅读全文
posted @ 2016-09-15 13:28 Fighting_Heart 阅读(194) 评论(0) 推荐(0) 编辑
摘要: $dp$。 题意中有一个词组:$in$ $a$ $row$,是连续的意思.... 因此这题只要倒着$dp$一下就可以了。$f[i][0]$表示从$i$位置往后割两个能否割,$f[i][1]$表示从$i$位置往后割三个能否割。 阅读全文
posted @ 2016-09-15 10:42 Fighting_Heart 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 思维。 当$k$趋向于正无穷时,答案会呈现出两种情况,不是$0$就是$1$。我们可以先判断掉答案为$1$和$0$的情况,剩下的情况都需要计算。 需要计算的就是,将最小的几个数总共加$k$次,最小值最大会是多少,以及将最大的几个数总共减$k$次,最大值最小可能是多少。两者相减就是答案。 阅读全文
posted @ 2016-09-14 22:22 Fighting_Heart 阅读(294) 评论(0) 推荐(1) 编辑
摘要: 贪心,递推,线段树,$RMQ$。 假设我们记$ans[i]$是以$i$点为起点对答案的贡献,那么答案就是$\sum\limits_{i = 1}^n {ans[i]}$。 $ans[i]$怎么计算呢? 首先,$[i+1,a[i]]$区间上肯定都是$1$(即上图紫线)。 然后在$[i+1,a[i]]$ 阅读全文
posted @ 2016-09-14 15:02 Fighting_Heart 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 最短路。 $dis[i][j][k]$记录到点$(i,j)$,门的状态为$k$时的最短路。转移的时候有$8$种方案,即直接走向周围四个点,或者进行旋转。比较烦的是判断两个相邻的点在状态$k$下是否连通,仔细一些就可以了。 阅读全文
posted @ 2016-09-14 10:47 Fighting_Heart 阅读(220) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 69 下一页