Codeforces 4 A-D
题面
题解
A
题目大意:
判断一个正整数 \(w\) 能否表示成两个正偶数之和。
解题思路:
考虑分类讨论 \(w\)。
对于 \(1\) 和 \(2\),显然为 NO;
对于 \(w \ge 3\),考虑将其表示为 \(x + 2\)。根据题意,若 \(x\) 为偶数,则答案显然必为 YES;否则必然为 NO。因为 \(2\) 是偶数,所以 \(w\) 与 \(x\) 同奇偶。结论的证明留作思考题。
综上,若 \(w \ge 3\) 且 \(w\) 为偶数则答案为 YES,否则为 NO。
#include <bits/stdc++.h>
using namespace std;
int main() {
int w;
scanf("%d", &w);
if (w % 2 == 0 && w != 2) puts("YES");
else puts("NO");
return 0;
}
B
题目大意:
构造一个数组 \(a\),使得 \(\text {minTime}_i \le a_i \le \text{maxTime}_i(1 \le i \le d)\),且 \(\sum _{i=1} ^ d a_i = \text{sumTime}\),或输出
NO表示不存在这样的数组。
解题思路:
先求出 \(x = \sum _{i=1} ^ d \text{minTime}_i\) 和 \(y = \sum _{i=1} ^ d \text{maxTime}_i\)。若满足 \(x \le d \le y\),则存在这样的数组,否则不存在。下面是一种构造思路:
接下来,考虑先设 \(a_i = \text{minTime}_i\),然后求 \(z = \text{sumTime} - x\)。接下来,考虑从 \(1 \le i \le d\),将 \(a_i\) 的值设为 \(\text{maxTime}_i\),并将 \(z\) 减去 \(\text{maxTime}_i - \text{minTime}_i\),直到 \(z \le 0\)。此时令 \(a_i \leftarrow a_i + z\),即为答案。证明过程略。
#include <bits/stdc++.h>
using namespace std;
int sum, d, x, y, z;
int a[100010], b[100010], c[100010];
int main() {
scanf("%d%d", &d, &sum);
for (int i = 1; i <= d; i++) scanf("%d%d", &b[i], &c[i]), x += b[i], y += c[i];
if (x <= sum && sum <= y) {
puts("YES");
if (x == sum) {
for (int i = 1; i <= d; i++) printf("%d ", b[i]);
putchar('\n');
} else if (y == sum) {
for (int i = 1; i <= d; i++) printf("%d ", c[i]);
putchar('\n');
} else {
for (int i = 1; i <= d; i++) a[i] = b[i];
z = sum - x;
for (int i = 1; i <= d; i++) {
int tmp = c[i] - b[i];
if (z > tmp) {
z -= tmp;
a[i] += tmp;
} else {
a[i] += z;
break;
}
}
for (int i = 1; i <= d; i++) printf("%d ", a[i]);
putchar('\n');
}
} else {
puts("NO");
}
return 0;
}
C
题目大意:
给定 \(n\) 次操作,每次向集合中加入一个字符串(当集合中没有这个字符串时),或加入【该字符串,连接,最小能使其不重复的正整数】的字符串。
解题思路:
这道题可以用 STL 中的 map 解决。使用 map 统计字符串出现的次数即可。
#include <bits/stdc++.h>
using namespace std;
int n;
map<string, int> mp;
int main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n;
while (n--) {
string s;
cin >> s;
if (!mp[s]) {
mp[s] = 1;
cout << "OK\n";
} else {
cout << s << mp[s] << '\n';
mp[s]++;
}
}
return 0;
}
D
题目大意:
求去除一些元素之后,严格二维上升子排列。
解题思路:
注意到 \(O(n^2)\) 可过。记忆化搜索即可。
可以使用链表存储序列。
#include <bits/stdc++.h>
using namespace std;
int n, d, w, a[5005], b[5005], f[5005], nxt[5005];
bool nok[5005];
int dfs(int x) {
if (f[x]) return f[x];
f[x] = 1;
for (int i = 1; i <= n; i++) {
if (nok[i]) continue;
if (a[i] > a[x] && b[i] > b[x] && f[x] < dfs(i) + 1) {
f[x] = dfs(i) + 1;
nxt[x] = i;
}
}
return f[x];
}
int main() {
scanf("%d%d%d", &n, &d, &w);
for (int i = 1; i <= n; i++) {
scanf("%d%d", &a[i], &b[i]);
if (a[i] <= d || b[i] <= w) nok[i] = 1;
}
printf("%d\n", dfs(0) - 1);
int pos = nxt[0];
while (pos) {
printf("%d ", pos);
pos = nxt[pos];
}
return 0;
}
Codeforces 4 A-D的更多相关文章
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
- CodeForces - 453A Little Pony and Expected Maximum
http://codeforces.com/problemset/problem/453/A 题目大意: 给定一个m面的筛子,求掷n次后,得到的最大的点数的期望 题解 设f[i]表示掷出 <= ...
随机推荐
- 2024-08-17:用go语言,给定一个从0开始的整数数组nums和一个整数k, 每次操作可以删除数组中的最小元素。 你的目标是通过这些操作,使得数组中的所有元素都大于或等于k。 请计算出实现这个目
2024-08-17:用go语言,给定一个从0开始的整数数组nums和一个整数k, 每次操作可以删除数组中的最小元素. 你的目标是通过这些操作,使得数组中的所有元素都大于或等于k. 请计算出实现这个目 ...
- Java是值传递还是引用传递,又是怎么体现的
关于Java是值传递还是引用传递,可以从代码层面来实现一下拿到结果 执行下面的代码: public static void main(String[] args) { int num = 10; St ...
- Linux firewalld 的用法
大乌龙事件之防火墙作祟: 在我的初始化环境中 selinux.iptables.firewalld 是关闭的, 莫名的firewalld 是没有关闭的这是我在安装完docker后一段时间后部署jenk ...
- NFS挂载时出现mount
NFS挂载时出现"mount.nfs: access denied by server while mounting "的解决方法 1.使用了非法端口,也就是使用了大于1024的端 ...
- 小tips: HTTP 请求过程示例图及名称解释
一个 HTTP 请求过程示例图: 一个 HTTP 请求需要经历以上过程,接下来看一个具体的例子: 名词解释: Queueing: 在请求队列中的时间. Stalled: 从TCP 连接建立完成,到真正 ...
- Angular 18+ 高级教程 – Component 组件 の 生命周期钩子 (Lifecycle Hooks)
前言 之前在 Component 组件 の Angular Component vs Custom Elements 文章中,我们有学习过几个基础的 Lifecycle Hooks. 比如 OnCha ...
- EF Core – Library use EF
前言 写 Library 有时候会用到 database, 会想用 EF 来维护. 比如 Identity, IdentityServer, OpenIddict, 这些 Library 都有使用到 ...
- 搭建本地nginx-rtmp服务,初体验rtmp推流、拉流
实验环境说明: ubuntu 16.04 进行本实验的前提:需要在ubuntu上搭建好ffmpeg环境,参考我的另一篇博文 ffmpeg编译过程经历的99八十一难 下面开始本文内容 PART1 编译安 ...
- 获取sql语句
1.$model->_sql(); 方法实际执行的就是 $model->getLastSql(); 2.fetchSql fetchSql用于直接返回SQL而不是执行查询,适用于任何的CU ...
- Android Qcom USB Driver学习(六)
眼图基础知识与详解 10分钟教会你看眼图 USB2.0 HUB眼图调试经验总结 一篇文章教你如何全面了解眼图测试! 预加重与去加重对眼图的影响 关于 USB 通信阻抗匹配的问题 硬件调试--眼图几个经 ...