USACO1.3.2barn1
题目有m个牛棚,有n个牛,住在不同的牛棚(不住满),要用k个木板封住所有有牛的牛棚,问木板的最小长度 分析贪心:显然,当所有木板均被用上时,长度最短(数量最多)(证明….)。 正向思维,初始状态有c块木板,每块木板只盖住一个牛棚。由c块倒推至m块木板,每次寻找这样的两个牛棚:其间
HDU1584 蜘蛛牌
原题 题意蜘蛛纸牌,同一花色的10张牌,随机地排列在一行上展开,整理成从小到大有序的一列,求最小移动距离。 分析首先,对于所有的数反映射,记录其位置,然后,DFS出所有可能性(用全排列的思想),对于每一次移动,进行决策,使其移动到只比他大1的纸牌上(这个纸牌很可能已经移动,故追踪
HDU1241 Oil Deposits
原题 题意油田为@,普通地为*,若一个@周围8个方位内还有@则为同一片油田,问总共多少个油田 分析DFS,对整个矩阵进行爆搜,在整个矩阵中,遇到一个@,将当前@变为,油田数num++,然后由此开始dfs周围,对每遇到的一个@,将其变为,并继续dfs直到没有@回溯。 1234567
HDU4970 Killing Monsters
原题 题意塔防游戏模拟,给定数目的攻击塔,给定的范围和给定的攻击,有一些怪,有自己的生命值和出现点,计算到终点有多少怪没有被杀死 分析区间更新,直接树状数组,其实普通数组模拟也可以的,嘛无所谓了,树状数组也挺好写的,然后把给定范围和攻击处理完之后,直接倒着从终点往前,预处理出来从
HDU4965 Fast Matrix Calculation
原题 题意对两个最大61000的矩阵A,B,做(AB)^(N*N)%6处理,然后求新矩阵的所有元素的和。 分析直接做快速幂也会爆炸,O(N^3)*快速幂的复杂度,所以但是可以把(A×B)^(n×n),换成求A×(B×A)^(n×n-1)×B,直接变成6×6的矩阵快速幂。 1234
矩阵快速幂模板
123456789101112131415161718192021222324252627282930313233343536373839#include <bits/stdc++.h>#define N 10using namespace std;struct ma
HDU4961 Boring Sum
原题 题意题意非常绕的一个乱搞,对一个数组中的每个数求出在他前面,是他的倍数且靠他最近的一个bi,然后求出在他的后面,是他的倍数,且靠他最近的一个。 分析逆向思维,从前往后和从后往前做两次处理,用标记数组,对每个数,将他质因子的标记数组值记为自己,打完表之后,直接求。 12345