开启疯狂水题解模式,大概会持续好几次...直到我赶上进度为止。
以下题解包括:
\[1001【HDU-6624】 \\ 1004【HDU-6627】 \\ 1005【HDU-6628】 \\ 1006【HDU-6629】 \\ 1007【HDU-6630】\]
【1001】 数学 HDU-6624 fraction
http://acm.hdu.edu.cn/showproblem.php?pid=6624
找到最小正整数的 \(b\) 满足 \(a 且 \(a = bx(mod \ p)\)。
参考:https://blog.csdn.net/Sarah_Wang0220/article/details/98771865
可知:\(0,\(bx=py+a\) ==> \(0 ==> \(\frac{p}{x} < \frac{b}{y} < \frac{p}{x-1}\),要求最小的 \(b\)。
迭代法:
\[ \begin{aligned} & \because \frac{p}{x} < \frac{b}{y} < \frac{p}{x-1} \ 且 \ p > x \\ & \therefore \frac{p}{x} > 0 \ \ 取 \ t = \frac{p}{x} \\ & \therefore \frac{p-tx}{x} < \frac{b-ty}{y} < \frac{p-t(x-1)}{x-1} \\ & 取倒数得:\frac{x-1}{p-t(x-1)} < \frac{y}{b-ty} < \frac{x}{p-tx} \\ & 同理,继续减去左边的整数部分 \\ & 此时 \ b' = b - ty 不断减小 \end{aligned} \]
#include
【1004】 数学 HDU-6627 equation
http://acm.hdu.edu.cn/showproblem.php?pid=6627
给定 \(n\) 和 \(c\),输入 \(n\) 个 \(a_i\) 和 \(b_i\),计算所有 \(x\) 的解使得:\(\sum^{n}_{i=1} |a_ix+b_i| = c\)。
对于每个绝对值等式找出 \(x\) 的区间,再进行排序枚举区间,统计解的个数。
#include
【1005】 思维 HDU-6628 permutation 1
http://acm.hdu.edu.cn/showproblem.php?pid=6628
\(t\) 组案例,已知序列为:\(p_1p_2...p_n\),定义差异序列为:\(p_2-p_1,p_3-p_2,...,p_n-p_{n-1}\)。给定 \(n\) 和 \(k\),求序列 \(1,2,3,...,n\) 中差异序列排名第 K 小的那个,输出它。(\(2 \leq n \leq 20 \ \ \ 1 \leq k \leq min(10^4,n!)\))
对于 \(n \leq 8\) 时,直接暴力就行。
对于 \(n > 8\) 时,找到规律:先放下 \(n\) 这个数,后面最小就是 \(1,2,3,...,n-1\),然后只需要对后 8 位进行排列即可,因为 \(8! > 10^4\)。
#include
【1006】 扩展KMP HDU-6629 string matching
http://acm.hdu.edu.cn/showproblem.php?pid=6629
给定一个字符串,现要求得它的每一个后缀和原串的公共前缀,问暴力执行这一过程需要多少步。
扩展KMP裸题。
#include
【1007】 规律 HDU-6630 permutation 2
http://acm.hdu.edu.cn/showproblem.php?pid=6630
给定 \(n,x,y\),对于 \(1\) 到 \(n\) 这 \(n\) 个数,满足:\(p_1 = x, \ p_2 = y, \ |p_i-p_{i-1}| \leq 2 \ (1 \leq i < n)\)。
打表找规律即可。
#include