2025年4月12日
摘要:
函数作用 计算 1 1 1 ~ n n n中有多少个与 n n n互质的数。 函数公式 φ ( n ) = n × p 1 − 1 p 1 × p 2 − 1 p 2 × … … × p m − 1 p m φ(n)=n\times\frac{p_1-1}{p_1}\times\frac{p_2-1
阅读全文
posted @ 2025-04-12 10:09
fish2012
阅读(17)
推荐(0)
2025年4月10日
摘要:
@P3834 #include<bits/stdc++.h> #define int long long #define 定义整型变量 int #define 这是一个常量 const #define 无返回值函数 void #define 这是一个循环条件在后面 for #define 定义结构体
阅读全文
posted @ 2025-04-10 17:38
fish2012
阅读(9)
推荐(0)
2025年4月4日
摘要:
前置知识:康拓展开 逆康拓展开可以求解 1 1 1 ~ n n n的全排列中,字典序第 x x x个的排列。 逆康拓展开 比如,在 1 1 1 ~ 5 5 5的全排列当中,要求按字典序第 107 107 107的排列。 因为在康拓展开时,单调递增的序列算出的结果是 0 0 0,所以要将原数减一。
阅读全文
posted @ 2025-04-04 17:54
fish2012
阅读(10)
推荐(0)
摘要:
算法功能 康拓展开用于解决:给定一个值为 1 1 1 ~ n n n的,数字互不重复的,且长度为 n n n的排序序列,康拓展开可以计算出 1 1 1 ~ n n n的全排列按照字典序排列,给定排列是第多少个。 算法公式 x = p 1 ⋅ ( n − 1 ) ! + p 2 ⋅ ( n − 2 )
阅读全文
posted @ 2025-04-04 10:25
fish2012
阅读(25)
推荐(0)
2025年3月29日
摘要:
算法思想 双向BFS,那么根据名字就可以只到大概的意思,从两个方向进行BFS。 我们从问题的起点与终点同时BFS,起点遍历一层,终点也遍历一层,最终相遇时停止。 如果题目是求最小的操作次数,那么这就是最终的答案。 这样,就把问题分成了两半,减少的不必要的搜索。 算法优势 上面这张图中,黄色的部分表示
阅读全文
posted @ 2025-03-29 10:02
fish2012
阅读(53)
推荐(0)
2025年3月28日
摘要:
算法思想 普通的线段树一般是求区间之和或区间最值,所以这些线段树的每个节点的下标是原数组中的区间范围,每个节点存的是区间和或最值,而权值线段树的每个节点的下标是数组中元素的值,而权值线段树每个节点存的是当前元素出现的次数。 但是题目的数据可能很大,元素可能是- 1 0 9 10^9 109 ~ 1
阅读全文
posted @ 2025-03-28 21:18
fish2012
阅读(21)
推荐(0)
2025年3月22日
摘要:
前置知识:整体二分 这道题在整体二分模版题的基础上又增加了一个单点的修改,实际上很简单,既然是单点修改那么就在查的时候改就行了。 具体怎么改呢?比如维护数量的树状数组里 b i t [ x ] bit[x] bit[x]的值为 1 1 1,但是我们有一个修改操作要将 x x x改为 y y y,所以
阅读全文
posted @ 2025-03-22 16:22
fish2012
阅读(5)
推荐(0)
摘要:
2048的人生历程 2025.3.25 【修改第1次】 2025.3.29 【修改第2次】 2025.3.29 【修改第3次】 //一个类似消消乐的小游戏,通过2,4,6,8来控制上下左右滑动,相同的数字可以相加变为新的数字,并获得相应分数 //到无法再移动消除数字时游戏结束 //7 8 9 //4
阅读全文
posted @ 2025-03-22 11:51
fish2012
阅读(8)
推荐(0)
2025年3月18日
摘要:
算法思想 整体二分,带有二分二字那么就一定和二分脱不了干系。 整体二分算法常用来解决询问区间的第 k k k小值的问题,思路如下: 我们二分的对象是这道题目给定的值域,及最小值与最大值之间的区间,在题目给定的数组中,对整体的值域进行二分,我们将 m i d mid mid作为左右区间的中间值。 比如
阅读全文
posted @ 2025-03-18 22:07
fish2012
阅读(8)
推荐(0)
2025年3月14日
摘要:
一大波模版题正在来袭 难度不一定递增,但应该是大致递增的难度。 【模板】快速读入 #include<bits/stdc++.h> using namespace std; int sum; int in(){ int k=0,f=1; char c=getchar_unlocked(); while
阅读全文
posted @ 2025-03-14 21:40
fish2012
阅读(16)
推荐(0)