![](https://img-blog.csdnimg.cn/20210527204405315.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法学习以及OJ题目原码
算法永不过时!
遇到有意思的题就更新上来~
朝花夕拾喵
这个作者很懒,什么都没留下…
展开
-
快速幂模板
一般的int ppow(int a, int b) { int ans = 1; for (int w = a; b;w*=w, b>>=1) if (b & 1)ans *= w; return ans;}带取模的int ppow(int a, int b, int mod) { int ans = 1; for (int w = a; b;w=(w*w)%mod, b>>=1) if (b & 1)ans *= w, ans %= mo原创 2021-10-15 14:53:07 · 95 阅读 · 0 评论 -
素数筛法(欧拉筛、埃氏筛)
文章目录一、埃氏筛1.原理:2.代码二、欧拉筛1.前言2.原理3.代码总结一、埃氏筛1.原理:质数的倍数不是质数。时间复杂度:O(nlog22n)O(nlog^2_2n)O(nlog22n)埃氏筛的时间复杂度不会证明,可戳别处2.代码int prm[255], prm_cnt;//存放素数的数组、素数个数bool iscompos[255];//true代表为合数,false代表素数数void make_prime(int n) { if (n <= 1)return; for原创 2021-10-04 14:28:17 · 238 阅读 · 0 评论 -
Educational Codeforces Round 115 (Rated for Div. 2) B题betset暴力解法
题目链接题意对于 n 个长度为 5 的 01字符串, 你需要把这n个字符串分成数量相等的两组。并且在每一组中选择一个位置(0~4总共5个位置),使这一组的字符串在该位置全为 1 ,且两组所选位置不同。分析测试案例数(1≤t≤104)(1 \leq t \leq 10^4)(1≤t≤104)每个测试点的字符串数量(2≤n≤103)(2 \leq n \leq 10^3)(2≤n≤103)假如枚举两个位置则 C52=10C^2_5 = 10C52=10,极限情况 10810^8108, 常数大可原创 2021-10-10 22:50:33 · 173 阅读 · 0 评论 -
Harbour.Space Scholarship Contest 2021-2022(2021.7.22 晚10:35开始的CF比赛) A、B题题解
题目链接题意分析:给定两个字符串 s t ,在 s 字符串中某一位置开始向右移动再向左移动,形成一个新字符串。问:能否构成 t 这样的字符串?AC代码:#pragma warning(disable:4996)#include<stdio.h>#include<iostream>#include<algorithm>#include<stdlib.h>#include<string>#define max(a, b) (a &原创 2021-07-23 12:11:52 · 202 阅读 · 0 评论 -
最短覆盖子串问题解析
问题描述:给定两个字符串 aaa bbb, 试求字符串 aaa 的一个字串 sss,使得 sss 满足该串包含 bbb 中出现的所有字符满足条件1使该串长度最小问题分析:遍历 bbb ,储存所有出现过的字符。用 l r 表示 sss 在的 aaa 中的两个端点。当 sss 未满足条件1时 r++ , 满足条件1时 l++并记录答案。例题洛谷 P1638 逛画展代码如下:#pragma warning(disable:4996)#include<stdio.h>co原创 2021-06-29 10:20:28 · 129 阅读 · 0 评论 -
洛谷P4933 大师 解题报告!
题目描述nnn 个数构成的数列 ana_nan ,问其中有多少个等差数列。n≤103,v≤2×104n \le 10^3 ,v \leq2 \times 10^4n≤103,v≤2×104注意等差数列的公差可以为负数。只有一个数时也视为等差数列输入格式第一行一个正整数 nnn。第二行 nnn 个非负整数 a[i]a[i]a[i] 。输出格式输出一个整数,表示美观的方案数模 998244353998244353998244353 的值。输入输出样例输入 813 14 6 20原创 2021-06-07 19:20:57 · 135 阅读 · 0 评论 -
洛谷P1631 序列合并解题报告
题目描述有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N2N^2N2个和,求这N2N^2N2个和中最小的N个。输入格式第一行一个正整数NNN第二行NNN个整数AiA_iAi, 满足Ai≤Ai+1A_i\le A_{i+1}Ai≤Ai+1第三行NNN个整数BiB_iBi , 满足Bi≤Bi+1B_i\le B_{i+1}Bi≤Bi+1【数据规模】对于50%的数据中,满足1≤N≤10001\le N\le 10001≤N≤1000;对于100%的数据中,满足1≤N原创 2021-06-07 00:03:36 · 255 阅读 · 0 评论 -
洛谷P2397 yyy loves Maths VI (mode)
用到了什么摩尔投票法233另外,这题可以明显看出scanf、cin、快读的时间差别。题目链接代码:#include<stdio.h>#define max(a, b) (a > b ? a : b)int read() { int w = 0, r = 0; char ch = getchar(); while (ch < '0' || ch >'9')w |= ch == '-', ch = getchar(); while (ch >= '0' &a原创 2021-05-27 21:41:36 · 84 阅读 · 0 评论 -
洛谷P2515[HAOI2021] 软件安装 解题报告!
经典树形背包加Tarjan缩点这是一个小链接代码如下:#pragma warning(disable:4996)//VS的毛病#include<stdio.h>#include<queue>#include<stdbool.h>#include<cstring>#define max(a, b) (a > b ? a : b)#define min(a, b) (a < b ? a : b)#define mem(a, sum)原创 2021-05-27 21:03:20 · 79 阅读 · 0 评论