笔记
文章平均质量分 57
qq_45778406
这个作者很懒,什么都没留下…
展开
-
python学习笔记
python知识点总结原创 2023-03-02 23:30:30 · 357 阅读 · 0 评论 -
卷网之王(cuit第八届校赛)
LinK#include <bits/stdc++.h>using namespace std;#define ll long longconst ll N = 2e5 + 10;double dp[1000001];int main(){ int t; cin >> t; while(t --) { int n, k; cin >> k >> n; for(in原创 2021-12-20 09:59:36 · 263 阅读 · 0 评论 -
第k大数(多种方法)
方法一树状数组 + 二分优点:实现简单,原理简单缺点:只能对整体查询,不能查询区间第k大,而且要求数字不能太大复杂度:查询一次log2(n)log^2(n)log2(n)原理:树状数组中T[i]存储大小为i−lowbit(i)到ii-lowbit(i) 到 ii−lowbit(i)到i的数出现的次数, 查询时二分这个数即可,判断当前数是否为第k大数(直接用当前总数 - 查询得到的比i小的数)#include <iostream>#include <cstdio>#in原创 2021-05-08 20:15:56 · 377 阅读 · 0 评论 -
Insertion Sort Gym - 101955C(组合数学/打表找规律)
Link题意:给你一个n, k, q, n代表长度为n的数组,数组中是1~n的全排列, k是进行k次插入排序。现在问你1~n的全排列中有多少种排列会在进行k次插入排序后其最长上升子序列长度大于等于n - 1.进行k次插入排序含义:下标1~k的位置排序好了, k + 1 ~ n 未变。排列组合思路:借鉴link代码:#include <bits/stdc++.h>using namespace std;#define int long longconst int N = 1e4转载 2021-05-07 21:19:40 · 159 阅读 · 0 评论 -
预处理技巧Best ACMer Solves the Hardest Problem(暴力 + 预处理)
我们在二维平面坐标下要求到(x, y)距离为 sqrt(k) 的点, 我们可以预处理设这个点为(x1, y1)那么(x−x1)2+(y−y1)2==k(x - x1)^2 + (y - y1)^2 == k(x−x1)2+(y−y1)2==k令dx=x−x1,dy=y−y1dx = x - x1, dy = y - y1dx=x−x1,dy=y−y1我们只需预处理出所有的dx2+dy2==kdx^2 + dy^2 == kdx2+dy2==k 的dx 和 dy 和 k 的组合在查询时就可以按照k的原创 2021-05-07 11:01:26 · 179 阅读 · 0 评论 -
种树 黑暗爆炸 - 2151(反悔型贪心)
DescriptionA城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。园林部门得到指令后,初步规划出n个种树的位置,顺时针编号1到n。并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度。但由于A城市土壤肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置。值得注意的是1号和n号也算相邻位置!)。最终市政府给园林部门提供了m棵树苗并要求全部种上,请你帮忙设计种树方案使得美观度总和最大。如果无法将m棵树苗全部种上,给出无解信息。思路原创 2021-04-21 21:03:04 · 270 阅读 · 0 评论 -
树状数组(复习)
树状数组)a[N]: 存的数据T[N]: T[i] 为 a[i−lowbit(i)]到a[i]a[i-lowbit(i)] 到 a[i]a[i−lowbit(i)]到a[i]的和c[N]: a[i] - a[i -1]单点修改,区间查询)单点修改j时, 改变了在他后面且i - lowbit[i] < j, 的i点, 故需要修改T[i];for(int i = x; i <= n; i += lowbit(i)) T[i] += y;单点查询直接前缀和即可for(int i原创 2021-04-17 17:22:18 · 116 阅读 · 0 评论 -
第四十五届ICPC昆明站总结
2021-第四十五届ICPC昆明站总结一:组队二:报名三:赛前准备在准备报名之前,我们加入了ICPC昆明的官方群,了解到了相关的报名事宜,之后还会再牛客上开启训练赛,之后我和俩位队员就每周星期天打牛客的训练赛,一开始全英文题大家都有点不习惯,我们就开翻译打,大家用三台电脑通过一个团队账号提交,还记得之前有一道题时最小圆覆盖大家因为理解错了意思还卡住了好久一段时间,之后仔细读了读题发现大家都马虎了,套了个板子就过了,还有些题目又臭又长,有的题大家照着样例猜题意,反而没用太久时间读题就过了。最后一场我们原创 2021-04-13 16:54:05 · 1089 阅读 · 0 评论 -
迭代器用法
迭代器只能用++或者–, 不能+1或者-1原创 2021-04-10 18:14:32 · 264 阅读 · 0 评论 -
利用差分求非齐次多项式的通项公式
as原创 2021-03-12 17:12:07 · 566 阅读 · 0 评论 -
匈牙利算法理解篇
原文链接转载仅仅用于自己理解首先是匈牙利算法的本质:(图参考了zxy的)这个图要详细看完,那么刚开始我想的“找小三”实际上就是递归找增广路的过程,如果找到增广路,匹配数就一定可以加一。(代码就不上了,都是一个模板)理解到这里其实才只是个开始,我想解决的是最大匹配与最小顶点覆盖数、最小边覆盖数、最大点独立集之间的关系是怎么得来的。首先是结论:在任意图中:(《挑战》里的结论)(a)、对于不存在孤立点的图,最大匹配+最小边覆盖=顶点数;(b)、最大独立集+最小顶点覆盖=顶点数;二分图中:(c转载 2021-03-08 17:07:53 · 155 阅读 · 0 评论 -
一段连续值异或
结论如果数字数字, 那么偶奇偶奇异或起来为0,eg 4 ^ 5 ^ 6 ^ 7 = 0快速求1 ~ n 的异或值 O(1)ll f(ll a){ if(a%4==1) return 1; else if(a%4==2) return a+1; else if(a%4==3||a==0) return 0; else return a;}...原创 2021-03-05 10:04:55 · 284 阅读 · 1 评论 -
字符串hash双值hash
双值Hash就是用两个不同的mod值来计算Hash,如果两个Hash值都相等才认为是同一个字符串,Hash冲突概率降低了很多,但是常数大,容易被卡。时间上:自然溢出法<单Hash+大质数<双Hash+大质数。Hash的几个常用公式:Hash递推:Hash[0]=0;Hash[i]=(Hash[i-1]*p+s[i]-‘a’+1)%mod;区间Hash值:Hash[L…R]=(Hash[R]-Hash[L]*p^(R-L+1)+mod)%mod;这里减法可能会溢出eg:ha原创 2021-02-21 17:10:55 · 3214 阅读 · 1 评论 -
Looooops(线性同余方程, exgcd)
题目描述一个C语言的for循环: for(int i=A;i!=B;i+=C)st;其中i表示变量,A、B和C分别表示初值、终值和步长,st表示循环体。要求计算当循环变量i运算在k位无符号整数体系下(运算值范围:0~2^k-1,此时,i+=c溢出后截断),循环体st会执行多少次?输入格式输入每组数据包括4个整数A,B,C和k。输出格式对于每组数据,输出循环次数,如果永远不能结束,输出FOREVER。输入样例1 3 2 41 5 2 41 2 4 30 0 0 0输出样原创 2021-02-17 22:49:08 · 200 阅读 · 0 评论 -
Fansblog(Miller_Rabin, 费马小定理, 逆元, 威尔逊定理)
题面给你一个素数p,让你求 k!%p, 其中k为比p小的整数里最大的素数。例如p=5,则k=3。p=11,则k=7。 k! = k*(k-1)*······21;Input第一行包含一个整数 T(1<=T<=10) 表示测试样例的个数.接下来有T行,每行包含一个素数 p (1e9≤p≤1e14)Output对于每个测试样例,输出一个整数k!%p,代表答案Sample Input11000000007Sample Output328400734思路: 威尔逊定理 (p -原创 2021-02-17 17:40:02 · 177 阅读 · 0 评论 -
线性筛法求素数的原理与实现
何为线性筛法,顾名思义,就是在线性时间内(也就是O(n))用筛选的方法把素数找出来的一种算法,没用过线性筛素数法的人可能会奇怪,用遍历取余判定素数不是也是线性时间的吗,没错,但是确切的说线性筛法并不是判定素数的,而是在线性时间内求出一个素数表,需要判定是否是素数的时候只要看该数是否在表内就可以瞬间知道是不是素数。比如想求10000以内的素数,定义表int a[10000],进行线性筛选后,a[n]的值就代表n是不是素数,a[n]如果是1,就代表n是素数,a[n]如果是0,就代表n不是素数,这就是查表。再判转载 2021-02-04 14:26:26 · 1224 阅读 · 0 评论 -
费马小定理&欧拉降幂
a * a ^ (p - 2) = 1 (mod)p => a ^(p - 2) = a^(-1) mod所以在乘法取模运算中可以用 a^(p - 2)代替 a ^ (-1), 也相当于用作小数取模原创 2021-02-03 10:49:52 · 268 阅读 · 0 评论 -
欧拉函数
欧拉函数就是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。欧拉函数的通式:φ(n)=n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)……(1-1/pn),其中p1, p2……pn为n的所有质因数,n是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。晦涩难懂一:代码中的 ans-=ans/i; ans = ans(1 - 1/n) 这一步就是对应欧拉函数的通式~还是应该比较容易看懂的吧?晦涩难懂二:while(n%i==0) n/=原创 2020-11-10 21:22:31 · 181 阅读 · 1 评论 -
最小费用最大流(理解紫书上的代码)
Key ponits在最小费用流问题中, 平行边变得有意义了:可能会有两条从u->v的弧,费用分别为1,2在没有费用的情况下, 可以把二者合并, 但由于费用的出现,无法合并这两条弧。再如, 如果边(u, v) (v, u)都存在,且费用都为负数。为了允许反悔(反向增广)规定cap[v][u] = 0并且cost[v][u] = -cost[u][v]表示沿着(u, v)相反方向增广是=时费用减少cost[u][v]#include<bits/stdc++.h>using name原创 2020-11-04 21:04:28 · 252 阅读 · 0 评论 -
c++中string常用函数及用法总结
标准c++中string类函数介绍注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。好了,进入正题………首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下:#inclu原创 2020-10-19 14:34:18 · 382 阅读 · 0 评论 -
P2234 [HNOI2002]营业额统计 , 平衡二叉树模板题
题目描述Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况:当最小波动值越大时,就说明营业情况越不稳定。而分析整个公司的从成立到现原创 2020-10-17 22:47:32 · 257 阅读 · 0 评论