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;
}