随笔分类 - 算法合集
本人学算法的过程
摘要:欧拉函数:指从1-n中与n互质的数的个数 首先要知道,一个数 $n$ 分解质因数之后会变成这样一个形式: $n$ = $p1k1$ + $p2k2$+ ... + $pnkn$ 而欧拉函数: $φ$= $n$ * (1-1/p1) * (1-1/p2) * ... * (1-1/pn). 证明: 1
阅读全文
摘要:题目描述 给定一个长度为 N 的数列,1,2,⋯A1,A2,⋯AN,如果其中一段连续的子序列 ,+1,⋯(≤)Ai,Ai+1,⋯Aj(i≤j) 之和是 K 的倍数,我们就称这个区间 [,][i,j] 是 K 倍区间。 你能求出数列中总共有多少个 K 倍区间吗? 输入格式 第一行包含两个整
阅读全文
摘要:题目链接:P1957 口算练习题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) sscanf(str,"%d",&n) 其实就是把str的内容以"%d"的格式写入到n中(从左到右) 同理 sprintf(str,"%d",n)就是把n以"%d"的格式写入到str (从右到左) #
阅读全文
摘要:背包问题的更深层次的动态规划,有各种变形,建议配合动态规划dp那一章先了解背包再食用 这节我估计要学习15个学时左右,还是挺重要的 day 01: //动态规划学习记录二 背包问题 //0-1背包:只有一个物品,只能选择选或不选; //多重背包:每个物品有次数限制; //完全背包:可以选无限次,也是
阅读全文
摘要:重新学习dp的第一步,计划学习dp用时40个学时,砥砺前行吧大伙 //最长上升子序列问题 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int f[N],a[N],n,res; int main() { cin>>n
阅读全文
摘要:题目背景 注意:本题为上古 NOIP 原题,不保证存在靠谱的做法能通过该数据范围下的所有数据。 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分
阅读全文
摘要:都说了不要走了,String函数总结 string的函数,真香。(不总结迭代器的) (15条消息) c++中的string常用函数用法总结_fdqw_sph的博客-CSDN博客 C++string中用于查找的find系列函数浅析 - 同勉共进 - 博客园 (cnblogs.com) C++中stri
阅读全文
摘要:[NOIP2002 提高组] 字串变换 题目背景 本题疑似错题,不保证存在靠谱的多项式复杂度的做法。测试数据非常的水,各种做法都可以通过,不代表算法正确。因此本题题目和数据仅供参考。 题目描述 已知有两个字串 ,A,B 及一组字串变换的规则(至多 66 个规则),形如: 1→1A1→B1。 2→
阅读全文
摘要:高精度加法: #include<bits/stdc++.h> using namespace std; const int N=1e6+10; string s1,s2; int a[N],b[N],c[N],t,len; int main() { cin>>s1>>s2; for(int i=0;
阅读全文
摘要:警钟长鸣 J题我做了40分钟一直不知道为什么错,后来发现错在哪了结果超时了(dp>搜索) 无聊做了做(第一题就被水了) 1743 Problem A 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=100010; 4 in
阅读全文
摘要:
题目背景 你说的对,但是《原神》是由米哈游自主研发的一款全新开放世界冒险游戏。游戏发生在一个被称作「提瓦特」的幻想世界,在这里,被神选中的人将被授予「神之眼」,导引元素之力。你将扮演一位名为「旅行者」的神秘角色,在自由的旅行中邂逅性格各异、能力独特的同伴们,和他们一起击败强敌,找回失散的亲人——同时
阅读全文

摘要:没错,数学也有分类了qaq,我之前学算法的时候妹学数学,今天算是被搞怕了(但还是不听ovo) 学会了两种方法,主要思想还是,对于每个i来说,他在从1-n中的贡献值是n/i,也就是1-n中约数含有它的数目是n/i(厉害吧,刚学的)另外一种方法是筛法,说实话这个你应该想到的(恼),不优化会爆的(30分)
阅读全文
摘要:题目描述 有一些电脑,一部分电脑有双向数据线连接。如果一个电脑得到数据,它可以传送到的电脑都可以得到数据。现在,你有这个数据,问你至少将其输入几台电脑,才能使所有电脑得到数据。 输入格式 第一行两个数n,m。n是点数,m是边数。 接下来m行,每行2个整数p,q表示p到q有一条双向数据线。 输出格式
阅读全文
摘要:题目描述 在桌面上有一排硬币,共N枚,每一枚硬币均为正面朝上。现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意N−1枚硬币(正面向上的被翻转为反面向上,反之亦然)。求一个最短的操作序列(将每次翻转N-1枚硬币成为一次操作)。 输入格式 一个自然数N(N为不大于100100的偶数)。 输出格式
阅读全文
摘要:通天之汉诺塔 汉诺塔移动的次数是2^n-1,但是呢由于本题的n很大,所以要用到高精,考察高精度,来愉快的打一下吧(呜呜我一直觉得高精没啥用所以妹学 #include<bits/stdc++.h> using namespace std; long long n,a[10000010],l=1; vo
阅读全文
摘要://区间选点 //数轴上有 n 个闭区间 [a_i, b_i]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个) // //Input //第一行1个整数N(N<=100) //第2~N+1行,每行两个整数a,b(a,b<=100) // INPUT :2 //1 5 //
阅读全文
摘要:dijkstra: ///朴素dijkstra算法 —— 模板题 AcWing 849. Dijkstra求最短路 I ///时间复杂是 O(n2+m)O(n2+m), nn 表示点数,mm 表示边数 #include<bits/stdc++.h> using namespace std; cons
阅读全文
摘要:1 前缀和 /// 给定一组数,求任意区间的总和 #include<bits/stdc++.h> using namespace std; const int N=100010; int n,a[N],s[N],m; int main() { cin>>n>>m; for(int i=1;i<=n;
阅读全文
摘要://Satellite Photographs //农民约翰购买了卫星照片$W \times H$他的农场像素$(1 \le W \le 80, 1 \le H \le 1000)$并希望确定最大的“连续”(连接)牧场。 //当牧场中的任何一对像素可以通过遍历作为牧场一部分的相邻垂直或水平像素来连接
阅读全文
摘要:///关于下标问题,当在计算时运用到i-1的时候,可以使用i从1开始,就没有越界的风险 ///如果没有,一般从0开始比价好; 1.要想明白动态规划路线 ->第一步写出动态集合,第二步开始动态计算; 1-1 0-1背包问题: #include<bits/stdc++.h> using namespac
阅读全文