摘要:
题意:给定一个数x,现在定义f(x)是a*b|x的情况下,a,b的组合情况有多少种。现在给定一个数N求f(1)+f(2)+...+f(N)。解法:一开始想到了a*b是x的约数,因此推出了f(x)的公式,也就是这个公式,使得我们在求前缀和的道路上寸步难行......正确的解法是对于任意一个a*b|c可以视为a*b*c = x,那么就把前缀和问题转化为a*b*c <= x的解的组合个数问题了。三个数a,b,c先暂时不考虑其位置关系带来的不同,规定a<=b<=c,那么分情况讨论:1.当a=b=c时有一种排列情况2.当a=b<c时有三种排列情况3.当a<b=c时有三种排列 阅读全文
摘要:
题意:给定一系列的单词要求按照字典序把他们全部输出来。解法:首先判定能不能构成欧拉回路,然后就是O(E)的dfs计算出来。这题使用Fleury模板没搞出来,原因这里要根据单词来走边,而该算法得到的是节点访问序列。后面看到一种dfs,既能够保留边又能够保留点又简单多了,以后果断专注这种写法。代码如下:#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#include <string>#include <vector>#incl 阅读全文