02 2023 档案
摘要:经典例题:石子合并 题目链接 N 堆石子排成一行,现要将石子有次序地合并成一堆,规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。计算合并最小得分。 方法一、区间dp #include<bits/stdc++.h> using namespace std; const
阅读全文
摘要:1、例题 Find a Multiple 题目链接 题意:给定n个数,问能不能从中选取m个数,使得这m个数的和模n等于零。 思路:前缀和 + 鸽巢原理。从1~n先求一遍前缀和,假设这些数都不能模n等于0, 那么这些数模n的取值范围在[1, n - 1], 一共 n - 1个,小于n。那么根据鸽巢原理
阅读全文
摘要:1、含义 迭代加深搜索是一种每次限制搜索深度的深度优先搜索。 2、例题 整数变换问题 刚开始看到最少变换次数,果断选择BFS,结果MLE。 Q1:为什么使用BFS会爆内存? ①搜索树过深或者过宽;②BFS的实现基础是队列,队列的空间复杂度很大。 Q2:有何替代解决方法? ①时间换空间:使用迭代加深搜
阅读全文
摘要:1、异或 相同的数,异或结果为0,不同的数,异或结果为1.异或会用在nim博弈和一些数学中。可以找出n+1个数中,唯一一个与其他的数不同的数 异或有个性质:一个数对另一个数异或两次,数值不变。 性质应用:交换两个数 x = x ^ y; //x = 3 ^ 4 y = x ^ y; //y = 3
阅读全文
摘要:1、fabs返回浮点数的绝对值,abs返回整数绝对值 2、运算符重载之后排序比写一个排序函数排序要快 struct node{ int x, y, z; bool operator < (const node &p) const{ return z < p.z; } }a[N]; 3、registe
阅读全文
摘要:1、Magic Problem - 7176 (hdu.edu.cn) 思路:求的是区间总和,所以考虑和前缀和进行结合,将前缀和a[i](前i个数的前缀和)作为边权。然后考虑限制条件。 首先,区间[l,r]的总和小于b,那么可以得到a[r] - a[l - 1] ≤ b 其次,因为每个位置大于等于0
阅读全文
摘要:1、Bomb Problem - 5934 (hdu.edu.cn) 题意:二维平面图上,给一些炸弹的坐标(x, y)和炸弹可以引爆的范围圆的半径和引爆该炸弹的花费。问最少花费是多少可以把所有炸弹引爆? 考点:强连通分量 思路:利用tarjan算法进行染色。对每个强连通分量求取一个花费最小值,然后将
阅读全文