151017总结-学军

T1
求出 前缀和 和 后缀和 再枚举选出来的那个数计算
O(N)
/*
我是记录每位1的个数,再枚举每个数算出改变后的值,求最大
O(N*logN)
*/
//听说数据很水,直接选最大的数来乘都能过-_-|||


需要的知识:无


T2
ax≡p (mod n)
gcd(a,n) | p
即每个人步数与总长度最大公约数的倍数的位置都能到达


考虑枚举n的约数d,若存在gcd(i,n) | d 那么所有 gcd(i,n) = d 的位置都能到达
gcd(i,n) = d  →  gcd(i/d,n/d) = 1
∴ans+=phi(n/d)
//求的是不能到达的格子,所以要输出 ans - n,调了好久T_T


需要的知识:欧拉函数


T3
这个,,,真心做不来→→
### 关于C++学军信友队题库及编程练习资源 学军信友队是个专注于信息学竞赛的团队,其提供的题库和编程练习资源对于学习C++以及提升算法能力非常有帮助。以下是些相关的资源和建议: #### 1. **学军信友队题库** 学军信友队的题库通常涵盖基础到高级的各种算法问题,适合不同水平的学习者。参考引用中的DFS模板题[^1]就是个典型的例子,展示了如何通过深度优先搜索(DFS)解决组合优化问题。类似的题目在学军信友队的题库中可以找到更多。 #### 2. **在线平台推荐** 些在线平台上提供了与学军信友队类似的题库和练习资源: - **洛谷**:洛谷是个非常受欢迎的信息学竞赛练习平台,包含大量与学军信友队风格相似的题目。 - **Codeforces**:虽然不是专门针对学军信友队,但Codeforces上的许多题目也涉及类似的算法思想。 - **AtCoder**:另个国际化的编程竞赛平台,适合进阶学习者。 #### 3. **代码示例** 以下是个简单的C++代码示例,展示如何使用递归进行深度优先搜索(DFS),类似于引用中的内容[^1]: ```cpp #include <bits/stdc++.h> using namespace std; vector<vector<int>> adj; vector<bool> visited; void dfs(int node) { visited[node] = true; for (int neighbor : adj[node]) { if (!visited[neighbor]) { dfs(neighbor); } } } int main() { int n, m; cin >> n >> m; adj.resize(n + 1); visited.assign(n + 1, false); for (int i = 0; i < m; ++i) { int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } dfs(1); // 从节点1开始DFS return 0; } ``` #### 4. **书籍与教程** - **《算法竞赛入门经典》**:这本书是许多初学者的首选,涵盖了C++编程和算法的基础知识。 - **《挑战程序设计竞赛》**:适合有定基础的学习者,深入讲解了许多复杂的算法问题。 ### 注意事项 在选择题库或练习资源时,应根据自己的水平选择合适的难度。同时,可以通过参与线上比赛或讨论社区来进步提高自己的编程能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值