Codeforces Round 1004 (Div. 2)
A. Adjacent Digit Sums
题意:求有没有一个数字各位和为
发现一个数加一后,要么和加一,要么进若干位,就是减若干个9然后加1。所以判断
点击查看代码
void solve() {
int x, y;
std::cin >> x >> y;
if (y == x + 1 || (y < x) && (x - y + 1) % 9 == 0) {
std::cout << "YES\n";
} else {
std::cout << "NO\n";
}
}
B. Two Large Bags
题意:有两个袋子,开始第一个袋子有
发现值域和
点击查看代码
void solve() {
int n;
std::cin >> n;
std::vector<int> a(n);
for (int i = 0; i < n; ++ i) {
std::cin >> a[i];
}
std::vector<int> cnt(2 * n);
for (int i = 0; i < n; ++ i) {
++ cnt[a[i]];
}
for (int i = 1; i < 2 * n; ++ i) {
if (cnt[i] == 1) {
std::cout << "NO\n";
return;
} else if (cnt[i] > 2) {
cnt[i + 1] += cnt[i] - 2;
}
}
std::cout << "YES\n";
}
C. Devyatkino
题意:给你一个
一个位置加上9其值一定会改变,发现
点击查看代码
void solve() {
i64 n;
std::cin >> n;
auto check = [&](i64 x) -> bool {
while (x) {
if (x % 10 == 7) {
return true;
}
x /= 10;
}
return false;
};
int ans = 100;
for (i64 m = 9; m <= 1e17; m = m * 10 + 9) {
i64 x = n;
int sum = 0;
int t = 20;
while (t -- && !check(x)) {
x += m;
++ sum;
}
if (check(x)) {
ans = std::min(ans, sum);
}
}
std::cout << ans << "\n";
}
D. Object Identification
题意:交互题。给你值域为
先看有没有1到n的数没有出现,如果有则他没有出边,随便问一个点,如果是第一种情况答案肯定是0,否则是第二种情况。
如果都出现过,就记
点击查看代码
int ask(int i, int j) {
std::cout << "? " << i << " " << j << std::endl;
int res;
std::cin >> res;
return res;
}
void solve() {
int n;
std::cin >> n;
std::vector<int> a(n);
std::vector<int> st(n + 1);
for (int i = 0; i < n; ++ i) {
std::cin >> a[i];
}
int p1 = 0, pn = 0;
for (int i = 0; i < n; ++ i) {
st[a[i]] = 1;
if (a[i] == 1) {
p1 = i + 1;
}
if (a[i] == n) {
pn = i + 1;
}
}
for (int i = 1; i <= n; ++ i) {
if (!st[i]) {
int j = 1;
while (j == i) {
++ j;
}
if (ask(i, j) == 0) {
std::cout << "! A" << std::endl;
} else {
std::cout << "! B" << std::endl;
}
return;
}
}
if (ask(p1, pn) < n - 1 || ask(pn, p1) < n - 1) {
std::cout << "! A" << std::endl;
} else {
std::cout << "! B" << std::endl;
}
}
E. White Magic
题意:给你一个数组,你要选一个子序列
首先,只可能选一个0,不然如果一个0在前缀,一个0在后缀,必然不满足条件。
然后,如果不选0则可以选所有非0的数,因为任意后缀的
点击查看代码
void solve() {
int n;
std::cin >> n;
std::vector<int> a(n + 1);
for (int i = 1; i <= n; ++ i) {
std::cin >> a[i];
}
std::vector<int> suf(n + 2);
std::set<int> s;
int mex = 0;
for (int i = n; i ; -- i) {
s.insert(a[i]);
while (s.count(mex)) {
++ mex;
}
suf[i] = mex;
}
std::vector<int> pre(n + 1);
pre[0] = 2e9;
for (int i = 1; i <= n; ++ i) {
pre[i] = pre[i - 1];
if (a[i] != 0) {
pre[i] = std::min(pre[i], a[i]);
}
}
int ans = 0;
bool flag = true;
for (int i = 1; i <= n && a[i] != 0; ++ i) {
if (pre[i] < suf[i + 1]) {
flag = false;
break;
}
}
if (flag && mex > 0) {
++ ans;
}
for (int i = 1; i <= n; ++ i) {
ans += a[i] != 0;
}
std::cout << ans << "\n";
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具