Applese 填数字
https://ac.nowcoder.com/acm/contest/330/D
C++版本一
std
题解:
状态压缩,轮廓线DP
好多6x6被骗去写暴搜的.jpg。实际上6x6全是?的答案高达1e18.
解法一:By 野鸡验题人
用 dp[x][state] 表示考虑到第 x 行,该行填写的数字的十进制状态为state的方案数。
这样的复杂度有点大,但是由于题目中的要求和为素数存在很强的限制,因此可以先预处理出所有符合条件的一行的state以及每个state可以转移的状态。加上本题宽松的时限,足以通过。
当然第一维是可以滚动掉的(然而并没有什么卵用)。
解法二:标程
用 dp[x][state] 表示考虑到第 x 个格子,它所在的轮廓线上所有数字的十进制状态为state的方案数。其中state的最高位存它前一行的那一格,最低为存它前一列的那一格。
如图所示,这样状态的转移就是一个“带溢出的十进制左移并补上填的数字“。
当然第一维是可以滚动掉的。
#include <bits/stdc++.h>
using namespace std;
char maze[10][10];
bool isprime[21] = {0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0};
long long dp[1000000 + 7][2];int main()
{int n, m;scanf("%d%d", &n, &m);for (int i = 0; i < n; i++)scanf("%s", maze[i]);int top = 1;for (int i = 1; i < m; i++)top *= 10;dp[0][0] = 1;int v = 0;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){for (int k = 0; k < top * 10; k++){if (dp[k][v]){for (int add = 0; add < 10; add++){if ((maze[i][j] == '?' || maze[i][j] == add + '0') && (!i || isprime[add + k / top]) && (!j || isprime[add + k % 10])){dp[k % top * 10 + add][v ^ 1] += dp[k][v];}}dp[k][v] = 0;}}v ^= 1;}}long long ans = 0;for (int i = 0; i < top * 10; i++)ans += dp[i][v];printf("%lld\n", ans);
}
Applese 填数字相关推荐
- 51nod 1371 填数字(三维 dp)
1371 填数字 有n行格子,第i(1<=i<=n)行有i个格子,每行格子是左对齐.现在要在每一个格子填入一个非负整数,最后使得每一行每一列的和都不超过2. 请计算有多少种方案,答案比较大 ...
- 蓝桥杯 填数字游戏 20分。
小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格子,要小明和他交替 ...
- deepinlinux下C语言穷举解决9宫格填数字
偶然看到小学3年级数独题目 9宫格 从4到12,填入9宫格,使横竖和2个对角和都是24 九宫格上各个位置数字都应不同即9个数字都要使用且不能重复使用,角位置的数字存在于3个等式中,边中点数字存 ...
- [原创]9宫格填数字
题目大意: 给你一个九宫格,每个格子只能填1--9这九个数字并且不能重复,题目给你每一行每一列三个数字之和,问一共有多少种可行的方法? 解题思路: 其实就是一道简单的搜索题,用一个k标记选取数的个数, ...
- 【C语言编程练习】5.7填数字游戏求解
之前的东西就不上传了,大致就跟现在的一样 1. 题目要求 计算 ABCD * E DCBA 这个算式中每个字母代表什么数字? 2. 题目分析 如果是我们人去做这道题会怎么办,一定是这样想把,一个四位 ...
- c语言填数字游戏求解过程解读,c语言编程--数字游戏.doc
c语言编程--数字游戏 计算机实习报告 面向过程编程 用C语言求解实际问题 一.问题描述 游戏类第15个任务--猜数字游戏 计算机从0-9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数 ...
- 找规律填数字(c++基础)
题目描述: 小宇正在读小学,今天老师布置了几道数学题目.小宇平时上课经常不专心,这些他可发愁了,怎么办呢?看看你能不能帮帮他. 题目是给你一组有规律序列的前面5个整数,请你给出它后面跟着的5个整数,如 ...
- 填数字游戏ABCD*E=DCBA
目录 1.问题描述 2.问题分析 3.代码 4.总结 1.问题描述 有这样一个算式: ABCD×EDCBA\frac {ABCD \atop ×E} {DCBA} DCBA×EABCD 其中ABC ...
- 【模拟】找规律填数字
描述 小瑜还在读幼儿园呢,现在的小孩子正够可怜的- 这不,老师给孩子们布置了一道连很多大人都不会的数学题目.且看: 给你一组有规律序列的前面5个整数,请你给出它后面跟着的5个整数,如:1,2,3,4, ...
最新文章
- 二叉树的前序、中序、后序遍历非递归实现
- java this self_[原]Javasript 关于self(that) = this用法的理解
- array.prototype.map()如何工作
- 【elastic】ES启动选举主节点 RemoteTransportException CoordinationStateRejected became follower
- SPI子系统分析之二:数据结构【转】
- Axure中将不同文件页面合在同一个页面中
- 最新CleanMyMac支持MacOS 12.x
- 500 内部服务器错误php,如何解决php 500内部服务器错误问题
- 【蓝桥杯2015Java】奇妙的数字、打印大叉
- 2021年危险化学品经营单位主要负责人考试报名及危险化学品经营单位主要负责人新版试题
- MVVM框架的了解与使用
- 你不知道的JavaScript(上中下)全册
- 如何才能做好短线交易?这三点你要知道!
- 让你心动的20句励志文案
- 无密码多重身份验证(MFA)2022年全球行业分析报告
- 联想小新笔记本电脑显示很暗, 教你如何将将其亮度调到最高
- 一种屏蔽win10指定更新补丁的设置方法
- 百万前端之js通过链接生成二维码可以保存下载复制
- linux设备模型:devtmpfs虚拟文件系统分析
- 数据藏在json文件中,如何爬取---以王者荣耀官网为例
热门文章
- vue对象深拷贝_Vue 对数据对象实现深拷贝赋值
- python中def fun(a、b=200)_python 基础 函数
- oracle删除分区空间,Oracle 11g维护分区(三)——Dropping Partitions
- python函数体以冒号起始、并且是缩进格式的_Python基础第三课
- linux运行java程序引用jar包,ubuntu下java 命令行引用jar包的方法
- html表单中的数据提交后清空,怎么实现小程序中表单提交后自动清空内容
- 【机器学习算法专题(蓄力计划)】一、机器学习简史和常用算法的梳理
- 工程制图 (零件图)
- 三十八、Scrapy 下载中间件Middleware
- 百万奖金池!2022 全球人工智能技术创新大赛—算法挑战赛火热开启