正经题解|共享电车
2024-04-08 10:57:28
发布于:浙江
28阅读
0回复
0点赞
题目解析
最多为 ,如果枚举电瓶车
与三轮车
的数量,需要双for,显然会超出时间限制。
可以发现,当三轮车
的数量为 的时候,可以转换为一辆电瓶车
和一辆汽车
,也就是说可以将三轮车的偶数
部分拿出来,分给电瓶车
和汽车
,那么三轮车的数量可以固定为0
和1
,再枚举电瓶车
与三轮车
的数量,看是否存在方案。
AC代码
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int t,n,m;
int main() {
ios::sync_with_stdio(false);
cin >> n >> m;
for(int i=0;i<=n;i++) {
int j = n - i;
if (j < 0)break;
if (i * 2 + j * 4 == m) {
cout << i << " " << 0 << " " << j << endl;
exit(0);
}
}
for(int i=0;i<=n;i++) {
int j = n - i - 1;
if (j < 0)break;
if (i * 2 + 3 + j * 4 == m) {
cout << i << " " << 1 << " " << j << endl;
exit(0);
}
}
cout << "-1 -1 -1" << endl;
return 0;
}
复杂度分析
对可能情况进行枚举,复杂度为:。
这里空空如也
有帮助,赞一个