牛客练习赛55

A 等火车

题意

每s时刻有一辆车经过,问第t时刻距离下一班车还有多久。

思路

输出(s-t%s)%s即可。

代码

x = input().split()
s = int(x[0])
q = int(x[1])
for i in range(q):
    a = int(input())
    print('%d\n' %((s - a % s) % s))

B 数字游戏

题意

有2n-1个数,为2,3,4…2n。
首先裁判随机擦掉一个数。然后从乙开始擦掉一个数,然后到甲。。。直到剩两个数,如果它们互质那么甲胜,否则乙胜,甲乙都会采用最优策略,求出裁判擦数的方案使得乙能获胜。

思路

可以发现如果裁判先擦掉的数是奇数,乙必胜,否则乙必败。

当第一次擦掉是奇数的时候,黑板上一个有n个偶数,甲最多擦掉n−2个偶数,所以乙必胜。

当第一次擦掉是偶数的时候,设为ii

那么把2n-2个整数分为(2,3),(4,5)…(i-2,i-1),(i+1,i+2)…(n-1,n-2)

当乙擦掉一组中的某一个数的时候,甲把另一个擦掉。

最后只会剩下同一组的两个整数,它们互质,甲必胜。

所以答案输出n-1

代码

n = int(input())
print(n - 1)

C 最大生成树

题意

给出n个点,编号为1~n的完全图,其中i,j之间的边权为|i-j|,求最大生成树的边权之和。

思路

找规律,能发现答案为:n-1+n-2+n-2+n-3+n-3+…n/2+n/2,利用公式求和即可。
也有O(eis)算法,公式为 n 2 − ( n 2 / 4 ) n^2-(n^2/4) n2(n2/4)

代码

n = int(input()) - 1
print((n * n - int(n * n / 4)) % 998244353)
### 关于牛客练习赛14 B题的解析 目前未找到直接针对牛客练习赛14 B题的具体题解或比赛经验。然而,可以通过分析类似的题目以及常见的算法竞赛技巧来推测可能的解决方案。 #### 类似问题的解决思路 在算法竞赛中,B类题目通常涉及基础数据结构的应用或者简单的数学推导。以下是几种常见类型的处理方式: 1. **字符串操作** 若该题涉及到字符串处理,则可以利用C++中的`std::string`库函数[^2],例如查找子串、替换字符等操作。 2. **数组与序列** 对于数组或序列的操作,动态规划(Dynamic Programming, DP)是一种常用方法。通过定义状态转移方程,逐步解决问题。例如,在某些情况下,可以用滚动数组优化空间复杂度[^3]。 3. **图论模型** 如果题目描述中有提到节点之间的关系,可能是图论问题。此时可采用广度优先搜索(BFS)、深度优先搜索(DFS),甚至最短路径算法如Dijkstra或Floyd-Warshall来建模并求解[^1]。 4. **模拟与暴力枚举** 当面对简单逻辑判断或多步运算时,“模拟”成为一种有效手段。即按照题目给定规则一步步实现程序流程,虽然时间效率未必最优,但对于小规模输入非常适用[^5]。 下面提供一段伪代码框架供参考: ```cpp #include <iostream> using namespace std; int main(){ int testCase; cin >> testCase; while(testCase--){ // 输入处理... // 解决方案核心部分 // 输出结果 } } ``` #### 提升竞赛表现的经验分享 为了更好地准备此类赛事,建议采取以下策略: - 定期参与线上平台举办的各类比赛积累实战经历; - 复盘每次赛后官方发布的详解文档学习新知; - 加强基础知识巩固的同时拓宽思维边界尝试不同领域挑战项目; ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值