A牛客推荐系统开发之静态特征获取
给每一个字符串一个标号
每次将str2插入str1中
int n,cnt; string str1,str2; map<string,int>mp; set<int>s[maxn]; void solve() { sd(n); rep(i,1,n) { cin>>str1>>str2; if(!mp[str1])mp[str1]=++cnt; if(!mp[str2])mp[str2]=++cnt; int id1=mp[str1],id2=mp[str2]; if(s[id1].find(id2)!=s[id1].end())puts("NO"); else puts("YES"); s[id1].insert(id2); } }
B牛客推荐系统开发之女装药水
一个4*4方格
想要将方格里全变为0
每次可以选择一个位置将其与旁边四个取反
那我直接暴力啦
bool is[5][16]; int a[5][5],tmp[5][5]; void solve() { rep(i,1,4)rep(j,1,4)scanf("%1d",&a[i][j]); rep(i,0,15)rep(j,0,15)rep(k,0,15)rep(l,0,15) { rep(x,1,4)rep(y,1,4)tmp[x][y]=a[x][y]; rep(x,1,4)if(i&(1<<(x-1))) { tmp[1][x]^=1; tmp[1][x-1]^=1; tmp[1][x+1]^=1; tmp[2][x]^=1; } rep(x,1,4)if(j&(1<<(x-1))) { tmp[2][x]^=1; tmp[2][x-1]^=1; tmp[2][x+1]^=1; tmp[1][x]^=1; tmp[3][x]^=1; } rep(x,1,4)if(k&(1<<(x-1))) { tmp[3][x]^=1; tmp[3][x-1]^=1; tmp[3][x+1]^=1; tmp[2][x]^=1; tmp[4][x]^=1; } rep(x,1,4)if(l&(1<<(x-1))) { tmp[4][x]^=1; tmp[4][x-1]^=1; tmp[4][x+1]^=1; tmp[3][x]^=1; } bool ju=0; rep(x,1,4)rep(y,1,4)if(tmp[x][y])ju=1; if(!ju) { puts("YES"); return; } } puts("NO"); }
C牛客推荐系统开发之选飞行棋子
分成两部分
前两个一部分 后两个一部分
int a[5][maxn],n,cnt[5],sum; int b[maxn*maxn]; ll ans; void solve() { sd(n); rep(i,1,4)rep(j,1,n)scanf("%1d",&a[i][j]),cnt[i]+=a[i][j]; rep(i,1,n)if(a[1][i]&&a[2][i])sum++; //12行去掉i,j两个位置能取多少 rep(i,1,n)rep(j,i+1,n) { int cnt1=cnt[1]-a[1][i]-a[1][j],cnt2=cnt[2]-a[2][i]-a[2][j]; int cnt3=sum-(a[1][i]&&a[2][i])-(a[1][j]&&a[2][j]); b[i*n+j]=cnt1*cnt2-cnt3; } rep(i,1,n)rep(j,i+1,n) { if(i==j)continue; if(a[3][i]&&a[4][j])ans+=b[i*n+j]; if(a[4][i]&&a[3][j])ans+=b[i*n+j]; } plld(ans); }