1 条题解
-
0
自动搬运
来自洛谷,原作者为

苏联小渣
believe in miracle.搬运于
2025-08-24 22:34:36,当前版本为作者最后更新于2021-11-23 18:22:53,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目大意
-
每个辣椒有一个年龄 和想成为菜品 A 或 B 的梦想
-
用年龄不超过 的辣椒做菜品 A,用年龄超过 的辣椒做菜品 B。
-
相邻两个辣椒比较, 时交换年龄。
-
问有多少个辣椒可以实现梦想。
分析
按照题意模拟即可。
读入 和 ,如果 不为 1,那么和前一个读入的比较。如果满足题目要求的交换条件则交换。
注意: 比较的时候要枚举哪一个辣椒年龄更大,不能只枚举一种情况。
经过一轮在线模拟交换后,再用一重循环判断有哪些达成了梦想。
Code:
#include <bits/stdc++.h> using namespace std; int n, x, s, a[1007], b[1007]; int main(){ scanf ("%d%d", &n, &x); for (int i=1; i<=n; i++){ scanf ("%d%d", &a[i], &b[i]); if (i == 1) continue;//i = 1时没法和前面的比较 if ((a[i] > a[i-1] && b[i] == 1 && b[i-1] == 0) || (a[i-1] > a[i] && b[i] == 0 && b[i-1] == 1)) //有两种情况 swap(a[i], a[i-1]); } for (int i=1; i<=n; i++){ s += (a[i] <= x && b[i] == 1), s += (a[i] > x && b[i] == 0);//判断语句返回值为 1 或 0 } printf ("%d\n", s); return 0; } -
- 1
信息
- ID
- 7281
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者