第四届上海理工大学程序设计全国挑战赛 A、M、K、I、C 题_哔哩哔哩_bilibili
第四届上海理工大学程序设计全国挑战赛 G 题(石子游戏)_哔哩哔哩_bilibili
讲解都在视频里哦
官方解题:出题人题解_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 (nowcoder.com)
#include<bits/stdc++.h>
using namespace std;
struct Node
{
int id;
int difi;
};
bool cmp(Node a, Node b)
{
if (a.difi != b.difi)
return a.difi < b.difi;
else
return a.id < b.id;
}
int main()
{
int n;
cin >> n;
vector<Node> a(n);
for (int i = 0; i < n; i++)
{
cin >> a[i].difi;
a[i].id = i;
}
sort(a.begin(), a.end(), cmp);
for (auto i : a)
cout << i.id + 1 << ' ';
cout << endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
if (b == c && a != b && b != d && a != d)
cout << "Yes\n";
else
cout << "No\n";
}
#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[1004][1004];
int di[4]{0, 1, 0, -1};
int dj[4]{1, 0, -1, 0};
int k; // 0, 1, 2, 3;
int cnt = 1;
void dfs(int i, int j)
{
a[i][j] = cnt++;
int ii = i + di[k], jj = j + dj[k];
if (ii >= 0 && ii < n && jj >= 0 && jj < m && !a[ii][jj])
{
dfs(ii, jj);
}
else
{
k = (k + 1) % 4;
int ii = i + di[k], jj = j + dj[k];
if (ii >= 0 && ii < n && jj >= 0 && jj < m && !a[ii][jj])
dfs(ii, jj);
}
}
int main()
{
cin >> n >> m;
dfs(0, 0);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << a[i][j] << ' ';
cout << endl;
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin >> T;
while (T--)
{
long long n, l, r;
cin >> n >> l >> r;
cout << r << endl;
}
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin >> T;
while (T--)
{
int n, k;
cin >> n >> k;
bool ok = true;
while (k >= 0)
{
if (k == n)
ok = false;
if (k % 2 == 0)
k = k / 2;
else
k = k / 2 + 1;
k--;
}
if (ok)
cout << "Alice\n";
else
cout << "Bob\n";
}
}