摘要:
POJ3258 题意: 有一堆牛要过河,河的长度是 L,河中间有N个石头,牛只能踩着石头过河,问去掉M个石头后(去掉这M个石头的方式是随机的),牛能走的石头间距最小值中,最大的那一个是多少,输出距离。 开始和最后的两块石头不能搬走。 解法: 最大化石头间距的最小值 二分距离,从左到右遍历所有的石头( 阅读全文
摘要:
二分+二分图匹配+BFS 题意: 墙壁“X”,空区域(都是人)“.”, 门“D”。 人向门移动通过时视为逃脱,门每秒能出去一个人,人可以上下左右移动,墙阻止移动。 求最优移动方案下,最后一个人逃脱的最短时间。如果有人无法安全逃脱(比如被墙围困住),则输出“impossible”。 解法1: 以每个门 阅读全文
摘要:
DAG状压dp的一种 题目: $m$个城市,$n$张车票,第i张车票上的时间是$t_i$, 求从$a$到$b$的最短时间,如果无法到达则输出“impossible” 解法: 考虑状态:“现在在城市$v$,此时还剩下的车票的集合为$S$”这样的状态。从这个状态出发,使用一张车票移动到$i \in S$ 阅读全文
摘要:
矩阵相乘和快速幂基本模板 1 typedef vector<int> vec; 2 typedef vector<vec> mat; 3 4 //计算A*B 5 mat mul(mat &A, mat &B) { 6 mat C(A.size(), vec(B[0].size())); 7 for 阅读全文
摘要:
POJ3276 题意: N 头牛排成一列,每头牛或向前或向后。每次可以反转连续的 K 头牛,求出让所有的牛都能面向前方所需要的最少操作次数 M 和对应的最小的 K。 解法: 首先加入顺序的枚举每个以向后的牛开始的区间,让其反转,之后检查可行性,复杂度为 $O(n^3)$,即顺序遍历、反转、寻找第一个 阅读全文
摘要:
反复推进区间的开头与末尾,这样的方法叫做尺取法,求给定长度内的最短区间可以满足某些性质。 POJ3061 题意: 给定长度为 n 的数列整数,以及整数 S ,求出总和不小于 S 的连续子序列的长度的最小值.如果解不存在则输出 0 。 解: 不断的推进首位,每推进一次首位,就往后推近末尾直到区间序列的 阅读全文
摘要:
二分答案 基本模板 在一个有序数组中二分查找一个值 k 例题分析 POJ1064 假定一个解并判断是否可行 题目:有 N 条绳子,长度分别为L。如果从他们中切割出 K 条长度相同的绳子的话,这 K 条绳子每条最长能有多长。答案保留到小数点后两位 解:C(x) = 可以得到 k 条长度为 x 的绳子 阅读全文
摘要:
板子: POJ1930 题意:给你一个无限循环小数,给到小数点后 9 位,要求这个数的分数形式。 解法: 要想解决这道题,首先应该了解如何将循环小数化为分数: 一,纯循环小数化分数:循环节的数字除以循环节的位数个 9 组成的整数。例如: $0.3333……=3/9=1/3$;$0.285714285 阅读全文
摘要:
树的直径给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称为树的直径,连接这两点的路径被称为树的最长链。后者通常也可称为直径,即直径是一个数值概念,也可代指一条路径树的直径通常有两种求法,时间复杂度均为 O(n) 。我们假设树以 N 阅读全文