当前位置: 首页 > news >正文

保定网站seo个人网站作品欣赏

保定网站seo,个人网站作品欣赏,爱南宁app下载官网中小学,啦啦啦中文免费视频高清观看题目 题目链接#xff1a; https://www.luogu.com.cn/problem/P4124 分析 给定两个长度为11位的数字#xff0c;代表两个区间 [L,R] 需要编写程序来计算出#xff0c;这两个区间内满足要求的数字个数。这样的题一般来说就是数位dp题。首先我们可以根据容斥原理 [0,R]中满…题目 题目链接 https://www.luogu.com.cn/problem/P4124 分析 给定两个长度为11位的数字代表两个区间 [L,R] 需要编写程序来计算出这两个区间内满足要求的数字个数。这样的题一般来说就是数位dp题。首先我们可以根据容斥原理 [0,R]中满足要求的个数 - [0,L-1]中满足要求的个数 来计算出 [L,R] 这个区间中满足要求数字的数量。 但是由于给定的数字范围很大超过了int与long类型的范围只能用字符串存储那么字符串的加减计算就变得很麻烦了。那么可以这样计算 [0,R]-[0,L] 最后再特判一下 L 串是否符合要求符合要求的话最后的答案再1。 根据题目要求我们需要使用两个变量来记录前两个位置上的数用来判断是否符合条件还需要一个变量来记录当前数字是否满足要求还有使用一个变量来记录当前数字是否出现过4与8。 然后就是套用数位dp的模板了。 code package dp.数位dp;import java.util.*;public class Main {static final int N 12;static final int M (1 11);static long[][][][][] memo new long[N][N][N][2][M];public static void main(String[] args) {Scanner in new Scanner(System.in);// 由于数字位数太大那么只能用字符串读取再转成字符数组char[] l in.next().toCharArray();char[] r in.next().toCharArray();reset(r.length);long ans dfs(r, 0, 10, 10, false, true, 0);reset(l.length);ans - dfs(l, 0, 10, 10, false, true, 0);if (check(l)) {ans;}System.out.println(ans);}/** chs 从高到底存储着数字的每一个数位* i 当前数位下标* pp 表示当前数位前一位的前一位数字* p 表示当前数位前一位的数字* flag 表示当前数字中是否出现过3个相邻且相等的数字* isLimit 表示构造当前位数字是否受限制* status 用二进制位来判断当前数字中是否同时出现过4与8* */public static long dfs(char[] chs, int i, int pp, int p, boolean flag, boolean isLimit, int status) {if (i chs.length) {return flag ? 1 : 0;}if (!isLimit memo[i][pp][p][flag ? 1 : 0][status] ! -1) {return memo[i][pp][p][flag ? 1 : 0][status];}long ans 0;int up isLimit ? chs[i] - 0 : 9; // 获取构造当前数字的上限// 无前导零for (int d (i 0) ? 1 : 0; d up; d) {// 不能同时出现4或8if ((d 4 ((status 8) 1) ! 0) || (d 8 ((status 4) 1) ! 0)) {continue;}ans dfs(chs, i 1, p, d, flag || (pp p d p), isLimit d up, status | (1 d));}if (!isLimit) {memo[i][pp][p][flag ? 1 : 0][status] ans;}return ans;}// 判断一个数字是否符合条件public static boolean check(char[] chs) {if(chs[0] 0) { return false; }char pp x, p x;boolean flagfalse,cnt4 false, cnt8 false;for (char ch : chs) {if (ch 4) {cnt4 true;} else if (ch 8) {cnt8 true;}if (cnt4 cnt8) {return false;}if (pp p p ch) {flagtrue;}pp p;p ch;}return !(cnt4 cnt8) flag;}public static void reset(int n) {for (int i 0; i n; i) {for (int j 0; j memo[i].length; j) {for (int k 0; k memo[i][j].length; k) {for (int u 0; u memo[i][j][k].length; u) {Arrays.fill(memo[i][j][k][u], -1);}}}}} } 提交结果
http://www.dnsts.com.cn/news/215820.html

相关文章:

  • 购物网站后台设计工商网站如何做企业增资
  • 建筑网站图纸福建莆田网站开发
  • 家具网站建设需求温岭自适应网站建设
  • 网站设计制作平台哪个好邢台123贴吧最新
  • 服务网站排名咨询seo批量建站
  • 做ic贸易去什么网站好同一个阿里云可以做两个网站吗
  • 安徽建设工程信息网路灯项目江北seo
  • 高质量外链网站企业网站建设费怎么账务处理
  • 留言网站模板网站seo怎么做
  • 手赚网站哪里可以做wordpress首页打开变慢
  • 下载 asp 网站源码做网站需要编程基础
  • 企业网站的建立如何带来询盘wordpress 改成 中文字体
  • 科协网站建设的意见哈尔滨网站建设自助建站
  • 建设企业网站的企业关于网站建设论文
  • 网上书店网站开发代码网站建设销售在哪找客户
  • 哪个网站下载软件最安全在线网站源码提取
  • 研学网站平台建设方案郑州网站建设优点
  • 做跨境电商如何自建站简单的个人网站html
  • 中国网站备案取消天津多媒体设计公司
  • 红色礼品网站模板网站建设中 html5 模板
  • html5网站带后台六安新闻 最新消息
  • 小网站怎么搜关键词网站建设佰首选金手指十二
  • 做门户网站源码申请渠道门户网站是什么意思
  • 网站构成的作用是什么拍照搜索百度识图
  • 网站风格趋势建网站培训学校
  • 网站怎样和首页做链接地址山西手机版建站系统开发
  • 山西大同网站建设wordpress 企业展示
  • 网站页面打不开商城微网站建设方案
  • 重庆教育建设有限公司网站小米路由器3做网站
  • 免费linux网站空间wordpress文章网格