ICode9

精准搜索请尝试: 精确搜索
  • 原根学习笔记2020-12-28 21:04:48

    阶 阶的定义 设 \(m>1\),且 \(gcd(a,m)=1\),那么使得\(a^r\equiv 1(modm)\)成立的最小的正整数\(r\)称为\(a\)对模\(m\)的阶,记为\(\delta m(a)\) 阶的性质 定理一:若 \(m>1\) 并且 \(gcd(a,m)=1\),又满足 \(a^n \equiv 1(modm)\),那么 \(\delta m(a)|n\) 定理二:\(\delta m(a)|\varphi(m

  • 二项式反演学习笔记2020-12-28 08:01:06

    内容 钦定若干个条件满足,设为 \(g[k]\),将恰好的方案数设为 \(f[k]\) 则有\(g[k]=\sum_\limits{i=k}^nC_k^if(i)\) 根据二项式反演可以得到 \(f[k]=\sum\limits_{i=k}^n(-1)^{i-k}C_k^ig(i)\) 集合计数 题目传送门 分析 设钦定 \(k\) 个元素重合的方案数为 \(g[k]\) 则 \(g[k]=C_n^

  • 浅谈三种求最小生成树的方法2020-12-28 06:32:05

    本篇文章的定义均来自与oi-wiki 定义 我们定义无向连通图的 最小生成树 \((Minimum\ Spanning\ Tree,MST)\)为边权和最小的生成树。 注意:只有连通图才有生成树,而对于非连通图,只存在生成森林。 \(Prim\)算法 \(Prim\) 算法是一种常见并且好写的最小生成树算法。该算法的基本思想是从

  • 后缀数组学习笔记2020-12-26 11:01:22

    作用 对于一个字符串的后缀按照字典序进行排序 通常的求法是 \(nlogn\) 的倍增做法 网上的博客都很详细 比如这篇 和 这篇 这里只放一下板子,并说一下几种常见的题型 #define rg register const int maxn=1e6+5; int n,m,sa[maxn],fir[maxn],sec[maxn],tax[maxn],hei[maxn]; void Q

  • 2020.12.16 模拟赛x+12020-12-16 18:33:10

    A. 接力比赛 跑两遍背包,再进行一些玄学的剪枝 代码 #include<cstdio> #include<algorithm> #define rg register inline int read(){ rg int x=0,fh=1; rg char ch=getchar(); while(ch<'0' || ch>'9'){ if(ch=='-') fh=-1; ch=getchar();

  • excel插入图片链接,显示图片2020-12-16 09:03:49

    Sub test()Dim rg As Range, shp As ShapeRem ---------------------------------------------------Rem 清除图形对象For Each shp In ActiveSheet.Shapesshp.DeleteNextRem ---------------------------------------------------Rem 按名称插入图片Rem 下行代码,根据A列开始循环

  • noip晚间小测5 A. 统计 线段树2020-11-27 17:01:12

    题目描述 分析 设 \(f[i]\) 为在 \(i\) 右边且比 \(a[i]\) 大的数的个数 则初始的答案为 \(\sum_{i=1}^nf[i]\) 如果操作的位置是 \(m\) 就相当于把在 \(m\) 右边且小于等于 \(a[m]\) 的位置上的 \(f\) 置为 \(0\) 因为每一个点只会对答案贡献一次,暴力枚举会浪费很多时间 可以用

  • CF52C Circular RMQ2020-11-21 13:04:57

    CF52C Circular RMQ 洛谷传送门 题意翻译 【题目大意】 给定一个环形数列 a0,a1,…,an−1a_0,a_1,\dots,a_{n-1}a0,a1,…,an−1。 现在有 222 种操作: inc⁡(lf,rg,v)\operatorname{inc}(lf,rg,v)inc(lf,rg,v):将区间 [lf,rg][lf,rg][lf,rg] 中的每个数增加 vvv。 rmq⁡(lf,rg)\ope

  • [整理]qbxt周末刷题班 Day2总结2020-11-03 21:03:05

    跑路 Description:有一棵无根树,给定一个温泉,问至少再添加多少温泉,使得所有叶节点(度为1)到温泉的距离不超过\(k\)。 Solution:我们考虑贪心地放温泉。一个简单的思路是对于一个节点\(x\),总是放到它的祖先处。但是这样做有一个问题:如果一个兄弟子树中的节点\(y\)原本被\(t\)覆盖,但是

  • 晚间测试13 A. Dove 打扑克 vector +模拟2020-10-29 06:31:27

    题目描述 分析 这道题比较关键的一点就是要看出最终牌数的种类数不会超过 \(\sqrt{n}\) 种 知道了这个性质我们就可以用 \(vector\) 维护一个有序的序列 \(vector\) 中存放牌数的大小和有多少堆这样的牌 每次二分插入和删除即可 时间复杂度 \(O(m\sqrt{n})\) 代码 #include<cstd

  • 《字符串专题》2020-10-05 14:02:37

    查询回文子串个数: #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<double,int> pii; const int N = 3e5+5; const int M = 1e6+5; const LL Mod = 1e9+7; #define rg register #define pi acos(-1) #define INF 1e18 #define CT0 c

  • [AC自动机][dp][洛谷P4052][JSOI 2007] 文本生成器2020-10-05 11:01:34

    题目链接 题解 正难则反,我们可以去计算出不合法的字符串数量,然后用 \(26^m\) 减去不合法的字符串数量即为合法的字符串数量。发现计数时需要维护到枚举到字符串当前位置时的后缀,按照套路,这个东西可以放到AC自动机上来做。先把所有单词丢到AC自动机上,然后设 \(dp[i][p]\) 表示枚举

  • [洛谷P5829] 失配树2020-09-21 22:32:09

    题目大意 给定一长为 \(n(n\leq 10^6)\) 的字符串 \(s\),\(m(m\leq 5\times 10^5)\)次询问,每次询问它的两个前缀的最长公共 border。 题解 先跑一遍KMP求出\(fail\)数组,每个\(pos\)向\(fail[pos]\)连边,建出\(fail\)树,在\(fail\)树上求lca即为两个前缀的最长公共border。 Code #incl

  • 《洛谷P2930 [USACO09HOL]Holiday Painting G》2020-09-16 20:02:50

    一开始没注意数据范围~ 可以发现列最大只有15。 并且我们修改的是一个矩形。 那么就是一列列修改并且统计答案。 这里就可以用线段树,对每列建树,然后更新统计答案。 具体怎么统计,就是因为每次都是将一个区间内的数改成1或0,那么我们先统计出每个区间的标准1和0个数。 那么改成哪个就

  • 《Codeforces Round #668 (Div. 2)》2020-09-12 08:33:34

    最近又变怠惰了~~。努力找回状态吧。 A:签到题。 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<string,int> pii; const int N = 1e6+5; const int M = 2e5+5; const LL Mod = 1e9+7; #define rg register #define pi aco

  • 《TZOJ4244:Sum》2020-08-28 14:00:34

    主要在于对每个点贡献的思考。 单独看所有的方案数:每个点的贡献就是他是最大值的方案数*他的值 - 他是最小值的方案数*他的值。 对于最大值的方案数:我们找到他的左边第一个比他大的点L,右边第一个比他大的点r。 然后这个值可以分为两部分。两边分开独立的。i-L  + r-i。 和两边组

  • 20200802 高精度问题 阶乘之和2020-08-04 09:32:48

    模板 来源https://societyniu.blog.luogu.org/solution-p1009 #include<iostream> #include<bits/stdc++.h> using namespace std; int a[2000]; int b[2000]; int c[2000]; int sum[2000]; void pplus(int *a,int *c) { int jw=0; for(int i=1;i<=1000;i

  • js 实现光标控制与字符串查找2020-06-29 11:51:36

    转载请注明来源:https://www.cnblogs.com/hookjc/光标定位: <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> <meta name="generator" content="microsoft frontpage 4.0"> <m

  • P2598 [ZJOI2009]狼和羊的故事2020-06-12 20:59:21

    既可以是一眼题又可以是有些东西的题 一眼就可以看出来,要用最小割把狼和羊分开,那 \(S\) 向狼连 \(inf\),羊向 \(T\) 连 \(inf\),每个点向周围连 1,考虑割掉的边是栅栏 之所以说它有些东西,是应为它可以表示成数学形式,考虑将狼划分成 0 集合,将羊划分成 1 集合,没有归属的点随便 如果两个

  • 【2020NOI.AC省选模拟#1】B. Trie2020-06-02 23:00:08

    题目链接 原题解: 只有一个模式的时候 考虑现在有模式串$M$和文本串$S$,我们想知道是否有$S$的某个子串符合$M$。 先对模式串和文本串进行转化,变成一个整数序列。对于某个字母,如果是在串中第一次出现,那么对应整数$0$;如果不是,则对应到其上一次出现的距离。 比如串$ABBACAB$对应整数

  • 「JSOI2015」串分割2020-02-25 23:54:47

    「JSOI2015」串分割 传送门 首先我们会有一个贪心的想法:分得越均匀越好,因为长的绝对比短的大。 那么对于最均匀的情况,也就是 \(k | n\) 的情况,我们肯定是通过枚举第一次分割的位置,然后每一段长度 \(\frac{n}{k}\) 最后取最小的。 把这个思想运用到一般情况:如果分出来两段长短不一,

  • 「CQOI2015」任务查询系统2020-01-24 13:52:24

    「CQOI2015」任务查询系统 传送门 好像也是板子题??? 区间修改,单点查询,考虑差分。 然后每次查询时就直接在对应的主席树上二分即可。 参考代码: #include <cstdio> #include <vector> #define rg register #define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", st

  • 「luogu2617」Dynamic Rankings2020-01-23 23:56:37

    「luogu2617」Dynamic Rankings 传送门 树套树直接上树状数组套主席树,常数很大就是了。 树套树参考代码: /*-------------------------------- Code name: DynamicRanking.cpp Author: The Ace Bee This code is made by The Ace Bee --------------------------------*/ #in

  • 「ZJOI2013」K大数查询2020-01-23 23:53:45

    「ZJOI2013」K大数查询 传送门 整体二分,修改的时候用线段树代替树状数组即可。 参考代码: #include <cstdio> #define rg register #define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout) template < class T > inline void read(T&

  • 「POI2011」Meteors2020-01-23 23:53:07

    「POI2011」Meteors 传送门 整体二分,树状数组实现区间修改单点查询,然后注意修改是在环上的。 参考代码: #include <cstdio> #include <vector> #define rg register #define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout) using names

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

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

ICode9版权所有