Codeforces Round 732 (Div
AquaMoon and Strange Sort
有
个人从左到右站成一排,从左数第 个人的衣服上印着 。每个人的朝向可以是朝左、朝右。一开始所有人的方向都是朝右。 您可以对这些人做一些“操作”,每次操作允许您找两个相邻的人让他们交换顺序,但是在操作之后,两人都会掉头,也就是朝向都从朝右变成朝左或者相反。
现求是否存在一种操作方法使得操作完成后这
个人衣服上的数字 从左往右读单调不减,并且最后所有人的方向都朝右。
题解:思维
容易发现:如果一个人在交换顺序后方向始终向右的话,那么我们必须保证其交换次数为偶数
同时题目限制我们只有相邻才能交换
所以我们发现,如果存在一种合法的操作方法使得
个人的顺序单调递增,那么原本在偶数位置上的数字仍然会在偶数位置,原本在奇数位置上的数字仍然会在奇数位置 所以我们不妨记录原本序列中偶数位置和奇数位置的状态,然后将该序列排序后,检查排序后偶数和奇数位置上的状态有没有变化即可
const int N = 2e5 + 10, M = 4e5 + 10;
int n;
int a[N], b[N];
int mp[N][2];
void solve()
{
cin >> n;
for (int i = 1; i <= 1e5; ++i)
mp[i][0] = mp[i][1] = 0;
for (int i = 1; i <= n; ++i)
{
cin >> a[i];
b[i] = a[i];
mp[a[i]][i % 2]++;
}
sort(b + 1, b + n + 1);
for (int i = 1; i <= n; ++i)
mp[b[i]][i % 2]--;
for (int i = 1; i <= n; ++i)
{
if (mp[a[i]][i % 2])
{
cout << "NO" << endl;
return;
}
}
cout << "YES" << endl;
}
AquaMoon and Chess
你有一个长为
的棋盘,这个棋盘上有一些棋子,你可以进行如下操作: 如果第
个位置是空的,且第 个位置非空,则可以将第 个位置的棋子挪到第 个位置 ( ). 如果第
个位置是空的,且第 个位置非空,则可以将第 个位置的棋子挪到第 个位置 ( ). 现在将给出一个棋盘的初始状态,求可以通过上述操作可以到达的状态数,你可以进行任意次操作,答案对
取模.
题解:思维 + 组合计数
容易发现:如果现在棋盘为
0110
,那么最后能够到达的所有状态为0110
,1100
,0011
,我们发现如果我们把11
捆绑看成一个整体后,那么我们观察发现所有可以到达的状态就是11
和0
随意组合排序那么如果现在棋盘为
01110
,那么最后能够到达的所有状态为01110
,11010
,00111
,那么我们也可以发现,如果现在存在相邻的奇数个1的情况,但是我们发现,如果我们将11
看成整体的话,实际上另一个1
位置是随着11
和0
位置的变化而被动移动的所以影响这个棋盘状态变化的是
11
和0
之间的组合顺序,我们可以忽略单个1
对整体状态的影响假设
11
的个数为cnt2
,0
的个数为cnt0
,那么答案为
const int N = 2e5 + 10, M = 4e5 + 10;
int n;
int qpow(int a, int b, int p)
{
int res = 1;
while (b)
{
if (b & 1)
res = res * a % p;
b >>= 1;
a = a * a % p;
}
return res % p;
}
int C(int a, int b, int p)
{
int res = 1;
for (int i = 1, j = a; i <= b; ++i, --j)
{
res = res * j % p;
res = res * qpow(i, p - 2, p) % p;
}
return res % p;
}
void solve()
{
cin >> n;
string s;
cin >> s;
int cnt0 = 0, cnt2 = 0;
for (int i = 0; i < n; ++i)
{
if (s[i] == '0')
cnt0++;
else if (s[i] == '1')
{
if (s[i + 1] == '1')
{
cnt2++;
i++;
}
}
}
cout << C(cnt0 + cnt2, cnt0, mod) << endl;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】