挖土机周赛 Round 33(语法场)题解
2024年12月24日大约 2 分钟
33DAI 的决斗
题解
简单分类讨论即可。
参考代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a, b, c, x, y, z;
cin >> a >> b >> c >> x >> y >> z;
bool flag1, flag2;
if (a > y && z - (a - y) <= 0)
flag1 = true;
else
flag1 = false;
if (x > b && c - (x - b) <= 0)
flag2 = true;
else
flag2 = false;
if (flag1 && flag2)
cout << -1;
else if (flag1)
cout << 1;
else if (flag2)
cout << 2;
else
cout << 0;
return 0;
}
33DAI 的擂台游戏
题解
显然如果想要进入第二轮,就需要有
而比
其实也就是
参考代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int k, x;
cin >> k >> x;
int ans = 0;
int cnt = 0;
for (int i = 1;; i *= 2)
{
cnt += i;
ans++;
if (cnt >= x)
{
cout << min(k, ans);
return 0;
}
}
return 0;
}
33DAI 的染色
题解
简单暴力双重循环可以拿到
参考代码
#include <bits/stdc++.h>
using namespace std;
int n;
string s;
int last[30];
int main()
{
cin >> n;
cin >> s;
s = "^" + s + "$";
long long ans = 0;
for (int i = 1; i <= n; i++)
{
ans += last[s[i] - 'a'];
last[s[i] - 'a'] = i;
}
cout << ans;
return 0;
}
33DAI 的超速检测
题解
这个数据范围就是一个简单的模拟题。
参考代码
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000;
int n, L;
int s[MAXN + 5], e[MAXN + 5];
int main()
{
cin >> n >> L;
for (int i = 1; i <= n; i++)
cin >> s[i] >> e[i];
int ans = 0;
for (int i = 0; i <= L; i++)
{
bool flag = true;
for (int j = 1; j <= n; j++)
if (i < s[j] || e[j] < i)
{
flag = false;
break;
}
ans += flag;
}
cout << ans;
return 0;
}