有没有大神能够告诉我这道压轴题有什么更快的做法,本以为数据不大深搜加剪枝能过的,只能向网上的acm帅哥求真经了。

最后一个案例没有过去,但是有人用了200ms的做法过了,我实在想不出有什么更快的方法了,感觉这题用动态规划可变参数会特别麻烦应该不是最优做法吧(我猜的)。

先附上我超时的代码:算是记录一下。

​
import java.util.HashSet;
import java.util.Scanner;
public class Main {static int ans = 0;static int[][] arr;static int len1;static int len2;static Scanner scan = new Scanner(System.in);public static void main(String[] args) {way1();}public static void way1(){int n = scan.nextInt(),m = scan.nextInt();arr = new int[n][m];len1 = n;len2 = m;f1 = new boolean[n][m][n][m];HashSet<Integer> s = new HashSet<>();for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){arr[i][j] = scan.nextInt();}}dfs(0,0,s);System.out.println(ans);}static int[][] index = new int[5][2];public static void dfs(int row, int col, HashSet<Integer> s){if(row == arr.length){if(s.size() == 3){if(check(index[2][0],index[2][1],index[3][0],index[3][1])){ans++;}}}else{if(arr[row][col] == 1){if(col == len2 - 1){dfs(row+1,0,s);}else{dfs(row,col+1,s);}}else if(s.size() == 3){arr[row][col] = 5;if (col == len2 - 1) {dfs(row + 1, 0, s);} else {dfs(row, col + 1, s);}arr[row][col] = 0;} else{for(int i = 2;i <= 4;i++) {if (!s.contains(i)) {arr[row][col] = i;s.add(i);index[i][0] = row;index[i][1] = col;if (col == len2 - 1) {dfs(row + 1, 0, s);} else {dfs(row, col + 1, s);}s.remove(i);}}arr[row][col] = 5;if (col == len2 - 1) {dfs(row + 1, 0, s);} else {dfs(row, col + 1, s);}arr[row][col] = 0;}}}static int[][] dir = new int[][]{{-1,0},{1,0},{0,-1},{0,1}};static boolean[][][][] f1;public static boolean check(int row2,int col2,int row3,int col3){if(row3 == index[4][0] && col3 == index[4][1]){return true;}f1[row2][col2][row3][col3] = true;for(int[] d:dir){int r = row2 + d[0];int c = col2 + d[1];boolean flag = row2 - d[0] == row3 && col2 - d[1] == col3;if(R(r,c,row3,col3)){if(check(r,c,row3,col3)){f1[row2][col2][row3][col3] = false;return true;}}if(flag){if(R(r,c,row2,col2)){if(check(r,c,row2,col2)){f1[row2][col2][row3][col3] = false;return true;}}}}f1[row2][col2][row3][col3] = false;return false;}public static boolean R(int row,int col,int row1,int col1){return row >= 0 && row < len1 && col >= 0 && col < len2 && arr[row][col] != 1 &&!(row == row1 && col == col1) && !f1[row][col][row1][col1];}
}​

最后诺诺的问一句:准备国赛是省赛,国赛题目双休好呢还是只做国赛题目好呢,就怕国赛题目连题解都找不到。

