摘要: 这题是十分经典的数学题,在其他各大oj也都有类似(相同)的题目 但是,我们还是从头开始说 首先,这道题肯定不会是递推,因为给出的f[1~6]就已经没有递推性了。。 所以,应该是一道模拟题(?) 算法一:从1循环到n,每次枚举1~i的所有数,判断是否为因数,ans++。。。 复杂度比O(n^2)小一些 阅读全文
posted @ 2017-10-17 19:36 Accelerator-D-x 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 这题其实标算是AC自动机,我现在发的是超水题解。。。 等本人水品足够之后,当然会另写题解,正当的A这一题。。 由于数据十分水,所以对于每个询问,都输出1就行了 阅读全文
posted @ 2017-10-17 19:14 Accelerator-D-x 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 这道题看似是一道dp,但是实则不是,而是一道很水的题。。。 对于我这种扫雷的老玩家,都知道扫雷其实是推理游戏。。 设第二列第i项为f[i],则f[i]依赖于a[i-1]和a[i]和a[i+1]。。 所以可以暴力判断一下f[1]的值: f[1]=0:a[1]=0,a[2]=0; f[1]=2:a[1] 阅读全文
posted @ 2017-10-17 19:02 Accelerator-D-x 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 这道题目包含了一定的优先策略,所以是不能用贪心解决的。。 所以是一道dp题 首先,我们将机器人放在第一只鼹鼠的洞,这样就能得到局部最优解 接着,我们考虑可以从第j只地鼠出现的时间开始,一直向第i只鼹鼠出现的地方前进, 或者是每次看一看能不能在下一只地鼠出现前走到哪里,如果不能,就不要浪费时间过去 如 阅读全文
posted @ 2017-10-17 17:57 Accelerator-D-x 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 这道题数据范围给的比较大,1<=M<=10^8,1<=N<=10^12 所以不是模拟/枚举/暴力/正常做法,应该是O(1)或者log级别的。。。 一看,好像有好多种情况,所以不能用O(1)的数学方法 应该是组合计数,所以是快速幂 可能的次数为m^n种,但是会有重复的可能,所以要减去重复的次数(m-1 阅读全文
posted @ 2017-10-17 17:44 Accelerator-D-x 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 用kruskal(prim不会。。。才不是因为懒呢) kruskal大概思路:首先找到一条权值最小的边,将他的两个点加入集合中,然后继续往下找小边, 用并查集算法判断一下是否在统一集合内,如果是的话,就不加入; 不是就加入集合并累计入答案。。。 阅读全文
posted @ 2017-10-17 17:11 Accelerator-D-x 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 因为这是一种中链式dp,为了方便起见,将环状的项链平坦开呈链状,并且在末尾在延续一段,这样可以找到所有可能的相连情况 设f[i][j]为从i到j所能获得的最大值,因此从l枚举到r,求出最大值 阅读全文
posted @ 2017-10-17 16:44 Accelerator-D-x 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 并查集模板。。。有些语句十分神奇,能够一句话完成一个操作。。 其中gefa是压缩版(压代码。。),正常易懂的写法如下: int getfa(int x){ if(x==fa[x]) return x;//如果这个点的祖先是自己的话,那么他就是根节点了~所以可以直接返回编号了 else return 阅读全文
posted @ 2017-10-17 16:42 Accelerator-D-x 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 这是一个关于SPFA的题解。。(Dijkstra不太会。。) 由于邻接表太烦(不会),所以就直接写个vector来存边的关系, 然后用v[f][i].first表示f点连出去的第i个点的编号,v[f][i].second表示 f点连出去的第i条边的权值。所以,每次判断一下是否经过点i更优,并且更新 阅读全文
posted @ 2017-10-17 16:17 Accelerator-D-x 阅读(345) 评论(0) 推荐(0) 编辑