既然要求相邻两人 1 1 1男 1 1 1女,那么对于 00 00 00中间暴力插 2 2 2个 1 1 1,对于 010 010 010中间暴力插 1 1 1个 1 1 1即可。
#include
#define int long long
using namespace std;
inline void solve(){
int n = 0; cin >> n;
string s; cin >> s;
int cnt = 0;
for(int i = 0; i n;
if(n & 1) cout 1] % MOD
a
[
(
p
o
s
+
i
−
2
)
%
n
+
1
]
a[(pos + i - 1) \% n + 1] - 1 > a[(pos + i - 2) \% n + 1]
a[(pos+i−1)%n+1]−1>a[(pos+i−2)%n+1]
#include
#define int long long
using namespace std;
#define showYes cout 1) { showNo; return; }
//for(int i = 1; i > t;
while(t--) solve();
return 0;
}
D1. 388535 (Easy Version)
给定区间
[
l
,
r
]
[l,r]
[l,r]和长度为
r
−
l
+
1
r - l + 1
r−l+1的序列
c
i
{c_i}
ci,现在由该区间内所有数字生成一种排列,要求你找一个
x
x
x,使得原排列所有数字
x
o
r
x
xor\ x
xor x后得到的新排列恰好为序列
c
i
{c_i}
ci。
首先分析按位异或的影响:对某位而言:
- 异或
1
1
1:对该位取反
- 异或
0
0
0:保持该位不变
那么对于一段排列而言,我们对其异或上一个数
x
x
x后产生的影响为:
-
x
x
x的某位为
1
1
1:原始序列的所有数字该位
1
1
1和
0
0
0数量互反
-
x
x
x的某位为
0
0
0:原始学列的所有数字该位
1
1
1和
0
0
0数量保持不变
由于保证一定合法,那么,我们首先生成一个
[
0
,
r
]
[0, r]
[0,r]的序列,统计每位
1
1
1的数量,同时统计给定序列该位
1
1
1的数量,如果不相等,异或值
x
x
x的该位一定为
1
1
1。统计输出答案即可。
#include
#define int long long
using namespace std;
inline void solve(){
int bit1[20] = {0}, bit2[20] = {0};
int l, r; cin >> l >> r;
for(int i = 1, num; i > num;
for(int j = 0; j
关注
打赏
- 回坑记之或许是退役赛季?
- [LCT刷题] P1501 [国家集训队]Tree II
- [LCT刷题] P2147 洞穴勘测
- 2022-2023 ICPC Brazil Subregional Programming Contest VP记录
- [线段树套单调栈] 2019-2020 ICPC Asia Hong Kong Regional Contest H.[Hold the Line]
- The 2021 ICPC Asia Nanjing Regional Contest E.Paimon Segment Tree 区间合并线段树/维护矩阵乘法
- CF580E - Kefa and Watch 线段树维护哈希
- HDU5869 Different GCD Subarray Query 离线查询/区间贡献
- 27.CF1004F Sonya and Bitwise OR 区间合并线段树
- 26.CF1000F One Occurrence