Codeforces Round #663 (Div. 2) (A~C题,C题 Good)
比赛链接:Here
1391A. Suborrays
简单构造题,
把
1391B. Fix You
R
和 D
即可
char a[110][110];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1 ; j <= m; ++j) cin >> a[i][j];
int sum = 0;
for (int i = 1; i < m; ++i) if (a[n][i] != 'R')sum += 1;
for (int i = 1; i < n; ++i) if (a[i][m] != 'D')sum += 1;
cout << sum << "\n";
}
}
1391C. Cyclic Permutations (Good)
先说结论:
对于任意的循环排列,例如 [4, 2,3,1,5,6]
它包含许多长度为3的循环: [1,2,3],[1,3,5],[3,4,5]
。请注意,所有列出的循环都包含仅从一个i选项中获得的节点。我们可以将其概括为以下几点。如果对于任何一个i,我们在它的两边做边,这将创建一个长度为3的简单循环。证明很简单。
因此,最多只能有一个峰值,即元素
我们可以通过将数字n,n相加来构造任何单峰排列−1,…,1按相同顺序排列成一个三角形。例如,[2,3,4,1]可以通过先将4,3,2推到前面,最后将1推到后面来构造。因此,对于除n之外的每个元素,我们可以选择将其推到前面或后面,使路径总数等于
const int mod = 1e9 + 7;
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n;
cin >> n;
ll a = 1, b = 1;
for (int i = 1; i <= n; ++i) a = a * i % mod;
for (int i = 1; i < n; ++i) b = b * 2 % mod;
cout << (a + mod - b) % mod;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战
2020-07-29 POJ - 3180 The Cow Prom ( korasaju 算法模板)
2020-07-29 按需取余