随笔分类 -  算法

日常练习题目,以及算法学习
摘要:题目 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 输入格式 只有一行,包含两个数N,K ( 1 ⇐N ⇐9, 0 ⇐ K ⇐ N * N) 输出格式 所得方案数 输入#1 3 2 输 阅读全文
posted @ 2022-03-26 09:34 Monstro 阅读(67) 评论(0) 推荐(0)
摘要:题目 题目链接: P2602 [ZJOI2010]数字计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 给定两个正整数 aa 和 bb,求在 [a,b][a,b] 中的所有整数中,每个数码(digit)各出现了多少次。 输入格式 仅包含一行两个整数 a,ba,b,含义 阅读全文
posted @ 2021-08-05 10:12 Monstro 阅读(193) 评论(0) 推荐(0)
摘要:什么是数位DP 数位 DP 问题往往都是这样的题型,给定一个闭区间 [L,R],让你求这个区间中满足 某种条件 的数的总数。 (来自 OI-WIKI ) 按照一般的方法,我们会遍历区间[L,R],对每个数字进行判断,是否符合题目要求. 但是这类题目的区间范围往往都比较大,单纯地遍历每一个数字,会超时 阅读全文
posted @ 2021-07-31 18:37 Monstro 阅读(237) 评论(0) 推荐(0)
摘要:题目链接: P1441 砝码称重 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目大意: 给定n个砝码,不同重量,可以重复。去掉其中m个后,能够称重多少种类的重量。 解析: 整体 我们枚举每一种砝码的排列方法,根据题目条件:去掉m个后,这个标准,过滤出能够使用的排列方法。 根据 阅读全文
posted @ 2021-06-11 15:24 Monstro 阅读(245) 评论(0) 推荐(0)
摘要:使用场景 如果在动态规划分析状态的过程中,有非长多的状态,可以考虑使用状态压缩动态规划。 一般在棋盘类动态规划中比较常见。 为什么需要状态压缩 在写动态规划的时候,唯一确定状态需要几个维度,就会写几维的dp数组。 举例: 对于两列的方块区域,如果需要表示每行的每个方格是否放了物品,正常情况下是这么写 阅读全文
posted @ 2021-06-04 10:57 Monstro 阅读(161) 评论(0) 推荐(0)
摘要:题目链接: 查找最近的两个点 题目大意: 给定N个点的坐标,找出距离最短的两个点的序号.如果最短距离相同,输出序号最小的一组. 题目要求输出三种不同计算方式下的最短距离序号: 欧几里得距离:Math.sqrt(|x2-x1|^2+|y2-y1|^2) 曼哈顿距离:|x2-x1|+|y2-y1| 棋盘 阅读全文
posted @ 2021-04-30 20:51 Monstro 阅读(749) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P4180或者LOJ:https://loj.ac/p/10133LOJ 上有所有的测试用例,可以下载下来看看。在LOJ上用例都过了,但是提交时候会wrong answer....我也不知道为什么。 这个也算是模板题。最大生 阅读全文
posted @ 2021-04-30 17:51 Monstro 阅读(87) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P1967是一道最小生成树+LCA的模板组合题目.代码比较长....计算最多能运送多少重量的货物,首先会想到计算最大生成树.这样就能够保证联通所有路的情况下,道路载重最大.因为最终计算的是某两点之间的最大载重量,所以我们需要 阅读全文
posted @ 2021-04-30 17:44 Monstro 阅读(250) 评论(0) 推荐(0)
摘要:仍旧是一道模拟退火。 AC代码:(如果提交不成功,就多试几次吧~) import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Random; import java.util.StringTok 阅读全文
posted @ 2021-04-30 17:42 Monstro 阅读(70) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/UVA10228 题目大意: 题意翻译 给定一个N边形所有顶点坐标x,y,求其费马点到所有顶点距离和 费马点是指到多边形所有顶点距离和最小的点 输入 第一行为T, T组数据 第二行正整数N,其后N行,每行两个整数x,y。 输 阅读全文
posted @ 2021-04-30 17:40 Monstro 阅读(99) 评论(0) 推荐(0)
摘要:我觉得比tarjan要简单。在进行连续询问输出地时候,不要使用System.out.println().先把结果记录在StringBuilder里面。(我就是因为这样子,所以超时了,还奇怪地找了好长时间原因。) 因为网上有很详细的讲解,这里就是记录一下自己的练习。 import java.io.Bu 阅读全文
posted @ 2021-04-30 17:38 Monstro 阅读(144) 评论(0) 推荐(0)
摘要:需要两次DFS+一次BFS需要注意:1.BFS记得Visit数组,对于访问过的节点,不要再加入到队列中,否则会内存溢出2.DFS注意方向.以from-->to的方向为基准,标记好前后左右,再进行dfs. 以下是AC代码: import java.io.BufferedReader; import j 阅读全文
posted @ 2021-04-30 17:36 Monstro 阅读(116) 评论(0) 推荐(0)
摘要:本身以为是一个简单的拓扑排序,没想到做了挺长时间。题目要求没有明确,所以输出优先级上,需要注意一下。(不喜欢这道题目,不想去做这道题目)对于每一次输入后,需要进行判断。输出优先级顺序为:1.环。如果有环,直接输出有矛盾。2.不能确定顺序。环的优先级要高于顺序。3.输出正确结果。 以下是AC的java 阅读全文
posted @ 2021-04-30 17:34 Monstro 阅读(129) 评论(0) 推荐(0)
摘要:####举例 计算LIS.给定序列:2 5 3 7 3 1 9 ####步骤 #####根据给定序列个数,初始化树状数组. 给定的元素需要在二叉树的叶子节点上放置.所以树状数组的叶子节点必须不少于元素个数. 因为是二叉树,所以树状数组的大小必须是2k.所以最终初始化大小的时候,只要选择第一个比 序列 阅读全文
posted @ 2021-04-30 17:32 Monstro 阅读(870) 评论(0) 推荐(0)
摘要:Tarjan计算最大环(或者最小环) 题目链接:Cycles of Lanes 最大环模板题 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayDeque; import ja 阅读全文
posted @ 2021-04-30 17:27 Monstro 阅读(316) 评论(0) 推荐(0)
摘要:我讨厌🐂...... 受欢迎的牛 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.StringTokenizer; publ 阅读全文
posted @ 2021-04-30 17:24 Monstro 阅读(71) 评论(0) 推荐(0)
摘要:题目:[模板] 割点 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main implements Runnable{ static int[] df 阅读全文
posted @ 2021-04-30 17:21 Monstro 阅读(128) 评论(0) 推荐(0)
摘要:这个题目和之前做过的Corn Fields,可以说一模一样.....关于状态压缩的动态规划。 Corn Fields说的时不能上下左右相邻,这个变成不能上下左右2个跨度的相邻。 所以基本思路相同: 1.压缩行的状态,将每行的可以选择的情况视为二进制,进而转为十进制去执行判断 2.记录每行的状态,进行 阅读全文
posted @ 2021-04-30 17:20 Monstro 阅读(222) 评论(0) 推荐(0)
摘要:参考文章:https://blog.csdn.net/mengxiang000000/article/details/51075506 题目链接:Corn Fields 对于给定的土地,令A为直到当前位置,牛可以放置的情况.A[i][j]为第i行第j状态. A[i][j] += A[i-1][k]. 阅读全文
posted @ 2021-04-30 17:18 Monstro 阅读(96) 评论(0) 推荐(0)
摘要:题目链接:SQUARE 这种类型题目算是模板题目吧...poj,洛谷,leetcode都有. 可以使用压缩矩阵和动态规划两种方式求解.不过动态规划计算正方形还行,如果计算矩形的话,可能还要再给dp数组增加一维. ####一 动态规划 对于动态规划,只说一下计算正方形的情况.想一下这张图片: 对于右下 阅读全文
posted @ 2021-04-30 17:16 Monstro 阅读(508) 评论(0) 推荐(0)