首页 > TAG信息列表 > 1000010

原根

我也不知道为什么我求原根的板子都没打就来学ntt( 好吧其实知道原根是啥就行 阶 定义:若 \(\gcd(a,n)=1\) ,则满足 \(a^{x}\equiv 1 \pmod n\) 的最小正整数 \(x\) 称为 \(a\) 模 \(n\) 的阶,记作 \(\text{ord}_n(a)\) 。 性质: \(a,a^2,a^3,\cdots,a^{\text{ord}_n(a)}\) 在模 \(n\)

BUPT 2021 Winter Training #12

链接:https://vjudge.net/contest/481673#overview A - Natives 水题略 D - Exam registration 题意 n天之中,每天有\(a_i\)人考试,当天考试人数上限为\(b_i\)人。当前情况可能不合法,即存在\(a_i\geq b_i\).调整考生的考试时间来让整个考试安排合法,并且使得考试天数变动最大的学生变

题解 - P1204 [USACO1.2]挤牛奶Milking Cows

很水的一道题,但我水了一个小时。。。太弱了啊。 #include <iostream> using namespace std; bool ar[1000010]; int main() { int n,l,r,MAXRR = 0,MINLL = 1000010; cin >> n; while(n--) { cin >> l >> r; MAXRR = max(MAXRR,r); MINLL = min(MINLL,l); for(

洛谷 P3375 【模板】KMP字符串匹配

地址 https://www.luogu.com.cn/problem/P3375 解法 KMP模板 #include<iostream> #include<cstring> using namespace std; const int N = 1000010, M = 1000010; int n, m; int ne[N]; char s[M], p[N]; int main() { std::cin >> (s + 1) >> (p + 1

分块,单调栈--Water Balance

E. Water Balance 类似于单调栈的思想,分块巧妙 sum数组记录每一段的平均值,l数组记录每一段的长度 p每次加着走。 因为后面的sum[]还会更新,所以每次合并区间是更改的p-1 #include<iostream> #include<cstdio> #include<string> #include<cmath> #include<cstring> #include<al

YbtOJ 背包问题课堂过关 例3 宝物筛选【二进制拆分】【01背包】

思路 这道题一看是多重背包,直接交T飞。 于是就用二进制拆分把宝物拆分成几个宝物,以空间换时间,然后就变成了01背包。 代码 #include<iostream> #include<cstdio> using namespace std; int n,W,v[1000010],w[1000010],s[1000010],f[1000010]; int a[100010],b[100010],tot;

CF427C题解

Description 有一张带点权有向图,你要在其中修建若干个检查站,使得对于每一个点 \(p\) ,都有 \(\geq 1\) 个检查站,满足: 存在一条从这个检查站出发到点 \(p\) 的路径; 存在一条从点 \(p\) 出发到这个检查站的路径。 求出修建检查站的点权和的最小值,以及当点权和有最小值时的修建方案数

【CSP】201809-2 买菜

#include <iostream> #include <cstdio> using namespace std; int t[1000010]; int n, x, y, mx = 0, cnt = 0; int main(){ cin >> n; for (int _ = 0; _ < 2*n; _++){ cin >> x >> y; if (y > mx) mx = y;

题解 P1144 【最短路计数】

这道题用一次SPFA就可以过了。在求最短路的同时,对答案进行统计即可。 实现: \(dis_i\)表示从1到\(i\)的最短路(实在还是不懂的话看程序吧)。 当\(dis_i>dis_j+1\)时,直接令\(ans_i=ans_j\)即可。 当\(dis_i=dis_j+1\)时,那么到\(i\)的路径就可以多加上\(j\)的路径,即\(ans_i=ans_i+ans

5.25每日一题题解

E2 - String Coloring (hard version) 题目链接:https://codeforces.com/problemset/problem/1296/E2 涉及知识点: 上升子序列/思维 solution: 首先,假如当前这个数和前面的数不同的话,那么我们可以将这个数移动,直到移动到和相同的数相邻为止 也就是说它可以变到类似0000111112222

ZJNU 1365 - Window--中级

每次都寻找长度为k的区间内的最小值显然很容易超出时间限制 所以可以把窗户看作一个数量固定的队列 每次观察入列与出列的元素对答案贡献如何,以更新答案 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 int tmp[1000010],max[1000010]; 6 int gmax(int i,int k)

不要62 HDU2089

  解题思路: 对于这道题,猛一看到脑袋里出现的就是暴力的做法,当然不能这样,会TLE。 打表是一定要打的。但是如何打的优美就是一个值得思考的问题了。这里我了解到一个很好的找数字里面有无62或4的方法。 我们可以将数字 n 用 itoa 函数转换成字符串,然后用查询子串的方法找 n 中是否

[洛谷P1972][题解][SDOI2009]HH的项链

别碰我! 自己还是太蒟了…… 看了好久,最后抄参考题解打出来的…… 前面的可能影响后面的,所以按照询问右端点排序 这时候维护一个前缀和数组就可以了, 那么问题又来了,去重? 可以这样,从前往后枚举,如果被加过了就在前面去掉 具体看代码(题目毒瘤导致卡常卡了好几遍):   1 #include<bits/

数论训练之一

http://www.codevs.cn/problem/3223/ L,R的范围太大了,不可能直接筛素数 但考虑到R-L的范围在能承受的范围内, 这时候就要用到 区间筛: 主体思想与其他筛法一致, 但一般题目中数据范围比较大(L<R<=10^12),但也有个利于我们的限制条件(R-L<=10^6) 那就很简单了,根据我们熟知的理论, R以内的

2019.9.24 csp-s模拟测试51(a) 反思总结

T2:Function 看到题目里的递推式,莫名其妙先画了个网格,横x轴纵y轴。 然后发现第一排是a1的各个倍数,第一列是ai自己。然后根据相邻两个a的大小关系好像可以推路径。 然后写暴力打了个表,按普通的行列输出,发现自己这部分想麻烦了。似乎前面小的ai可以斜着连过来覆盖现在的ai,一列会分段

[模板]最近公共祖先LCA

题目:传送门   倍增求LCA模板 code: #include<bits/stdc++.h>#pragma GCC optimize(3)using namespace std;int n,q,a,b,tot,m;int nxt[1000010],head[1000010],ver[1000010],dep[1000010],f[1000010][21];//设f[x,k]表示x的2^k辈祖先,即从x向根节点走2^k步到达的节点inline int r

Luogu P1114 “非常男女”计划/Luogu P2697 宝石串

Luogu P1114 “非常男女”计划/Luogu P2697 宝石串 (感觉我最近很爱做双倍经验的题啊) 使\(d\)等于第\(i\)个位置男生数(绿宝石数)减女生数(红宝石数)的差值。 那么差值相等的两个位置之间的人(宝石)是满足相等的。 所以找到在差值相等情况下最左边和最右边的位置。 特别要注意要把\(0\)的

洛谷 P1073 最优贸易 题解

题面 大家都是两遍SPFA吗?我这里就一遍dp啊; 首先判断对于一个点u,是否可以从一号点走到这里,并且可以从u走到n号点; 对于这样的点我们打上标记; 那么抛出水晶球的点一定是从打上标记的点中选出一个;(自己可以理解一下) 然后跑一遍dp,dp[i]表示从点1到点i的若干条路径中,所经过的点的权值最

[bzoj4026]dC Loves Number Theory_主席树_质因数分解_欧拉函数

dC Loves Number Theory 题目大意:dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯竭的水题资源。 给定一个长度为 n的正整数序列A,有q次询问,每次询问一段区间内所有元素乘积的φ(φ(n)代表1~n 中与n互质的数的个数) 。由于答案可能很大,所以请对答案 mod 10^6

斜率优化总结

考虑如下$dp$: $dp(i)=max/min(A(i)+B(j)+C(i)D(j))$ $(j < i)$ 其中,A(i),C(i)只与i有关,B(j),D(j)只与j有关。 括号里有与i,j同时有关的项,导致单调队列优化失效,但是如果这样的项只有一个可以采用斜率优化。方法如下: 将此dp方程转化为$dp(i)-A(i)=max/min(B(j)-C(i)(-D(j)) )$的形式

OKR-Periods of Words

题面 标准kmp 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 char a[1000010]; 8 int n,fail[1000010]; 9 10 int main(){11 scanf("%d",&n);12 scanf("

P1199 三国游戏

P1199 三国游戏 题解 这是一道贪心题       代码 #include<bits/stdc++.h>using namespace std;int cnt,n,mp;bool vis[1000010];struct node{ int x; int y; int w;}jiang[1000010];bool cmp(node x,node y){ return x.w >y.w ;}int main(){ scanf("%d",

KMP算法

luogu P3375 #include<iostream> #include<cstdio> #include<cstring> using namespace std; char s[1000010], t[1000010]; int nxt[1000010], m, n; int main() { scanf("%s%s", s+1, t+1); //用getchar和getline会神

浙江省赛-Welcome Party

题目大意:有n个人m个关系,每一对关系代表这两人认识,关系不具有传递性,现在你要安排这n个人进入一个舞会,如果第i个人进入了舞会大厅但是发现没有一个认识的人,那就会不高兴。问你怎么安排顺序这n个人进入舞会大厅,使得不开心的人数最少。如果有多种方案,输出字典序最小的方案。 思路:首先用

【CH1401】兔子与兔子

hash的入门题,通过hash我们可以在O(1)的时间里判断一个字符串的任意子串是否相等,恰好符合本题题意。 设计hash函数f[i]存储字符串s第1~i的子串的哈希值。显然存在f[i]=f[i-1]*131+(s[i]-'a'+1). 有了f数组,就可以求出任意子串的哈希值,因此我们就可以判断任意子串是否相等。 若要求字