CF#637 D. Nastya and Scoreboard DP
D. Nastya and Scoreboard
题意
一块电子屏幕上有n个数字。

每个数字是通过这样7个线段显示的,现在你不小心打坏了k个线段,给出打坏之后的n个数字的显示方式,问之前的屏幕表示的最大数字是多少?
思路
看数据范围感觉就是DP。
我们把n个数字先倒过来,要尽可能的让后面的数字大。
dp[i][j][k]表示前i个数字打坏了j个线段最后一个数字为k是否可行。
对于第i个数字,枚举可以变成的数字。
回溯一下即可。
代码
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
typedef long long ll;
const int N=2e5+10;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
char str[N][10];
char num[10][10]= {"1110111", "0010010", "1011101", "1011011", "0111010", "1101011", "1101111", "1010010", "1111111", "1111011"};
int dp[2010][2010][10];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=n; i>=1; i--)//先把n个数字倒过来
scanf("%s",str[i]);
for(int i=0; i<10; i++)
dp[0][0][i]=1;
for(int i=1; i<=n; i++)//前i个数字
{
for(int j=0; j<=k; j++)//打坏了j个线段
{
for(int l=0; l<=9; l++)//第i个数字为l是否可行
{
int flag=0,sum=0;//分别表示是否可以变成l,以及需要的线段数量
for(int m=0; m<7; m++)
{
if(num[l][m]<str[i][m])
{
flag=1;
break;
}
sum+=num[l][m]-str[i][m];
}
if(flag||j<sum) continue;//不能变成,或者需要的线段数量比打坏的多
for(int m=0; m<10; m++)//判断当前是否可行
{
if(dp[i-1][j-sum][m])
{
dp[i][j][l]=1;
break;
}
}
}
}
}
int sign=0;
for(int i=0;i<=9;i++)
{
if(dp[n][k][i])
{
sign=1;
break;
}
}
if(sign)
{
for(int i=n;i;i--)
{
for(int j=9;j>=0;j--)//每一位选择最大的一个
{
if(dp[i][k][j])
{
printf("%d",j);
for(int l=0;l<7;l++)
k-=num[j][l]-str[i][l];
break;
}
}
}
printf("\n");
}
else printf("-1\n");
return 0;
}
CF#637 D. Nastya and Scoreboard DP的更多相关文章
- Codeforces 1340B Nastya and Scoreboard(dp,贪心)
题目链接OvO 题目大意 给你\(n\)串数字,\(1\)代表该位置是亮的,\(0\)代表是灭的.你必须修改\(k\)个数字,使某些\(0\)变为\(1\).注意,只能把原来的\(0\)改成\(1 ...
- CF#637 C. Nastya and Strange Generator
C. Nastya and Strange Generator 题意 有一个随机全排列生成器,给出你一个全排列,让判断是否可以通过这个生成器产生. 生成器工作方式: 第i步为数字i寻找位置pos. 首 ...
- CF1340B Nastya and Scoreboard(暴搜剪枝/dp)
Question 一个n个数码位的分数板,每一个数码位都是一个七段数码管,现在给出每个数码位的显示情况,问再点亮k段数码管的话能显示的最大的数是多少,如果不能构成一串数字,就输出-1 Solution ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- CF 372B Counting Rectangles is Fun [dp+数据维护]
题意,给出一个n行m列的矩阵 里面元素是0或者1 给出q个询问 a,b,c,d 求(a,b)到(c,d)有多少个由0组成的矩形 我们定义 watermark/2/text/aHR0cDovL2Jsb2 ...
- CF EDU 1101D GCD Counting 树形DP + 质因子分解
CF EDU 1101D GCD Counting 题意 有一颗树,每个节点有一个值,问树上最长链的长度,要求链上的每个节点的GCD值大于1. 思路 由于每个数的质因子很少,题目的数据200000&l ...
- CF 407B Long Path[观察性质 DP]
B. Long Path time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- cf.301.D. Bad Luck Island(dp + probabilities)
D. Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- CF 337D Book of Evil 树形DP 好题
Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This area contains n se ...
随机推荐
- gdb 调试中No symbol “***” in current context解决方法
主要是因为GCC/G++版本和GDB不匹配造成的,网上也有说是因为O2优化问题,具体啥原因需要自己尝试一下. 解决: 放狗搜索,解决办法是在编译是加-gdwarf-3即可,出现这样的原因是gcc,gd ...
- PHP函数:array_rand
array_rand() - 从数组中随机取出一个或多个单元. 说明: array_rand ( array $array [, int $num = 1 ] ) : mixed 参数: array ...
- python-用户输入和while循环
函数input() 比较大小要同类型: age=iput() 21 age=int(age) age>=10 true prompt = "If you tell us who you ...
- 权威的国际敏捷认证Certified Scrum Master (CSM)
权威的国际敏捷认证Certified Scrum Master (CSM) A. 认证前 在学习Certified Scrum Master (CSM)之前,你需要了解: 什么是CSM CSM认证与其 ...
- Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.-print: find命令将匹配的文件输出到标准输出.-exec: find命令 ...
- 用asp.net core结合fastdfs打造分布式文件存储系统
最近被安排开发文件存储微服务,要求是能够通过配置来无缝切换我们公司内部研发的文件存储系统,FastDFS,MongDb GridFS,阿里云OSS,腾讯云OSS等.根据任务紧急度暂时先完成了通过配置来 ...
- Jenkins(2)- 更改插件源为国内源
如果想从头学起Jenkins的话,可以看看这一系列的文章哦 https://www.cnblogs.com/poloyy/category/1645399.html jenkins插件清华大学镜像地址 ...
- php环境兼容性问题---压缩格式及其配置简介
php环境兼容性问题-- 内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式. 请联系网站的所有者以告知此问题. 以前也遇到过同样的问题,记得是PHP代码ob_start(' ...
- 2019-2020-1 20199303《Linux内核原理与分析》第六周作业
系统调用的三层机制 首先是为系统增加新的命令 运行脚本自动生成文件系统 其中有一个显示时间的功能 编辑test.c文件,增加一个hello函数用来显示学号,再次使用make roofts自动编译,调用 ...
- [Python] bytes 转换成 str
b = b"example" # bytes object s = "example" # str object sb = bytes(s, encoding ...