ICode9

精准搜索请尝试: 精确搜索
  • AcWing 算法基础课 图论2021-12-26 13:04:11

    图可以用邻接表存储, 邻接表为n个链表, 链表可以用数组模拟(比vector速度快)。 const int N; int h[N],e[N],ne[N],idx;//分别表示,h[i]:图中编号i的头结点,e[i]:节点i的值(编号),ne[i]节点i在链表中的下一个节点的idx。 void add(int a,int b) {   e[idx]=b;   ne[idx]=h[a];   h[a]=i

  • [atAGC055E]Set Merging2021-12-05 13:04:50

    当$S_{i}=S_{i+1}$时对$i$操作显然无意义,不妨强制不允许此类操作 构造排列$P_{i}$,初始等于$\{1,2,...,n\}$,当对$i$操作后交换$P_{i}$和$P_{i+1}$ 结论:$S_{i}=[\min_{i\le j\le n}P_{j},\max_{1\le j\le i}P_{j}]$ 考虑归纳,初始显然成立,考虑某次对$i$操作—— 简单分析,也即求证$P_

  • 2.2数据结构哈希表2021-12-04 11:35:02

    #include <iostream> #include <cstring> using namespace std; const int N = 100003; int h[N] , e[N] , ne[N] , idx;//h是数组头,e是存的插的链表的值,ne是其下一个的idx void insert(int x) { int k = (x % N + N) % N;//负数mod之后还是负数,这是为了防止负数出现 e[i

  • acwing840 模拟散列表 2021/11/272021-11-27 22:34:59

    #include<iostream> #include<algorithm> #include<cstring> using namespace std; int const n=100003; int h[n],e[n],ne[n],idx; h[]是哈希函数的一维数组//e[]是链表中存的值//ne[]是指针存的指向的地址//idx是当前指针 void insert(int x) {     int k = (x % n + n) % n

  • zabbix 连续3次异常则告警2021-11-16 18:33:02

    假设监控一个rsync状态,正常返回1,否则返回0,每分钟收集一次,但是有时候就会产生误报,前一分钟异常,后一分钟正常了 为了避免这个问题可以使用 count 函数进行触发器的配置 {app-status:rsync.status.count(#3,1,ne)}>2  意思就是 :         经过三次连续检测,如果值不等于1的次

  • 【动态规划】有后效性 DP2021-11-14 18:31:42

    P3232 [HNOI2013]游走 \(\text{Description}\) 给定一个 \(n\) 个点 \(m\) 条边的无向连通图。从 \(1\) 号节点出发,每一步以相等的概率 随机 选择当前节点连出去的某条边,经过这条边走到下一个节点,获得等于这条边的编号的分数。到达 \(n\) 号顶点时结束。请对这 \(m\) 条边进行编号

  • CodeForces 161D :Distance in Tree 树形DP + 点分治2021-11-14 12:00:13

    传送门 题意 给你一棵树,有 n n n个点,边权都为 1 1 1,问你树上有多少对点的距离为

  • 字符串匹配2021-11-06 22:34:23

    一、BF算法 Brute-Force简称BF算法,也称单匹配算法。采用穷举的思路。BF是暴力的意思。 算法思路:从T的每一个字符开始依次与P的字符进行匹配。 BF算法匹配过程: 【代码实现】 分析: 要完成对于所有字符的匹配工作,可以遍历母串,并逐个与子串比较,若相同,则字串匹配位后移,若不成功,回溯归

  • 【数论】第1章 整数的可除性 第1节 整除概念与带余除法(2) 素数2021-11-06 13:04:02

    本文属于「数论」系列文章之一。这一系列着重于数论算法的学习和应用。由于内容随时可能发生更新变动,欢迎关注和收藏数论算法系列文章汇总目录一文以作备忘。此外,在本系列学习文章中,为了透彻理解数论知识,本人参考了诸多博客、教程、文档、书籍等资料。以下是本文的不完全参

  • 牛客xb月赛38 E 求任意区间的长度等于区间值的积 暴力枚举区间+玄学优化术2021-11-02 15:58:20

    题目 题解思路 暴力枚举每个区间,枚举左端点,再枚举右端点。当乘积大于n的时候break,将连续的1优化成直接指向下一个非1数,这样就只需log级别就能枚举出来了。 因为这样最差情况下全是乘2 也只需要17次就能出循环,所以这个优化是很恐怖的。 这样我们只需预处理每个1下一个非1是多

  • kmp算法2021-10-27 17:07:16

    kmp算法 #include <iostream> using namespace std; const int N = 10010,M = 100010; int n,m; char p[N],s[M]; int ne[N],nextval[N]; int main() { cin>>n>>p+1>>m>>s+1; //求next的过程 for(int i = 2,j = 0;i<=n;i++) {

  • [Acwing] 通信线路 二分|DP + 最短路2021-10-27 13:32:06

    前言 简直不是一般的难!!! 传送门 : 题目分析 路径代价 每一条路径上 最大的边是 这条路的代价 对于k 可以让路径免费,只不过是多加了一条 为0 的重边 最后题目转换为 : 我们可以设置 k k k条

  • “21天好习惯”第一期–12021-10-23 23:01:38

    Define运算符的作用是在常量表达式中体现的,用来确定是否已经被defⅰne定义过。如果标识已定义则为真,反之亦然。

  • KMP。。2021-10-23 12:33:09

    // s[]是长文本, p[]是模式串, n是s的长度, m是p的长度 求模式串的Next数组: for (int i = 2, j = 0; i <= m; i ++ ) { while (j && p[i] != p[j + 1]) j = ne[j]; if (p[i] == p[j + 1]) j ++ ; ne[i] = j; } // 匹配 for (int i = 1, j = 0; i <= n; i ++ )

  • 微积分(A)随缘一题[5]2021-10-18 13:31:06

    是否存在这样的函数 \(f\),使得 \(f(x)\) 在 \([a,b]\) 可导 \(f'(x)\) 在 \((a,b)\) 中存在间断点 考虑 \(f(x)=\begin{cases}0 & \quad (x=0)\\ x^2 \sin \frac{1}{x} & \quad (x \ne 0)\end{cases}\) 当 \(x \ne 0\) 时,有 \(f'(x)=2x\sin\frac{1}{x

  • 基础算法学习---树状dp2021-10-16 10:32:13

    没有上司的舞会 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N = 6010; int hp[N]; int e[N],h[N],ne[N],idx; int f[N][2]; bool hf[N]; int n; //邻接表建树 void add(int a,int b){ e[idx] = b; ne[idx]

  • P4824 [USACO15FEB]Censoring S2021-10-13 18:04:01

    Lisa 很水的kmp小题 思考一下就可以知道,肯定要跑kmp,但是当我们删掉一个串后剩下怎么办 答:从上一次的位置接着匹配 记录一下这个东西就行了 #include<iostream> #include<cstring> #include<iostream> using namespace std; char a[1000100],b[1000100]; int ne[1000100]; int f[

  • CF126B Password2021-10-12 14:00:44

    Jisoo kmp中的next数组表示按照当前位置结尾的相同的最大真前缀和后前缀长度 那么如果这玩意真的存在,那么next[n] 一定不为零 然后枚举一下2-n-1,找找有没有相等的next就可以了 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include

  • kmp算法2021-10-04 19:34:16

    #include <iostream>using namespace std;const int N=10010,M=100010;char s[M],p[N];int n,m;int ne[N];int main(){ cin>>n>>p+1>>m>>s+1; for(int i=2,j=0;i<=n;i++) { while(j&&s[i]!=p[j+1]) j=ne[j]; if(p[i]==p[j+1]) j++

  • 离线赛总结12021-10-03 23:02:45

    写一下把我吊着打的离线赛总结 (?) \(update\) \(2020.10.3\) 学会的东西: struct p30 { }p30; 什么的 (就可以完美地水暴力了 然后就50pts暴力写错了 胡的正解是对的23333 P1311 [NOIP2011 提高组] 选择客栈 丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从 1 到 n 编号。每

  • AcWing 周赛142021-09-30 10:32:46

    AcWing 周赛14 区间选数 题意 给出两个区间,要求分别输出两个不同的数,且第一个数属于第一个区间,第二个数属于第二个区间 题解 判断区间端点大小输出 c++ #include<bits/stdc++.h> using namespace std; int main() { int T; cin >> T; while(T--) { int l1, r

  • bitset的运用2021-09-27 21:33:20

    题目链接:https://ac.nowcoder.com/acm/problem/51011 说一下第二种拓扑排序的思路,因为是有向无环图,可以进行拓扑排序,记录出队列顺序, 再倒着,由结尾统计。运用 二维bitset 的 | 运算操作可以 顺带着去重。 代码如下: 第一种 (直接dfs 203ms) #include <bits/stdc++.h> using nam

  • acwing算法基础课:哈希表2021-09-27 13:03:04

    一般哈希表模板 (1) 拉链法 int h[N], e[N], ne[N], idx; // 向哈希表中插入一个数 void insert(int x) { int k = (x % N + N) % N; e[idx] = x; ne[idx] = h[k]; h[k] = idx ++ ; } // 在哈希表中查询某个数是

  • <c:if test=“value ne, eq, lt, gt,…”> 用法2021-09-25 09:04:21

    <c:if test=“value ne, eq, lt, gt,…”> 用法 类别 运算符 算术运算符 + 、 - 、 * 、 / (或 div )和 % (或 mod ) 关系运算符 == (或 eq )、 != (或 ne )、 < (或 lt )、 > (或 gt )、 <= (或 le )和 >= (或 ge ) 逻辑运算符 && (或 and )、 || (或 or )和 ! (或 not ) 验证运算符 empty

  • 约瑟夫环【数组模拟环形链表】2021-09-23 09:06:36

    题目 N个人围成一圈顺序编号,从1号开始按1、2、3…顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。 请按退出顺序输出每个退出人的原序号。 输入格式 输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。 输出格式 按退出顺序输出

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

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

ICode9版权所有