这场BEF太妙了,又学到了小技巧,可惜机器人没来
A
#include<bits/stdc++.h>
using namespace std;
int get(int a,int b,int c)
{
printf("? %d %d %d\n",a,b,c);fflush(stdout);
int val;scanf("%d",&val);
return val;
}
void solve()
{
return ;
}
int main()
{
int T;scanf("%d",&T);
while(T--)
{
solve();
int n;scanf("%d",&n);
int p1=0,p2=0,cnt1=0,cnt2=0,mx=0;
for(int i=2;i<n;i++)
{
int val=get(1,i,n);
if(val>mx)
{
p1=i;
mx=val;
cnt1=1;
}
else if(val==mx)cnt1++;
}
int mx2=0;
for(int i=2;i<=n;i++)
{
if(i==p1)continue;
int val=get(i,p1,1);
if(val>mx2)
{
p2=i;mx2=val;cnt2=1;
}
else if(val==mx2){p2=i;cnt2++;}
}
if(p2==n&&cnt1==n-2)printf("! %d %d\n",1,n);
else if(cnt2==n-2)printf("! %d %d\n",1,p1);
else printf("! %d %d\n",p1,p2);
fflush(stdout);
}
}
B
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int T;scanf("%d",&T);
while(T--)
{
int n;ll x,y;scanf("%d%lld%lld",&n,&x,&y);
x=x&1,y=y&1;
for(int i=1;i<=n;i++){
ll a;scanf("%lld",&a);
x^=a&1;
}
if(x==y)printf("Alice\n");
else printf("Bob\n");
}
}
C
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int T;scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&n,&m);
int tmp=n*m;
int r1=tmp/2,r2=tmp-r1;
if(r1%m==0&&r2%m==0)
{
int t1=1,t2=2;
printf("YES\n");
for(int i=1;i<=n;i++)
{
if(t1<=tmp)
for(int j=1;j<=m;j++)printf("%d ",t1),t1+=2;
else for(int j=1;j<=m;j++)printf("%d ",t2),t2+=2;
printf("\n");
}
}
else printf("NO\n");
}
}
D
#include<bits/stdc++.h>
using namespace std;
int get(int a,int b,int c)
{
printf("? %d %d %d\n",a,b,c);fflush(stdout);
int val;scanf("%d",&val);
return val;
}
int main()
{
int T;scanf("%d",&T);
while(T--)
{
int n;scanf("%d",&n);
int p1=0,p2=0,cnt1=0,cnt2=0,mx=0;
for(int i=2;i<n;i++)
{
int val=get(1,i,n);
if(val>mx)
{
p1=i;
mx=val;
cnt1=1;
}
else if(val==mx)cnt1++;
}
int mx2=0;
for(int i=2;i<=n;i++)
{
if(i==p1)continue;
int val=get(i,p1,1);
if(val>mx2)
{
p2=i;mx2=val;cnt2=1;
}
else if(val==mx2){p2=i;cnt2++;}
}
if(p2==n&&cnt1==n-2)printf("! %d %d\n",1,n);
else if(cnt2==n-2)printf("! %d %d\n",1,p1);
else printf("! %d %d\n",p1,p2);
fflush(stdout);
}
}
E
#include<bits/stdc++.h>
using namespace std;
const int maxn=4e5+10;
vector<int> e[maxn<<1];
bool st[maxn<<1];
int c[maxn];
void dfs(int u,int col)
{
st[u]=true;c[u]=3-col;
for(auto v:e[u])
if(!st[v])dfs(v,3-col);
}
int r[maxn],cnt;
map<int,int> last;
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&r[i]);
for(int j=0;j<r[i];j++)
{
int a;scanf("%d",&a);
++cnt;
if(last[a])
{
e[cnt].push_back(last[a]);
e[last[a]].push_back(cnt);
last[a]=0;
}
else last[a]=cnt;
if(cnt&1)e[cnt].push_back(cnt+1),e[cnt+1].push_back(cnt);
}
}
for(auto x:last)if(x.second)
{
printf("NO\n");return 0;
}
printf("YES\n");
for(int i=1;i<=cnt;i++)if(!st[i])dfs(i,1);
int tmp=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=r[i];j++)
{
if(c[tmp++]==1)printf("L");
else printf("R");
}
printf("\n");
}
}
F
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;ll mod;
const int maxn=3e5+10;
ll a[maxn],b[maxn],c[maxn];
ll f[maxn];
int cnt;
int n;
void reduce(int k,ll x)
{
if(k>n)return ;
if(c[k]==0)cnt--;
c[k]=(c[k]+x+mod)%mod;
if(c[k]==0)cnt++;
}
int main()
{
int q;scanf("%d%d%lld",&n,&q,&mod);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
for(int j=1;j<=n;j++)scanf("%lld",&b[j]);
for(int i=1;i<=n;i++)c[i]=((a[i]-b[i])%mod+mod)%mod;
for(int i=n;i>=2;i--)c[i]=((c[i]-c[i-2]-c[i-1])%mod+mod)%mod;
for(int i=1;i<=n;i++)if(c[i]==0)cnt++;
f[1]=1;
for(int i=2;i<=n;i++)
f[i]=(f[i-1]+f[i-2])%mod;
while(q--)
{
char op[5];int l,r;scanf("%s%d%d",op,&l,&r);
// cout<<l<<r<<endl;
ll t=1;
if(op[0]=='B')t=-1;
reduce(l,t*1);reduce(r+1,-f[r-l+2]*t);reduce(r+2,-f[r-l+1]*t);
// cout<<cnt<<endl;
if(cnt==n)printf("YES\n");else printf("NO\n");
}
}
|