这场一开始st卡在了IO的上面T了两发,我wa了两发c,有一些情况没有考虑到。50mins的时候我看st代码,发现没问题大胆换了IO,AC,跟st讲了2minsC的时候发现了wa点,改了AC。随后cxy也AC了J题。大概过了快1小时,我们做不下去了,退场补题,发现DE还是可以做的,对标区域赛铜尾,如果DE开出来可能能进到银尾。
总结:
- IO必须开。
- 现场赛签到还是和队友讨论后交。
- E题没有耐心想下去。
M J是队友写的,貌似也是签到不写了。
题解:
C
题意:给你2个01串,你可以选择两个区间将区间内的所有数0变1,1变0。问有几种方法把他变为一样。卡O1
思路:
如果有两个联通块区间不一样那么方案数为6。
如果都一样那么方案数为(n+1)*n/2
如果只有1个,那么方案数为不一样的个数(cnt-1)2+一样的个数cnt22
此外0
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define forn(i,n) for(int i=0;i<n;i++)
#define for1(i,n) for(int i=1;i<=n;i++)
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
const int inf = 0x3f3f3f3f;
const ll INF =0x3f3f3f3f3f3f3f3f;
int main(){
IO;
int t;cin>>t;
while(t--){
int n;cin>>n;
string s,t;cin>>s>>t;
vector<int>a;
forn(i,n){
if(s[i]==t[i]) a.push_back(0);
else a.push_back(1);
}
int id = 0;
forn(i,n)if(a[i]){
if(i&&a[i-1]);
else id++;
}
if(id>2){
cout<<0<<'\n';
}else if(id==2){
cout << 6<<'\n';
}else if(id==1){
int cnt = -1