C
题解:CF2094C Brr Brrr Patapim - 洛谷专栏 (luogu.com.cn)
我们只需要看边上的,然后看看边上哪个没有先输出哪个,然后从 (1,1) 点开始,先往左到头这一排是 2 到 n+1 的,然后再往下这一排是 n+1 到 2n 的。
#include<bits/stdc++.h>
using namespace std;
const int N=805;
int t,n,a[N][N];
bool vis[2*N];
int main()
{
cin>>t;
while(t--)
{
memset(vis,0,sizeof(vis));
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j) cin>>a[i][j];
for(int i=1;i<=n;++i) vis[a[1][i]]=1;
for(int i=2;i<=n;++i) vis[a[i][n]]=1;
for(int i=1;i<=2*n;++i)
if(!vis[i])
{
cout<<i<<" ";
break;
}
for(int i=1;i<=n;++i) cout<<a[1][i]<<" ";
for(int i=2;i<=n;++i) cout<<a[i][n]<<" ";
cout<<"\n";
}
return 0;
}
D
题解:CF2094D Tung Tung Sahur - 洛谷专栏 (luogu.com.cn)
如果他们的第一个音符不同,肯定不对。
然后统计出,这些串有几段,把每段音符个数计入下来。
如果段数不同不合法。
然后枚举每一段如果实际比弹得少不合法,如果如果实际比弹的两倍多也不合法。
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int t,cnt,cntx,cnty,X[N],Y[N];
string s,p;
int main()
{
cin>>t;
while(t--)
{
cntx=cnty=0;
cin>>s>>p;
if(s[0]!=p[0])
{
cout<<"NO\n";
continue;
}
for(int i=0;i<=p.size();++i) X[i]=Y[i]=0;
cnt=1;
for(int i=1;i<s.size();++i)
{
if(s[i]!=s[i-1])
{
X[++cntx]=cnt;
cnt=1;
}
else cnt++;
}
X[++cntx]=cnt;
cnt=1;
for(int i=1;i<p.size();++i)
{
if(p[i]!=p[i-1])
{
Y[++cnty]=cnt;
cnt=1;
}
else cnt++;
}
Y[++cnty]=cnt;
if(cntx!=cnty)
{
cout<<"NO\n";
continue;
}
bool flag=1;
for(int i=1;i<=cntx;++i)
{
if(Y[i]<X[i])
{
flag=0;
cout<<"NO\n";
break;
}
if(Y[i]>X[i]*2)
{
flag=0;
cout<<"NO\n";
break;
}
}
if(flag) cout<<"YES\n";
}
return 0;
}
E
题解:CF2094E Boneca Ambalabu - 洛谷专栏 (luogu.com.cn)
首先将这些数转化成二进制,然后遍历每一个数,枚举每一个二进制位,先看自己这一位是几,如果是 1,那么看有几个 0,如果是 0,那么看有几个 1。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5;
int t,n,Max,ans,a[N],sum[35][2];
signed main()
{
cin>>t;
while(t--)
{
Max=0;
memset(sum,0,sizeof(sum));
cin>>n;
for(int i=1;i<=n;++i)
{
cin>>a[i];
int x=a[i],cnt=0;
for(int j=0;j<32;++j)//转二进制
{
sum[cnt++][x%2]++;//统计这一位几个0,几个1
x/=2;
}
}
for(int i=1;i<=n;++i)
{
ans=0;
for(int j=0;j<32;++j)
{
if((1<<j)&a[i]) ans+=sum[j][0]*(1<<j);
else ans+=sum[j][1]*(1<<j);
}
Max=max(Max,ans);
}
cout<<Max<<"\n";
}
return 0;
}