Nastya and Scoreboard

Posted 1024-xzx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nastya and Scoreboard相关的知识,希望对你有一定的参考价值。

分析:

(dfs) 剪枝+贪心。
如果用记忆化搜索,应该可以保证时间复杂度更优。
传送门

代码:

#include <bits/stdc++.h>
using namespace std;
const int N=2020;
int num[10]={119,18,93,91,58,107,111,82,127,123};
int p[N],ans[N],n;
bool vis[N][N],f;
void dfs(int v,int t)
{
    if(vis[v][t])//如果还会遇到这种情况,说明之前这种情况肯定不可行,剪枝
        return;
    vis[v][t]=1;
    if(v==n+1)
    {
        if(t==0)
            f=1;
        return;
    }
    for(int i=9;i>=0;i--)
    {
        int x=__builtin_popcount(num[i]^p[v]);
        if((num[i]|p[v])==num[i]&&x<=t)
        {
            ans[v]=i;
            dfs(v+1,t-x);
        }
        if(f) return;
    }
}
int main()
{
    int k;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
        char s[10]={};
        scanf("%s",s);
        int a=0;
        for(int j=0;j<7;j++)
            a=(a<<1)+(s[j]-‘0‘);
        p[i]=a;
    }
    f=0;
    dfs(1,k);
    if(f)
    {
        for(int i=1;i<=n;i++)
            printf("%d",ans[i]);
        printf("
");
    }
    else
        printf("-1
");
    return 0;
}
/*
https://www.cnblogs.com/charles1999/p/12766333.html
*/

以上是关于Nastya and Scoreboard的主要内容,如果未能解决你的问题,请参考以下文章

CF1340B Nastya and Scoreboard

CF1340B Nastya and Scoreboard (dp 确定可行方案)

CF1340D Nastya and Time Machine

CF1340D Nastya and Time Machine

CodeForces 1340D Nastya and Time Machine

CF1340F Nastya and CBS