[topcoder]AvoidRoads
二维动态规划。和某一道leetcode的题目差不多。就是多了blocks的数组或集合。
本次解题的心得有:1.根据题意使用集合表示阻碍;2.使用字符串的形式表示整数的pair,简洁明了;3.p1到p2的阻碍其实是双向的;4.可以不用首行首列的全0;5.mx[i][j]和mx[i-1][j]和mx[i-1][j]可以分别加的。
import java.util.*;public class AvoidRoads
{public long numWays(int width, int height, String[] bad) {HashMap<String,HashSet<String>> blocks = new HashMap<String,HashSet<String>>();for (String badStr : bad) {String[] bl = badStr.split(" ");int x1 = Integer.parseInt(bl[0]);int y1 = Integer.parseInt(bl[1]);int x2 = Integer.parseInt(bl[2]);int y2 = Integer.parseInt(bl[3]);String p1 = "" + x1+ ":" + y1;String p2 = "" + x2 + ":" + y2;// p1 -> p2 && p2-> p1 are blockedif (!blocks.containsKey(p1)) {HashSet<String> set = new HashSet<String>();blocks.put(p1, set);}if (!blocks.containsKey(p2)) {HashSet<String> set = new HashSet<String>();blocks.put(p2, set);}blocks.get(p1).add(p2);blocks.get(p2).add(p1);}long mx[][] = new long[width+1][height+1];for (int i = 0; i < width+1; i++) {for (int j = 0; j < height+1; j++) {if (i == 0 && j == 0) {mx[i][j] = 1;}else {String s0 = ""+i+":"+j;String s1 = ""+(i-1)+":"+j;String s2 = ""+i+":"+(j-1);if (i > 0 && !(blocks.containsKey(s1) && blocks.get(s1).contains(s0))) {mx[i][j] += mx[i-1][j];}if (j > 0 && !(blocks.containsKey(s2) && blocks.get(s2).contains(s0))) {mx[i][j] += mx[i][j-1];}}}}return mx[width][height];}
}
转载于:https://www.cnblogs.com/lautsie/p/3258732.html
[topcoder]AvoidRoads相关推荐
- *[topcoder]TheTree
http://community.topcoder.com/stat?c=problem_statement&pm=12746&rd=15703 这道题有意思.给了树的根和每层节点的个 ...
- TopCoder 入门教程 -- sqybi完善版
本文根据经典的TC教程完善和改编. TopCoder:http://www.topcoder.com/ 基本规则 TopCoder的比赛类型很多,最常见的是周赛SRM(Single Round Mat ...
- TOPCODER SAM 686 div1 300
// TOPCODER SAM 686 div1 300 Problem Statement 带有小中括号的括号序列,问可以去掉多少子串,使得剩下的非空串是合法的. Constraints 字符串长度 ...
- Topcoder SRM 697题解
Topcoder SRM 697题解 D1L1 分子分母同乘a[i]: \(a_{i}^{b_{i}+1} mod \prod a_i = 0\) 然后我们考虑质因子p,设质因子p在a[i]中出现cn ...
- Topcoder Srm 671 Div2 1000 BearDestroysDiv2
\(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...
- TopCoder入门教程
from http://hi.baidu.com/juart/blog/item/e0ef838b705eb9d4fd1f1039.html 基本规则 TopCoder的比赛类型很多,最常见的是周赛S ...
- Ubuntu下Topcoder配置
先去下载一个http://community.topcoder.com/tc?module=Static&d1=applet&d2=partial-support 并且确保jdk可以使 ...
- topcoder srm 714 div1
problem1 link 倒着想.每次添加一个右括号再添加一个左括号,直到还原.那么每次的右括号的选择范围为当前左括号后面的右括号减去后面已经使用的右括号. problem2 link 令$h(x) ...
- Virtual Judge —— Nim TopCoder - 11469
Problem Statement 问题陈述 Alice and Bob are going to play a famous game called Nim. 爱丽丝和鲍勃将要玩一个著名的游戏叫尼姆 ...
- *[topcoder]JumpFurther
http://community.topcoder.com/stat?c=problem_statement&pm=12300&rd=15699 题意:有一个无限长的阶梯,i从1到N, ...
最新文章
- 从web.xml谈谈SpringMVC集成spring的初始化流程及SpringBoot集成SpringMVC
- GIS实用小技巧(三)-CASS怎么添加图例?
- 接口返回的类型是html页面_1.10 PhalApi 2.x 接口文档
- raid-6磁盘阵列损坏导致数据丢失的恢复过程(图文教程)
- 微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...
- 2021年中国高精地图产业研究分析
- python项目依赖库的导出和安装
- 11G新特性 -- ASM Fast Mirror Resync
- 【Git/Github学习笔记】ubuntu系统下使用git命令与windows下的差别
- Python书籍推荐:《Python编程之美:最佳实践指南》
- 什么是Java分布式?
- Linux 命令之 gzip -- 压缩和解压文件
- TB6612与电机编码器
- 深层和浅层卷积_浅层vs深层javascript
- 阿里云服务器怎么购买才更划算(新手教程)
- 如何无损把flac格式转换成mp3?将flac转mp3的技巧
- c语言求两个字符串的交集,用c语言求两个集合的交集,并集,差集
- vulnhub:THOTH TECH:1靶机
- word中四号字体对应于14pt,其他字号如下
- 单片机数码管显示热敏电阻实测温度,