Distinctive Character

 Distinctive Character

 Sol

bfs寻找最优解。

考虑一开始把他给的状态加进队列里,这些状态的答案都是0。

每次枚举不同的一位拓展,同时要保证这个新状态没有出现过。

效率O(2^k)

话说我随机化85呢

复制代码
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define maxn 1000005
using namespace std;
int n,k,ans,s[maxn],num[maxn],f[maxn],a[maxn];
int d[maxn];
queue<int>q;
int get(int x){
    int sum=0;
    for(int i=0;i<20;i++)if(x&(1<<i))sum++;
    return k-sum;
}
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=k;j++){
            char ch;scanf(" %c",&ch);
            if(ch=='1')a[i]|=(1<<(j-1));
        }
    }
    for(int i=0;i<(1<<k);i++)num[i]=get(i);
    for(int i=1;i<=n;i++)d[a[i]]=1,q.push(a[i]);
    int Max;
    while(!q.empty()){
        int x=q.front();q.pop();
        Max=x;
        for(int i=0;i<k;i++){
            if(!d[x^(1<<i)])d[x^(1<<i)]=d[x]+1,q.push(x^(1<<i));
        }
    }
    for(int i=0;i<k;i++)if(Max&(1<<i))putchar('1');else putchar('0');
    return 0;
}
复制代码

 

posted @   liankewei123456  阅读(164)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示