ICode9

精准搜索请尝试: 精确搜索
  • 树哈希 学习笔记2022-08-28 10:30:10

    1.做法(from peehs_moorhsum) 设 \(h(u)\) 表示一个点的哈希值,\(f\) 为一随机函数。 \(h(u)=1+\sum\limits_{v\in son_{u}}f(h(v))\) 首先 \(f\) 的选择大概率是随机的,只要尽量不选多项式即可。(微调一下)。 ull d(ull x){ return x*x*x*19260817+20220827; } ull f(ull x){

  • A层省选32022-08-12 21:30:24

    A. 定位系统 不会,又是\(lct\),三场连着考,我该学学了。。 还有好多知识点没学,联赛前还想多刷点思维题,,,,,,难受 扔个暴力吧,找个度大于等于三的做根,然后记录一个点的子树内是否有发射器,当某个点有多于\(1\)棵子树没有发射器时,设置发射器到只剩一个没有的子树 除了找根为啥找度大于等于三的

  • SYZOJ 20220219 A 位置2022-07-31 17:33:12

    written on 2022-02-21 因为第一次写字符Hash,所以贴一个类模板,当做入门 #include<bits/stdc++.h> typedef unsigned long long ull; using namespace std; const int base=131; int n; char a[100005]; ull f[100005],p[100005]; ull Hash(int l,int r){return f[r]-f[l-1]*p[r-l+

  • 刷洛谷题单【数据结构1-3】2022-07-23 01:31:06

    P1551 亲戚 题目描述 规定:\(x\) 和 \(y\) 是亲戚,\(y\) 和 \(z\) 是亲戚,那么 \(x\) 和 \(z\) 也是亲戚。如果 \(x\),\(y\) 是亲戚,那么 \(x\) 的亲戚都是 \(y\) 的亲戚,\(y\) 的亲戚也都是 \(x\) 的亲戚。第一行:三个整数 \(n,m,p\),(\(n,m,p \le 5000\)),分别表示有 \(n\) 个人,\(m\) 个亲

  • 「Gym103069C」Random Shuffle2022-06-22 23:34:35

    题目 点这里看题目。 分析 关键观察在于,这道题的 \(n\)​ 居然有一个较大的下界!!!正常题目 \(n\)​ 的最小值一般都是个位数,这道题样例中 \(n=50\)​??说明这道题思路必然是通过 \(a\)​ 得到关于 \(x\)​​ 的若干位的限制,然后暴力枚举检验。这样才能解释 \(n\)​ 为什么无法取到较小

  • HDU 3501 Calculation 22022-06-20 10:03:58

    题目链接 测试提交 一、题意 求解\(1\sim n\)与\(n\)不互质的数的和。 二、欧拉函数解法 定义:欧拉函数是小于\(n\)的数中与\(n\)互质的数的数目。 例如\(φ(8)=4\),因为\(1,3,5,7\)均和\(8\)互质。 \(sum(n)=\phi(1)+\phi(2)+\phi(3)+...+\phi(n-1)+\phi(n)\) 利用欧拉函数即可求解

  • 字符串哈希2022-06-18 23:33:29

    #include <bits/stdc++.h> /** * @brief * b站视频:https://www.bilibili.com/video/BV1Ha411E7re?spm_id_from=333.337.search-card.all.click&vd_source=13dfbe5ed2deada83969fafa995ccff6 * 其他资料:https://oi-wiki.org/string/hash/ * / using namespace std; t

  • 【模板】数论板子2022-06-07 21:36:11

    数论分块 用于求解 \[\sum\limits_{i=1}^{n}f_i\cdot \left\lfloor\dfrac{n}{i}\right\rfloor \]亦可求解多维 \[\sum\limits_{i=1}^{\min(n_1,n_2,\cdots,n_k)}(f_i\cdot \prod\limits_{j=1}^{k}\left\lfloor\dfrac{n_j}{i}\right\rfloor) \]前提是求出了数论函数\(f(n)\)的

  • 2022湖北省赛 J. Palindrome Reversion (字符串哈希)2022-06-01 20:02:53

    https://codeforces.com/gym/103729/problem/J 题意: 选择一个子串翻转一次,问是否能得到一个回文串 #include<bits/stdc++.h> //#include <bits/extc++.h> using namespace std; // using namespace __gnu_cxx; // using namespace __gnu_pbds; #define IOS ios::sync_with_stdio(

  • 基础算法 841.字符串哈希2022-05-07 20:34:34

    也叫字符串前缀哈希法。 例如字符串“ABCDEFGH”。 用h[0], h[1], h[2]......h[n]分别表示前n个字符的子串的哈希值。 将字符串看作为p进制的数字,再将其mod一个数,得到哈希值。 经验上来说,p一般为131,或1331。 mod的数为2^64。unsigned long long如果溢出,就相当于对它取模。 #inclu

  • 【luogu P6621】【LOJ 3301】魔法商店(线性基)(保序回归)2022-04-14 16:00:06

    魔法商店 题目链接:luogu P6621 / LOJ 3301 题目大意 给你 n 个物品,每个有魅力值和价格。 然后一组合法的方案定义为数量最多的一个物品集,使得每个非空子集魅力值的异或和都非 0。 然后你可以修改物品的价格,费用是价格差的平方。 然后给你两个合法方案,要你用最小的费用使得它们在所

  • 字符串哈希2022-04-13 19:33:13

    视频链接:             #include <iostream> using namespace std; typedef unsigned long long ULL; const int N = 1000010, P = 131; int n, m; char s[N]; // p[i]=P^i, h[i]=s[1~i]的hash值 ULL p[N], h[N]; // 预处理 hash函数的前缀和 void init(){ p[0] = 1,

  • a^b2022-03-03 17:31:47

    code #include<iostream> #include<algorithm> using namespace std; #define ull unsigned long long ull quick_pow(ull a,ull b,ull p){ ull res=1; while(b){ if(b&1){ res=res*a%p; } b>>=1; a=a*a%p; } return res%p; } int main(

  • 字符串哈希2022-02-28 20:58:55

    【模板】字符串哈希 - 洛谷 1.哈希法:将字符串转化成某个进制的整数(大进制)否则容易造成哈希冲突,即不同的字符串转化的数却相同,再进行数字间不同的比较 #include <bits/stdc++.h> using namespace std; typedef unsigned long long ull; const ull mod=327819827801; ull a[100010

  • 龟速幂2022-02-27 13:31:35

    类似与快速幂。     由于数据范围很大,我们不能直接用a*b 否则会爆longlong。 我们同样可以采用将b拆分成其对应的二进制形式,然后再用a去乘。 比如说: 4*5 = 4 * (101) = 4*(2^2+2^0) 同样,不管b的二进制最后一位是否为1,a都要乘2,如果是1,结果就乘上a,如果是0,就不乘。然后去看b的下一

  • ACM C++基础算法模板2022-02-26 09:31:52

    打表:质数 typedef unsigned long long ull; void prime(long long max,long long min=2){ if (max<2 || min>max) return; //cout<<"2 3 5 7 11"; for (ull i=min; i<=max; i+=2){ //只有奇数才可能是质数 ull ii=(ull)sqrt(i); //注意sqrt()返回值为浮点型,必须强制转换

  • 【模拟赛】乌拉~~(重链剖分)2022-02-25 23:05:36

    背景 大家好,我是一名勇敢的俄罗斯士兵,我昨天正在打 C o d e F o

  • 洛谷 P5657 [CSP-S2019] 格雷码2022-02-24 19:31:10

    题目 题目传送门 题解 n = 1时序列为 0 1 n = 2时序列为 00 01 11 10 n = 3时序列为 000 001 011 010 110 111 101 100 要求\(n\)位格雷码的第\(k\)个,按照题目方法构造即可 首先格雷码肯定是分为前一半跟后一半两个部分构造的。 假设\(k\)在\(n\)位格雷码的前一半,那么它的构造方式

  • 数学技巧2022-02-21 15:34:49

    数学技巧 题目 题目 越狱 典 \(简析\) 既然顺着题目想 很困难, 是否可以 "逆向"思维? ​ 答案为: \(m^n - m(m-1)^{n-1}\) AC代码 注意: \((a-b)\bmod p\) 在实现上应写成 \((a-b+p)\bmod p\) 快速幂 求 \(a^b\) .  由于 \(b=c_{k-1}2^{k-1} + c_{k-2}2^{k-2}+...+c_02^0\),

  • 字符串哈希模板2022-01-23 11:32:50

    字符串哈希 作用:快速查询子串,极快地比较两个字符串,以及还有其他用途。(比kmp泛用性更广) 原理:1. 将字符串的前缀和字符串数组想办法转换成数字; ​ 2.前缀和字符串数组转换为数字的方式,p进制转化十进制(秦九邵),“1234” ---> 1p0+2p1+3p^2+..... ​ 在这里使用ASCII 码作为基准数

  • 【学习笔记】Min_25 筛2022-01-17 18:02:08

    神仙 Min_25 发明的神奇筛子,用来筛积性函数前缀和。 对于要筛前缀和的积性函数 \(f(x)\),其具体要求是:\(f(p)\) 是一个简单多项式,\(f(p^e)\) 可以快速计算。 复杂度是亚线性的,但我不会证。 Description 对于一个积性函数 \(f(x)\) 的前缀和,我们可以做如下变换: \[\begin{aligned} \s

  • 0x01位运算例题2022-01-01 18:33:00

    a^b(AcWing89) 题目链接:a^b 涉及到快速幂的应用,详情见0x01位运算 AC代码: 点击查看代码 # include<bits/stdc++.h> using namespace std; typedef long long LL; LL qmi(LL a,LL b,LL p) { LL res=1; while(b) { if(b&1) res=(res%p*a%p)%p; a=a%p*a%p;

  • OJ 11007 组合数2021-12-06 19:35:33

    OJ 11007 组合数 AC答案 AC答案 #include <stdio.h> typedef unsigned long long ULL; ULL xx(int n, int m) { ULL ans = 1; if(m <= n-m) m = n - m; for(int i=m+1; i<=n; i++) ans *= i; for(int i=1; i<=n-m; i++)

  • hash2021-11-25 19:01:31

    1 利用一个随机数rand()对 每一个点 进行一个随机负值 利用 数的大小和 等等 来表示一些 关系 从而可以减少时间复杂度 和 思维难度; 要有4个rand()而且前面是 1ll 不然不行的。 1ll 很重要 例题: 天作之合 Description 对于一张n个点,m条边的无向图,若对于点i,j,除i,j 外其他所有点要么都

  • Hash&map2021-11-19 18:03:55

    关于Hash:我不会 所以我们需要map 一、字符串Hash 就是一个公式 大概长这样 Hash(s)=(i=1∑len(s)​s[i]⋅blen−i)modm 看上去是不是很抽象? 因为我不会美观地写公式(技术硬伤) 所以引入大佬的博客   不用多说,上代码 #include<bits/stdc++.h> using namespace std; namespace _m

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有