十三届蓝桥杯javaB组拉箱子相关推荐

  1. 2022第十三届蓝桥杯JAVAB组省赛总结

    2022年第十三届蓝桥杯JAVAB组省赛 蓝桥杯准备了好久,毕竟学校还是认可,如果能进国赛还能有保研加分. 今年真是可惜了,题太难了,从去年买了Acwing的课,一直在学,没想到到最后是这么个情况. ...

  2. 第十三届蓝桥杯JavaB组国赛H题——修路 (AC)

    目录 1.修路 1.问题描述 2.输入格式 3.输出格式 4.样例输入 5.样例输出 6.数据范围 7.原题链接 2.解题思路 3.Ac_code 1.修路 1.问题描述 这天, 小明在修路. 他需要 ...

  3. 第十三届蓝桥杯JavaB组省赛F题——最大子矩阵 (AC)

    目录 1.最大子矩阵 1.问题描述 2.输入格式 3.输出格式 4.样例输入 5.样例输出 6.数据范围 7.原题链接 2.解题思路 3.Ac_code 1.最大子矩阵 1.问题描述 小明有一个大小为 ...

  4. 第十三届蓝桥杯Java-C组2022年考题个人解析

    目录 前言 第一题-排序字母 第二题-特殊时间 第三题-纸张尺寸 第四题-求和 第五题-矩形拼接(未解决) 第六题-选数异或 第七题-GCD 第八题-青蛙过河(未解决) 第九题-因数平方和 第十题-最 ...

  5. 2018年第九届蓝桥杯 JavaB组省赛 刷题思路及答案

    前言 本人是二本院校大二的计算机系学生,已经报名了下一届的蓝桥杯省赛,整个寒假学习了很多算法知识,我是看<算法很美>这个课程学习算法的,一套学习下来确实受益匪浅,视频在b站上面都有. 此前 ...

  6. 十三届蓝桥杯单片机组省赛真题程序解析

    第一次参加蓝桥杯,线上比赛,记录一下 比赛刚开始了十分钟才做上客观题,做上了之后才发现看一次题警告一次,当时就蚌埠住了,随便做了做就交了,手册也没怎么查(查一下直接给了3次黄牌,就没敢查了)其实老师1 ...

  7. 2018第九届蓝桥杯JavaB组省赛真题及详解

    2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...

  8. 2022.4.9第十三届蓝桥杯web组省赛个人题解

    2022第十三届蓝桥杯第一次开放了web组赛道,博主作为一名前端小白,参加了这次比赛.一共十个题目,目的均是实现特定的网页效果,考点包含三件套.jQuery和vue,这里简单的进行一下个人的题解记录. ...

  9. 第十届蓝桥杯JavaB组省赛真题

    试题 A: 组队 本题总分:5 分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示. ...

最新文章

  1. Spring3 MVC
  2. Nova如何统计节点硬件资源
  3. Kylin的cube模型
  4. 【完全开源】微信客户端.NET版
  5. java.lang.NoSuchMethodError: org.apache.flink.table.api.TableColumn.isGenerated()Z
  6. 如何revert一个merged branch上所有的改动
  7. 通过SectionIndexer实现微信通讯录
  8. 企业职工能实行弹性退休吗?
  9. Nginx+Mongodb 文件存储方案
  10. sqlalchemy入门记录
  11. 对数似然值 matlab,matlab aic准则 怎么计算对数似然值
  12. centos 6 php mysql_Centos 6安装完美搭建mysql、php、apache之旅
  13. 斯坦福大学校工程学院计算机,加州大学洛杉矶分校:受大脑启发的计算机视觉的对象发现和检测...
  14. leetcode-954. 二倍数对数组
  15. JavaSE基础练习题
  16. 前端开发框架、工具汇总清单
  17. 学习Node.js笔记
  18. 小米3刷android 6.0,小米3/4/Note适配Android6.0刷机包链接 注意事项及提取密匙
  19. WebService开发--手机号码归属地查询和天气预报查询
  20. SAP中系统中导出所有采购协议中最后一次收货记录

热门文章

  1. Server push(服务器推送技术)
  2. 计算机文件用英语怎么说,电脑里的文件是什么意思
  3. 华为nova7se怎么看云相册_华为nova7se不好吗?现在买的人非常少,这是为什么
  4. PC业务 VS 数据中心业务冰火两重天,AMD未来增长的决胜要素
  5. 舵机_常用硬件的种类以及选用_day14
  6. NeurIPS 2019 | MelGAN:基于生成对抗网络快速生成音频
  7. 【C++】类和对象的默认成员函数讲解
  8. 删除文件删不了遇到您需要administrators的权限
  9. 【教程】8K影像下如何玩转4K视频?
  10. html5网站抓取,微信上的网站 用HTML5获取地理位置