ACM--杂项
文章平均质量分 81
ACM--杂项
「已注销」
“没有人能把你变好,
时间和经历只是陪衬。
支撑你变得越来越好的,是你坚强的意志、修养、品行,以及不断的反思和修正。”
展开
-
随机函数
文章目录随机函数1.随机数生成1.1 rand()1.2 mt199371.3 基于硬件的均匀分布随机数生成器random_device2.随机排列2.1 random_shuffle2.2 shuffle3.实现随机数生成器3.1 线性同余法3.2 时滞斐波那契法随机函数1.随机数生成1.1 rand()头文件:#include<cstdlib>使用:用于生成伪随机数,缺点是比较慢。调用 rand() 函数会返回一个 [0,RAND_MAX] 中的随机非负整数,其中 RAND_原创 2021-03-30 13:27:10 · 1792 阅读 · 0 评论 -
模拟退火
模拟退火1.算法描述1.1 概述简单说,模拟退火是一种随机化算法,用于求函数的极值。当一个问题的方案数量极大(甚至是无穷的)而且不是一个单峰函数时,我们常使用模拟退火求解。它与爬山算法最大的不同是,在寻找到一个局部最优解时,赋予了它一个跳出去的概率,也就有更大的机会能找到全局最优解。在 OI 领域,对应的,每次随机出一个新解,如果这个解更优,则接受它,否则以一个与温度和与最优解的差相关的概率接受它。以下图片来自:https://oi-wiki.org/misc/simulated-anneali原创 2021-03-30 13:26:33 · 133 阅读 · 0 评论 -
杜教BM
杜教BM文章目录杜教BM1.算法分析2.模板1.算法分析黑科技…输入线性递推的前几项,可以输出第n项2.模板#include <bits/stdc++.h>using namespace std;#define rep(i, a, n) for (int i = a; i < n; i++)#define SZ(x) ((int)(x).size())typedef vector<int> VI;typedef long long ll;const ll原创 2021-03-30 13:25:56 · 121 阅读 · 1 评论 -
模拟退火
模拟退火1.算法描述1.1 概述简单说,模拟退火是一种随机化算法,用于求函数的极值。当一个问题的方案数量极大(甚至是无穷的)而且不是一个单峰函数时,我们常使用模拟退火求解。它与爬山算法最大的不同是,在寻找到一个局部最优解时,赋予了它一个跳出去的概率,也就有更大的机会能找到全局最优解。在 OI 领域,对应的,每次随机出一个新解,如果这个解更优,则接受它,否则以一个与温度和与最优解的差相关的概率接受它。以下图片来自:https://oi-wiki.org/misc/simulated-anneali原创 2021-02-16 10:34:16 · 248 阅读 · 0 评论 -
随机函数
文章目录随机函数1.随机数生成1.1 rand()1.2 mt199371.3 基于硬件的均匀分布随机数生成器random_device2.随机排列2.1 random_shuffle2.2 shuffle3.实现随机数生成器3.1 线性同余法3.2 时滞斐波那契法随机函数1.随机数生成1.1 rand()头文件:#include<cstdlib>使用:用于生成伪随机数,缺点是比较慢。调用 rand() 函数会返回一个 [0,RAND_MAX] 中的随机非负整数,其中 RAND_原创 2021-02-16 08:56:18 · 704 阅读 · 0 评论 -
java在acm中的运用
文章目录java在acm中的运用1. 输入2. 输出3. 字符串处理4. 高精度5. 进制转换6. 排序7. 其他注意java在acm中的运用1. 输入格式Scanner cin = new Scanner (new BufferedInputStream(System.in));// 当然也可以直接 Scanner cin = new Scanner(System.in);只是加Buffer可能会快一些读数类型1. 读一个整数:int n = cin.nextInt()//相当于scanf原创 2020-09-24 14:29:54 · 167 阅读 · 0 评论 -
交换数字问题
交换数字问题问题1:问: 把1~N的任意排列,只交换相邻的数字,问最少交换多少次使得数列为1、2、3、4…N结论: 总的交换次数为逆序对数目问题2:问: 把1~N的任意排列,只交换相邻的数字,问每个数最少交换多少次,最终能够使得数列为1、2、3、4…N结论: 每个数字需要交换的次数为:a[i]前比它大的数字的数目+a[i]后比它小的数字的数目问题3:问: 把1~N的任意排列,可以交换任意两个数字,问最少交换多少次使得数列为1、2、3、4…N结论: 把每个数字x向a[x]连一条边,则会形成很原创 2020-09-24 14:29:24 · 470 阅读 · 0 评论 -
对数问题
对数问题1. c++中的log函数引入#include以e为底:log(n)以10为底:log10(n)以m为底:log(n)/log(m)2. 计算公式loga(MN)=logaM+logaNlog_a(MN)=log_aM+log_aNloga(MN)=logaM+logaNloga(MN)=logaM−logaNlog_a(\frac{M}{N})=log_aM-log_aNloga(NM)=logaM−logaNloga(Mn)=nlogaMlog_a(M^n)=原创 2020-09-24 14:27:51 · 221 阅读 · 0 评论 -
备忘录
文章目录备忘录1.memset初始化问题2.类型转换2.1 利用streamstring来实现安全的类型转换2.2 利用函数实现3. 利用streamstring可以实现以空格进行分割字符串4. 排序去重5. 取整问题备忘录1.memset初始化问题memset一般使用值为0,-1,0x3f, 0xc00初始化数组为0-1初始化数组为-10x3f初始化数组为10611095670xc0初始化数组为-1061109568测试程序#include <bits/stdc++.h>原创 2020-09-24 14:27:20 · 74 阅读 · 0 评论