H. Binary Median (贪心)
思路:因为要找到去除个字符串后第小的字符串。
考虑在不去除任何字符串的时候第小的字符串转为十进制答案就是
因为是去除个字符串,所以只能向右移动。
这里只需要对个字符串转换为十进制从小到大进行排序,然后如果有就右移动一位。这里从小到大排序是防止移动到删掉的字符串位置。这里移动到6就停了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
#define mst(a) memset(a,0,sizeof a)
int main(){
int t;
scanf("%d",&t);
while(t--){
ll n,m,k;
scanf("%lld%lld",&n,&m);
k=(1LL<<m)-n-1,k/=2;
ll a[105]={},ans[105]={};
char b[65];
for(int i=0;i<n;i++){
scanf("%s",b);
for(int j=0;j<m;j++)
a[i]=a[i]*2+b[j]-'0';
}
sort(a,a+n);
for(int i=0;i<n;i++)
if(a[i]<=k) k++;
for(int i=0;i<m;i++)
ans[i]=k%2,k/=2;
for(int i=m-1;i>=0;i--) printf("%d",ans[i]);
puts("");
}
return 0;
}