题目大意:
思路:CF的前三题是典型的思维量大,但不怎么涉及算法的题。所以我们着重从这个式子入手。 通过观察我们可以发现,当前一项大于后一项时,式子恒为0,于是我们可以想到,加入交换一下第一项和第二项呢?可以发现整个式子扩大了1,于是这题就完成了。
以下是ac代码(附详细注释)
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define el '\n'
using LL = long long;
int n, k, a[100005];
void solve()
{
cin >> n >> k;
rep(i, 1, 2 * n)
a[i] = i;//初始化a序列
int idx = 1;
while (k--)
{
swap(a[idx], a[idx + 1]);
idx += 4;//由于每次只要交换四项中的前两项,所以下标加4
}
rep(i, 1, 2 * n)
cout << a[i] << " ";
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
solve();
return 0;
}