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 (dp 确定可行方案)
CF1340D Nastya and Time Machine
CF1340D Nastya and Time Machine