码迷,mamicode.com
首页 > 其他好文 > 详细

Nastya and Scoreboard

时间:2020-04-27 15:03:35      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:void   %s   传送门   contest   情况   复杂   pre   amp   charles   

分析:

\(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("\n");
    }
    else
        printf("-1\n");
    return 0;
}
/*
https://www.cnblogs.com/charles1999/p/12766333.html
*/

Nastya and Scoreboard

标签:void   %s   传送门   contest   情况   复杂   pre   amp   charles   

原文地址:https://www.cnblogs.com/1024-xzx/p/12786697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!