牛客周赛58
A 会赢吗?
小歪正在玩《
想整个花活,无伤过关,但吃下伤害最高的那一段招式一次。会赢吗?
void solve() {
double a;int b;cin >> a >> b;
if (a < b) {
cout << "YES\n";
} else {
cout << "NO\n";
}
}
B 能做到的吧
小苯有一个正整数
void solve() {
string s;cin >> s;
for (int i = 0;i + 1 < s.size();i++) {
if (s[i] < s[i + 1]) {
cout << "YES\n";return;
}
}
cout << "NO\n";
}
C 会赢的!
在一个无限大的二维网格内,阿龙和小歪正在玩一场游戏。我们使用
- 两人共同操作一个棋子,开始位置为
; - 每个回合每人可以将棋子向下或向右移动一格,向下移动一格即抵达
、向右移动一格即抵达 ; - 对于给定的终点
,在谁的回合中有机会将棋子走到,谁就能胜利;如果谁都不能到达,则视为平局; - 阿龙先手,双方均采取最优决策(尽可能让自己赢,自己赢不了则尽可能平局);
谁能赢呢。
void solve() {
int x, y;cin >> x >> y;
if (x < 0 || y < 0) {
cout << "PING\n";return;
}
if (x == y) {
cout << "NO\n";
} else if (abs(x - y) == 1) {
cout << "YES\n";
} else {
cout << "PING\n";
}
}
D 好好好数
小苯有一个数字
例如:
小苯有一个整数
k-好数的条件:在 k 进制下所有位<=1
#define int long long
void solve() {
int n, k;cin >> n >> k;
if (k == 1) {
cout << "1\n";return;
}
vector<int> ans;
while (n) {
ans.push_back(n % k);n /= k;
}
cout << *max_element(ans.begin(), ans.end()) << '\n';
}
E 好好好数组
对于数组
现在,你可以选择
- 数组中至少存在
个不同的数字; - 数组中的每一个数字都满足
。
可以打表知道,对于
,最多有 种方法 (最后一个数为 )+
所以判定条件:
void solve() {
int n, m;cin >> n >> m;
if (m == 1) {
cout << n + 1 << '\n';
} else if (m == 2) {
cout << n << '\n';
} else if (m == 3) {
cout << "1\n";
} else {
cout << "0\n";
}
}
F 随机化游戏时间?
注:本题和
版本的区别在于排列已知,询问概率。
小
小
直到
你需要直接输出
Solution
可持久化线段树/区间第
很容易知道,每次查询都会使得幸运数的可能区间缩小,直到得到答案。
求解区间第
G 随机化游戏时间!
注:本题和
版本的区别在于排列未知,输出全部可能的数字。
小
小
直到
本题作为了解差分约束
差分约束板子:P1250 种树 - 洛谷 | 计算机科学教育新生态