[[../../ACM/数论/威尔逊定理]]
给定 \(n\), 计算
\(\sum_{k=1}^n\left\lfloor\frac{(3k+6)!+1}{3k+7}-\left\lfloor\frac{(3k+6)!}{3k+7}\right\rfloor\right\rfloor\)
思路: 容易想到威尔逊定理
- 若 \(3k+7\) 是质数,则 \((3k+6)!\equiv-1\pmod{3k+7}\)
看是否存在若干中方案使得 \(p_{x_{1}}+p_{x_{2}}+p_{x_{3}}+\dots=c\) ## Input 一共 \(T\) 组数据,对于每一组数据: \(\boxed{\begin{array}&n&c\\p_{1}&p_{2}&p_{3}&\dots&p_{n}\end{array}}\) 数据范围: - \(1\leq T\leq 10\) - \(1\leq n\leq 5\times 10^4\) - \(1\leq c\leq 500\) - \(1\leq p_{i}\leq c\) ## Output 找出一个方案满足最大值和最小值相差最小,求出最小的差值。如果不存在满足条件的方案,输出−1。 ## Sample Input
1 | 1 |
1 | 3 |
需要多加训练 Codeforces Round 913 (Div. 3) #div3
比较简单 #cf800
1 | #include<bits/stdc++.h> |
1 | #include <bits/stdc++.h> |
狐狸 Ciel 即将发表一篇关于 FOCS (狐狸操作计算机系统,读作 "狐狸")的论文。她听到一个传言:论文的作者列表总是按照 lexicographical 顺序排列。 在查看了一些例子后,她发现有时并非如此。在一些论文中,作者姓名并不是按照正常意义上的 lexicographical 顺序排列的。但是,在对字母表中的字母顺序进行某些修改后,作者姓名的顺序就会变成lexicographical顺序,这是事实! 她想知道,是否存在一种字母顺序,可以使她提交的论文中的姓名按照 lexicographical 顺序排列。如果有,你应该找出这样的顺序。
lexicographical 顺序的定义如下。当我们比较 \(s\) 和 \(t\) 时,首先要找到最左侧位置上的不同字符(\(s_{i} ≠ t_{i}\)) .如果没有这样的位置 (即 \(s\) 是 \(t\) 的前缀,反之亦然),则最短字符串较少。否则,我们将根据字母表中的顺序比较字符 \(s_i\) 和 \(t_i\) 。
第一行包含一个整数 \(n ( 1 ≤ n ≤ 100 )\):名称数量。
有一条向东西两侧无限延伸的道路,从这条道路上的某一参考点向东 \(x\) 米处的点的坐标定义为 \(x\)。其中,从参考点向西 \(x\) 米处的一点的坐标为 \(-x\)。
斯努克将从坐标为 \(A\) 的点开始,以 \(M\) 米的间隔在路上的各点摆放圣诞树。换句话说,他将在每一个可以用某个整数 \(k\) 表示为 \(A+kM\) 的点上摆放一棵圣诞树。
高桥和青木分别站在坐标为 \(L\) 和 \(R\) 的点上。\((L\leq R)\)。求在高桥和青木之间(包括他们所站的点)将会有多少棵圣诞树。 ### Constraints - \(-10^{18}\leq A \leq 10^{18}\) - \(1\leq M \leq 10^9\) - \(-10^{18}\leq L\leq R \leq 10^{18}\) - All input values are integers. ### Input \(\boxed{\begin{align}&A&M&&L&&R\end{align}}\) ### Output 打印将在高桥和青木之间设置的圣诞树数量(包括他们所站的位置)。 ### Sample Input
最近公共祖先 - OI Wiki (塔杨算法) Robert E. Tarjan(罗伯特·塔扬,1948~),生于美国加州波莫纳,计算机科学家。
Tarjan 发明了很多算法和数据结构。不少他发明的算法都以他的名字命名,以至于有时会让人混淆几种不同的算法。比如 - 求各种连通分量的 Tarjan 算法, - 求 LCA(Lowest Common Ancestor,最近公共祖先)的 Tarjan 算法。 - 并查集、Splay、Toptree 也是 Tarjan 发明的。
返祖边
横叉边
前向边
可以判断是否有负环,可与 [[图论/dijkstra]] 连用
1 | struct edge { |
1 | #include<bits/stdc++.h> |