自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 最通俗易懂的FWT变换讲解(快速沃尔什变换)

前言其实我还没有退役,又回来更新算法笔记啦~~我们知道 FFT 可以在 O(nlog⁡n)O(n\log n)O(nlogn) 的时间内求解 Ck=∑i+j=kAi×BjC_k=\sum_{i+j=k} A_i \times B_jCk​=∑i+j=k​Ai​×Bj​。而类似的,我们将求和符号中的加号换成其余的位运算符号,即得到了 FWT 。FWT 可以在 O(nlog⁡n)O(n\log n)O(nlogn) 的时间内求解:按位或运算 ∪\cup∪,Ck=∑i∪j=kAi×BjC_k=\sum

2024-06-20 21:31:19 426

原创 在edge/chrome中使用cph-submit实现Codeforces刷题一键提交代码

因为博主本人想在edge/chrome中使用cph-submit插件vscode中cph,实现一键将代码提交到Codeforces中但是只有firefox的插件另外两个比较麻烦,nodejs还有版本问题。写这篇文章有三个原因:网上暂且没找到firefox插件导入edge/chrome的方法博主个人感觉这个debug过程比较有意义也希望能帮助到其他人。省流:最终可用的版本如下,直接下载解压开发人员模式导入的流程可以见本文章节**“插件导入edge/chorme中”**

2024-06-13 23:08:19 933

原创 将Firefox插件导入Edge/Chrome中

因为博主本人想在edge/chrome中使用cph-submit插件vscode中cph,实现一键将代码提交到Codeforces中但是只有firefox的插件另外两个比较麻烦,nodejs还有版本问题。写这篇文章有三个原因:网上暂且没找到firefox插件导入edge/chrome的方法博主个人感觉这个debug过程比较有意义也希望能帮助到其他人。省流:最终可用的版本如下,直接下载解压开发人员模式导入的流程可以见本文章节**“插件导入edge/chorme中”**

2024-06-13 23:07:09 1444

原创 Steam下载游戏很慢?一个设置解决!

用steam下载发现巨慢。一个设置如下,速度翻10倍,希望能帮到你。

2024-06-09 01:36:41 323

原创 集美大学第14届蓝桥校选题解

本次比赛的出题表如下:计算 (homo)10=(114)5+(141)9+(198)10(homo)_{10}=(114)_5+(141)_9+(198)_{10}(homo)10​=(114)5​+(141)9​+(198)10​ ,其中 (x)y(x)_y(x)y​ 代表数字 xxx 是用 yyy 进制表示的。按权展开计算十进制结果,并求和。(114)5=(1×52+1×51+4×50)10=(34)10(114)_5=(1\times5^2+1\times5^1+4\times5^0)_{10}=(

2022-12-07 17:19:16 3198 1

原创 JMU第1届程序设计金秋赛题解

4514题意454545枚硬币在桌上,141414枚正面朝上,贝贝蒙住了你的眼睛,你无法通过触觉摸出硬币的正反面,现在贝贝要求你执行以下两种操作各一次(两种操作的顺序不限),使得最后左右两堆的硬币正面朝上的一样多:假设执行1操作时,将硬币分成了数量分别为a,ba,ba,b的两堆,其中1≤a≤22

2022-09-28 16:21:19 1386

原创 Edu Codeforce133 (D、F) DP、组合数学

为了方便陈述,若当前轮数要求的走的长度为k+ik+ik+i的倍数,我们称其为第k+ik+ik+i轮,而非第iii轮先考虑一个最暴力的做法,设状态dp[i][j]dp[i][j]dp[i][j]表示,表示走1,2,⋯ ,i1,2,\cdots,i1,2,⋯,i步能到位置jjj的方案数的总和,显然初始状态位于000位置,仅一种方案,即dp[k−1][0]=1dp[k-1][0]=1dp[k−1][0]=1考虑当前位置jjj,逆向思维枚举上一步走的距离为iii的倍数,也就是反向跳d×id\times id×i,其

2022-08-05 17:57:59 268

原创 2022JMU蓝桥国赛模拟赛

文章目录走马题目大意解题思路抉择吧 在苦与痛的深渊里题目大意解题代码美化字符串题目大意解题思路分糖果题目大意解题思路代码实现快递站题目大意解题代码汤神的积木题目大意解题代码两极反转题目大意解题思路代码实现互不攻击的车题目大意解题代码白嫖才最香题目大意解题代码Pot题目大意解题代码走马出题人:贝题目大意如果对于中国象棋中的“马”,放在坐标系中的(1,1)(1,1)(1,1)位置,限制马只能朝着右上方走(即任何时刻仅有两种走法)。例如马处于(1,1)(1,1)(1,1)时,马的一步只能沿xxx轴正

2022-05-18 17:52:53 906

原创 第46届ICPC东亚洲区域赛(昆明)B Blocks题解

特此声明:该文章中的代码和解法均来自博主cup-pyy,我只是对其代码添加了详细注解,以及部分思路的详细化,原文链接见:这里二维平面转为一维注意我们最多含有22个坐标,但是实际上只会有21*21个格子如何判断二维平面中的格子数量全部染黑?一维情况状态压缩十分容易,二维的情况将若干个一维拼接即可 bitset<500> t; //二维平面转换为一维 //虽然22个坐标 // 21 * 21个格子看看是否都能染满 .

2022-04-25 19:07:33 508

原创 AtCoder 137 C Distinct Numbers(博弈论)

AtCoder 137 C Distinct Numbers题意给定一个长度为n(2≤n≤3×105)n\left(2\le n\leq3\times 10^{5}\right)n(2≤n≤3×105)的严格递增的自然数序列A1,A2,⋯ ,AnA_1,A_2,\cdots,A_nA1​,A2​,⋯,An​现在有两个人在轮流进行如下操作:选择序列中最大数mxmxmx,使其变成一个小于mxmxmx的自然数,并且变化后需要满足:序列中没有相同的数。然后将由另一个人来对这个序列进行操作。直至一个人

2022-04-25 18:58:44 493

原创 第十三届蓝桥杯JAVAB组部分题解

非常nice,去年C++国赛填空题我全错喜提国三,今年javaB组填空题依旧全错,稳定发力(bushi试题 A: 星期计算已知今天是星期六,请问 202220^{22}2022 天后是星期几?答案:1用python跑出来结果为>>> (20 ** 22 + 6 ) % 7 + 11不过我个笨比考试的时候太急了,忘记第0天是星期六了,and比赛都开始了监考还在那边点名。。。试题 B: 山求[2022, 2022222022]中先单调不减,后单调不增的.

2022-04-09 16:42:19 2002 9

原创 集美大学第七届团体程序设计天梯赛第二场排位赛题解

目录赛事总结比赛形式验题L1L1 - 1 无职转生之转生成何大佬就要拿到ACMWF————『登峰造极』题目大意解题思路代码L1 - 2 复读机思路代码实现L1 - 3 无职转生之转生成何大佬就要拿到ACMWF————“陨落的天才”题目大意L1 - 4 死脑筋算法思路代码实现L1 - 5 最长公共子串题目大意出题报告解题思路代码实现L1 - 6 有色图题目大意出题报告解题思路代码L1 - 7 『谁在说谎』出题报告算法思路代码实现L1 - 8 饱了吗公司题目大意出题报告解题思路代码实现L2L2 - 1 咸鱼の带

2022-03-23 17:12:24 1782 1

原创 集美大学第七届团体程序设计天梯赛第一场排位赛题解

L1L1-1 I Say TingTing题目大意婷婷是谁!解题思路正确答案为D以下三种解题方法知道天梯赛总决赛于4月23号比赛知道婷婷是何大佬的女朋友枚举大法代码#include<stdio.h>int main(){ printf("D");}L1-2魂环极限出题人 : 赖题目大意:根据大小判断应该输出什么。测试点详情 :全都是随机random随机1~1e18的数字解题思路 if 小于 输出答案。 else if .

2022-03-09 17:31:55 1452 1

原创 Codeforces Round #774 (Div. 2)E题题解

Codeforces Round #774 (Div. 2)E. Power Board题目陈述有一个n×m(1≤n,m≤106)n\times m(1\le n,m\le10^6)n×m(1≤n,m≤106)的表格,第iii行jjj列的数为iji^jij,求表格中不同的数的个数resresres输入格式一行包含两个整数n,mn,mn,m输出格式表格中不同的数的个数resresres容易想到,第一行的所有数字都为111我们依次考虑,以2,3,5,72,3,5,72,3,5,7这样的质

2022-03-05 16:21:15 710

原创 pbds库学习笔记(优先队列、平衡树、哈希表)

pbds库(优先队列、平衡树、哈希表)目录pbds库(优先队列、平衡树、哈希表)前言概述priority_queue优先队列概述参数堆的基本操作的函数对比STL新增函数modify修改Dijkstra最短路径演示join合并与自定义仿函数类的结合使用tree平衡树概述参数基本操作的方法对比STL中新增的函数find_by_order(k):求平衡树内排名为`k`的值是多少order_of_key(x):求x的排名lower_bound(x):求大于等于x的最小值upper_bound(x):求大于x的最小

2022-02-09 23:05:30 6133 2

原创 Codeforces Round #765 (Div. 2) 部分题解D题

CodeForce1625D最大异或集合问题描述给定一个数组a[1-n],求解一个集合,使得集合内任意两个元素的异或值都不小于k输入格式第一行,包含两个整数n,kn,kn,k第二行,包含nnn个整数,表示数组a[1−n]a[1-n]a[1−n]0≤a[i]<230,2≤n≤3×105,0≤k<2300\le a[i]<2^{30}, 2\le n\le 3 \times 10^5,0\le k < 2 ^ {30}0≤a[i]<230,2≤n≤3×105,0≤k&

2022-01-21 17:26:55 410

原创 算法学习笔记(2):Trie树【字典树】

Trie树前言Trie树,又称字典树、前缀树。主要用于解决统计、排序和存储大量的字符串但是不仅限于字符串,比如一个数,它的二进制形式可以看成一个仅由0和1组成的字符串,如果一个trie仅由这些二进制的字符串组成,那么这棵树称为01trie树故有很多位运算(异或)的问题也可以用trie树解决指01tire树核心思想根节点为空,除根节点以外每个节点只包含一个字符从根节点到某一个有标记的节点,路径上经过的字符连接起来,为该节点对应的字符串为什么是有标记?比如我只有一

2022-01-21 17:25:42 165

原创 解决Android Studio中 Cannot access *** 报错

前言正常代码,然后突然就提示一个类找不到,提示Cannot access ***解决方法点击顺序File - Invalidate Cacher /Restart然后等项目重启完毕就解决了

2022-01-03 22:16:22 3675 1

原创 算法学习笔记(1):差分约束

差分约束问题类型描述给定nnn个变量和mmm个约束条件,如xi−xj≤ckx_i-x_j\leq c_kxi​−xj​≤ck​,让你求一组解,是的所有的约束条件均被满足。模型转换变形一下:xi≤xj+ckx_i\leq x_j + c_kxi​≤xj​+ck​容易发现,与最短路中的dis[v]≤dis[u]+wdis[v]\leq dis[u]+wdis[v]≤dis[u]+w非常相似如何理解?如果uuu与vvv之间有一条连边,那么div[v]div[v]div[v]的值,

2022-01-01 21:56:00 233

原创 JMU软件计组与汇编语言 期末大纲整理

整理不易,未经允许不得转载,博客链接:https://blog.csdn.net/Gh0st_Lx?spm=1011.2124.3001.5343第一章重点0:冯·洛伊曼体系冯·洛伊曼体系的三个特点1)采用二进制代码表示数据和指令,即信息的数字化2)采用存储程序工作方式,即事先编制程序,实现存储程序,自动、连续地执行程序3)由存储器、运算器、控制器、输入设备、输出设备等5大部件组成的计算机硬件系统重点1:一切数据和指令一切数据和指令都是二进制数运行时存放在内存中

2021-12-31 13:32:01 1331

原创 集美大学第十三届蓝桥校选题解

赛事总结签到正题压轴贝贝的数组划分题目大意大意,将一个nnn个元素的数组划分为kkk个子数组(元素下边连续,且不为空),每个子数组的值为其中所有元素的值的和。求所有子数组的值的按位与的最大值。出题报告测试点详情测试点1,T=5,n=10,1≤ai≤127T=5,n=10,1\leq a_i\leq127T=5,n=10,1≤ai​≤127,101010组测试用例kkk依次为1−101-101−10测试点2,T=10,n=10,1≤ai≤127T=10,n=10,1\leq a_i\

2021-11-17 19:28:32 5748 2

原创 集美大学第七届天梯赛校选题解

目录L1-8 『谁在说谎』出题者思路算法思路代码实现L2-1 ACM膜文化出题者思路算法思路代码实现L1-8 『谁在说谎』出题者思路原本我还想卡掉double的精度,直接比较总和long long,精度肯定比直接比较平均值来的高,后面思索了一下,还是没刻意去卡这题我设置了4个测试点不会真有人用“lbn”、“LBN”来表示a0a_0a0​对应的字符串?测试点1,基本正确,且不会被状态“lbn”、“LBN”卡掉,4分测试点2,全部正确,不会被long long 卡掉,10分

2021-10-20 18:23:39 2434 2

原创 Educational Codeforces Round 115 (Rated for Div. 2)部分题解

目录A题题目陈述思路代码实现B题题目陈述思路代码实现C题题目陈述思路代码实现D题题目陈述思路原题意:性质“或”代码实现拓展题意:性质"与"代码实现A题题目陈述大意:在一个2∗n2*n2∗n的长方形网格中,每一个叉点只有’0’或’1’,可以横着竖着斜着走,是否存在只经过0从左上角走到右下角的路径。思路两个数相与为0即代表有答案,如果不为0,说明两个格子都为1,比如不能通过。时间复杂度O(n)O(n)O(n)代码实现#include <bits/stdc++.h>#includ

2021-10-10 21:18:19 253 1

原创 Dijkstra堆优化(pbds版本priority_queue)

背景防止赛场上面被卡SPFA,且效率更高更稳定测试测试了STL的,和pbds的优先队列,在Dijkstra堆优化中谁更快对照实验,除了用的容器不同,其余代码段全部一致,保证了只受到STL和pbds影响,都不开O2,都用了快读,用了vector邻接表。题目链接:洛谷P4779 【模板】单源最短路径(标准版)STL,初始堆中只有一个元素(起点):141-252msSTL,初始堆中有n个元素:238-384mspbds,初始堆中只有一个元素(起点):62-110mspbds,初始堆中

2021-09-30 16:13:28 875

原创 CCPC.2017哈尔滨站-重现赛 题解BFHM

目录F题目陈述算法思路代码实现H题目陈述算法思路代码实现M题目陈述算法思路代码实现B题目陈述算法思路代码实现按照训练赛AC先后顺序来F题目陈述大意:构造一个permutationpermutationpermutation,使得pi≡0(mod(pi−pi−2))p_i \equiv 0 \pmod {(p_i - p_{i-2})}pi​≡0(mod(pi​−pi−2​))算法思路一个数mod−1mod-1mod−1或111总是为0构造1,n, 2, {n - 1}, 3 ,{n - 2}

2021-09-08 21:23:40 315

原创 NC601寻找520(DP)

题目陈述大意:给定一个字符串仅由’5’、‘2’ 、‘0’ 和‘?’组成,其中’?'可以代表任何一个字符,所有可能的字符串中,位置不同的为 “520” 的子序列共有多少个?算法一:朴素算法算法思路最暴力的想法,直接枚举“520”的所有可能第一层循环枚举5和?,第二层枚举2和?,第三层循环枚举0和?当然,此处枚举时,要注意’2’的位置一定得在‘5’的后面,‘0’得在‘2’的后面代码实现typedef long long LL; //简化声明定义long long class Solutio

2021-09-06 16:37:18 140

原创 NC600牛牛分蛋糕(二分)

题目陈述大意:给定两种若干数量的蛋糕和一些盘子,问所有的分法中,蛋糕数量最少的盘子中分到最多的蛋糕数量是多少。所有分法应该满足:同一个盘子不装有两种蛋糕、每个盘子都有蛋糕。算法一:朴素做法算法思路为了不多次重复冗余的文字,接下来我们约定,将蛋糕数量最少的盘子中分到最多的蛋糕数量称为ansansans。我们先这样分析,如果有xxx个盘子,只有一种蛋糕,数量为aaa,那么所有分法的ansansans就是a/xa/xa/x为什么?此处我们感性理解一下,取ansansans的时候,一定是所有盘子的最大

2021-09-02 21:47:03 176

原创 NC606 序列取反问题

题目陈述大意:给定一排牛牛,一开始都是不快乐的牛牛,每次等概率选择一个当前不快乐的牛牛,将[i,a[i])[i,a[i])[i,a[i])中的牛牛都变为快乐,最后所有的牛牛都变为快乐的在modmodmod mmm意义下,的期望步数是多少?前置知识这题是一个ACM竞赛中很经典的树上期望问题,在该模型上做出一定改动的题目相信我讲完这个树上期望问题的模型,大家会更加容易理解模型给定一颗树,然后每次随机删除一个节点,删除它的同时他的子树都会消失,每次删除的节点等概率,问删除掉所有节点的期望步数思路

2021-08-30 13:01:23 113

原创 整除分块(算法证明+复杂度证明)

题目陈述大意:求解下面的表达式的值∑i=1n⌊ni⌋\sum_{i=1}^n \lfloor \cfrac{n}{i}\rfloori=1∑n​⌊in​⌋算法一:朴素算法算法思路暴力算法,枚举每个iii,计算其对答案的贡献,遍历所有的iii即可代码实现class Solution {public: int work(long long n) { long long ans = 0; for (int i = 1; i <= n ; i

2021-08-27 23:30:51 514 2

原创 CF172Div1C Game on tree(树+期望)

题目原题链接:点这里题目陈述大意:给定一颗树,然后每次随机删除一个节点,删除它的同时他的子树都会消失,每次删除的节点等概率,问删除掉所有节点的期望步数算法思路首先我们考虑这样一个问题,对于一个节点,它什么时候会对我们的答案有贡献?对于一个节点,在一整个完整的操作过程中,无非是有被选到和没有被选到,分别对应于000和111,我们用aia_iai​来表示这个值我们假设第iii个点被选择到的概率为pip_ipi​,那么最后它对答案的贡献Ei=0∗(1−pi)+1∗pi=piE_i=0*(1-p_i

2021-08-27 12:38:01 174

原创 NC655 牛牛算题

目录题目陈述算法一:朴素算法算法思路代码实现复杂度分析算法二:数学推导+整除分块前置知识:整除分块算法思路关于不用逆元复杂度分析代码实现题目陈述大意:给定一个正整数nnn,充当被除数。对于p,1≤p≤np,1 \leq p \leq np,1≤p≤n,充当除数,求所有ppp的商与余数的乘积之和,即∑k∗m\sum k*m∑k∗m,答案取模modmodmod算法一:朴素算法算法思路根据题意,一个很显然的算法,就是对于每一个ppp分别计算出他的k,mk,mk,m然后计算k∗mk*mk∗m代码实现

2021-08-26 16:21:37 162

原创 Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))

D1 题题目陈述题目大致就是对于1 n1~n1 n每个位置都可以转移到比他小的位置,两种转换方式,一种是直接转移1−(n−1)1 -( n-1)1−(n−1),一种是转移到⌊nz⌋,z∈[2,n]\lfloor \cfrac{n}{z}\rfloor,z \in [2,n]⌊zn​⌋,z∈[2,n],有n个位置,总有有多少种方案,答案取模m算法思路既然涉及到向下取整,又有区间,这不很显然?整除分块!!dp的思想来看,1−(x−1)1-(x-1)1−(x−1)的任何一个状态

2021-08-25 11:02:11 507 5

原创 P3217 [HNOI2011]数矩形

题目给定若干个点,从这些点里面选取4个点构成一个矩形,使得矩形面积最大原题链接:点这里算法思路思路对于一个矩形,给定他的两条对角线一定长度相等,且有,中点相等故我们可以通过枚举两个点,得到对角线,再排序过后,对相同的长度,相同中点的对角线处理知道对角线的向量,即可求出矩形的面积实现细节本题为了避免出现浮点数,用LL代替double,我们把所有的中点都乘以2,这样就可以只用LL表示中点,避免了精度带来的误差以及计算距离的时候,用平方来表示原来的数该题的关键就是自定义排序,让相同

2021-08-18 11:05:00 108

原创 P3744 李彬的几何

题目给定一个凸多边形,每个点最大可以移动的距离为ddd,让他变得不“凸”,求解最小d算法思路实际上,就是求解一个点到,他相邻两个点直线的距离的一半点移动0.5h0.5h0.5h,直线移动0.5h0.5h0.5h,然后这样就是水平的了做一个无穷小的偏移量,他就是凹的了最后需要实现的就是点到直线的距离了叉积/模长即可求得结果代码实现//#pragma GCC optimize("O3")#include <bits/stdc++.h>#include <unord

2021-08-18 09:25:52 99

原创 洛谷P6505 Run Away[计算几何][分治]

题目原题链接:点这里思路将一个点扩成一个圆二分圆的半径,如果当前圆能覆盖矩形的四个角,说明它能覆盖矩形如果不能,则将矩形分割为四个小矩形,递归判断递归边界l < eps && r < eps,这种情况可以把l,r看为一个点,就说明必然没有圆能覆盖到了,返回false代码实现#pragma GCC optimize("O3")#include <bits/stdc++.h>#include <unordered_map>#inclu

2021-08-17 22:04:54 118

原创 [NOI2005] 月下柠檬树 (自适应辛普森积分)

题目原题链接:点这里总体思路–>问题转化先将原本的柠檬树分解成为多个圆台,再单独看圆台的投影一个圆在地面的投影,是等比例的,而一条竖线的投影长度d=htan⁡αd=\cfrac{h}{\tan \alpha}d=tanαh​,这样也就得到了整棵树在平面上面的投影问题转换为面积并,显然自适应辛普森积分套上去就行了还有一个易错的点,就是函数F(x)F(x)F(x),每次找的时候都要O(n)O(n)O(n)找一遍最大值,因为大的影子可能会覆盖掉前后很多区间小的影子。(PS:

2021-08-17 20:55:08 313

原创 Codeforces Round #737 (Div. 2)部分题解

目录A题题目陈述思路and证明B题题目陈述思路C题陈述思路预处理平局方案数n为奇数n为偶数A题题目陈述陈述:将一个数组分成两个子序列,求两个子序列单独平均值的和的最大值思路and证明证明如下:A1,A2,A3…An(没有最大值)Amax现在从第一个集合选一个数k到第二个集合if k>avg(第一个集合)显而易见,第一个集合的avg1减少,第二个avg2也减少,总体必然减少else 第一个集合ave增加,第二个集合ave2减少,需要证明:增加的不如减少的多如下图,(解析法反推回来

2021-08-10 03:10:48 424 2

原创 NC631 牛牛的冰激凌

题目描述大意:公司让你负责m个冰激凌的运输。运输车的冷库只够装n个冰激凌,一次运输需要t分钟,返回也需要t分钟。每个冰激凌制作好有一个时间。求最短运输完所有冰激凌的时间,以及在时间最短的情况下最少运输次数。算法一:动态规划思路引入(此处默认已经将c数组排序过了)一个很直观的思路,如果我当前有n个冰淇淋,并且我人已经在工厂了,我肯定是立马送出因为如果我在原地还等待,就算制作出了n+1个冰淇淋,我也依旧不能运输出去因为冰淇淋没有差别,如果第i个冰淇淋和第i+1个都生产出来了,所以我们没必要选择第

2021-07-23 19:41:53 126

原创 NC630 牛牛摆放花

题目陈述大意:n朵花排成一圈,最小化相邻两朵花高度差的最大值,输出最大值。约定:将所求值成为丑陋值,即要求最小的丑陋值算法一:暴力做法算法思路因为已经知道了有n个数字,我们只需要生成这n个数字的所有排序然后依次计算每个序列的丑陋值,依次更新ans,求出最小的即可代码实现class Solution {public: int arrangeFlowers(int n, vector<int>& a) { sort(a.begin(),a.e

2021-07-22 21:46:51 433

原创 剑指offer28 数组中出现次数超过一半的数字

目录算法一:哈希映射算法思路复杂度分析使用map使用unordered_map代码实现算法二:排序算法思路代码实现C++Python3复杂度分析算法三:性质构造法算法思路代码实现复杂度分析算法一:哈希映射算法思路开一个map容器或者是unordered_map容器来记录一个数出现的次数,最后在逐个访问容器中的元素,找到比⌊len2⌋\lfloor \cfrac{len}{2} \rfloor⌊2len​⌋大的那个就行了复杂度分析值得注意的是map和unordered_map内嵌数据结构是不同

2021-07-21 17:24:09 88

算法竞赛中的第一类斯特林数“同一行”的C++代码实现

该代码可以在O(n log n)的时间内求解“同一行”的第一类斯特林数。 第一类斯特林数是组合数学中的一类整数数列,用于表示将n个物体划分成k个循环排列的方法数。这些数以数学家詹姆斯·斯特林(James Stirling)的名字命名。 给定一个正整数n,表示要划分的物体的数量,以及一个正整数k,表示要划分成的循环排列的数量,第一类斯特林数 {n \atop k}(有时也写作c(n, k)或Stirling(n, k))表示将这n个物体划分成k个循环排列的方法数。 第一类斯特林数满足以下递推关系: {n \atop k} = (n-1) * {n-1 \atop k} + {n-1 \atop k-1} {n \atop 1} = (n-1)! (当 n ≥ 1 时) {0 \atop 0} = 1 第一类斯特林数在组合数学、概率论、统计学等领域有广泛的应用,例如在研究排列组合问

2024-02-12

组合数学中的第二类斯特林数“同一列”的C++代码实现

该代码用于求解“同一列”中的斯特林数。使用多项式算法优化到O(n log n)。 第二类斯特林数是组合数学中的一类整数数列,用于表示将 n 个物体划分成 k 个非空循环排列的方法数。这些数以数学家詹姆斯·斯特林 (James Stirling) 的名字命名,是集合划分的一种。第二类斯特林数通常用 S(n, k) 来表示。 给定一个正整数 n,表示要划分的物体的数量,以及一个正整数 k,表示要划分成的循环排列的数量,第二类斯特林数 S(n, k) 表示将这 n 个物体划分成 k 个非空循环排列的方法数。 第二类斯特林数满足以下递推关系: S(n, k) = k * S(n-1, k) + S(n-1, k-1) S(n, 1) = S(n, n) = 1,其中 1 ≤ k ≤ n

2024-02-12

计算机中的第二类斯特林数“同一行求解”的C++代码实现

该代码用于求解“同一行”中的斯特林数。使用多项式算法优化到O(n log n)。 第二类斯特林数是组合数学中的一类整数数列,用于表示将 n 个物体划分成 k 个非空循环排列的方法数。这些数以数学家詹姆斯·斯特林 (James Stirling) 的名字命名,是集合划分的一种。第二类斯特林数通常用 S(n, k) 来表示。 给定一个正整数 n,表示要划分的物体的数量,以及一个正整数 k,表示要划分成的循环排列的数量,第二类斯特林数 S(n, k) 表示将这 n 个物体划分成 k 个非空循环排列的方法数。 第二类斯特林数满足以下递推关系: S(n, k) = k * S(n-1, k) + S(n-1, k-1) S(n, 1) = S(n, n) = 1,其中 1 ≤ k ≤ n

2024-02-12

ACM算法竞赛中第二类斯特林数O(n^2)求解代码

第二类斯特林数是组合数学中的一类整数数列,用于表示将 n 个物体划分成 k 个非空循环排列的方法数。这些数以数学家詹姆斯·斯特林 (James Stirling) 的名字命名,是集合划分的一种。第二类斯特林数通常用 S(n, k) 来表示。 给定一个正整数 n,表示要划分的物体的数量,以及一个正整数 k,表示要划分成的循环排列的数量,第二类斯特林数 S(n, k) 表示将这 n 个物体划分成 k 个非空循环排列的方法数。 第二类斯特林数满足以下递推关系: S(n, k) = k * S(n-1, k) + S(n-1, k-1) S(n, 1) = S(n, n) = 1,其中 1 ≤ k ≤ n 第二类斯特林数的性质包括: S(n, 1) = S(n, n) = 1,表示将 n 个物体划分成 1 个或 n 个循环排列的方法只有一种,即它们自身。 S(n, n-1) = 组合数(n, 2),表示将 n 个物体划分成 n-1 个循环排列的方法数等于 n 个物体的二元组合数。 第二类斯特林数的求和恒等式:Σ(k=1 to n) S(n, k) = n!,表示将 n 个物体划分成任意

2024-02-12

ACM算法竞赛中的高精度加法FFT加速版

在高精度加法中,我们将两个大整数表示为多项式形式,其中每个多项式的系数对应于整数的各个位数。然后,我们通过FFT算法计算这两个多项式的离散傅里叶变换,得到它们在复数域上的点值表示。 接着,我们将这两个多项式在复数域上的点值表示进行逐项相乘,并使用逆FFT算法计算相乘后的多项式的逆离散傅里叶变换,得到其在系数域上的表示。 最后,我们从逆FFT得到的结果中提取系数,即相加后的整数的各位数字。需要注意的是,在提取系数时可能需要进行四舍五入或者向上取整操作,以保证结果的精度。 通过以上步骤,我们可以使用FFT实现高精度加法,同时保证运算效率和结果精度。

2024-02-12

ACM算法竞赛中的杜教筛的C++代码实现

杜教筛是一种用于解决数论问题的算法。它主要用于计算在给定区间内数的质因数个数之和。该算法的基本思想是结合了区间筛和积性函数的性质,在一定范围内高效地计算出积性函数的前缀和。 具体来说,杜教筛的步骤包括: 初始化:设定一个范围 [1, n] 和一个积性函数 f(x)。 筛选:使用欧拉筛法或类似的方式筛选出 [1, n] 范围内的所有质数,并将它们标记出来。 积性函数前缀和:从小到大遍历每个数 i,计算出 f(i) 的前缀和,即 prefix[i] = ∑[j=1 to i] f(j)。 计算区间和:对于给定的区间 [l, r],可以利用前缀和数组 prefix[] 计算出区间内 f(x) 的和,即 ∑[i=l to r] f(i) = prefix[r] - prefix[l-1]。 杜教筛算法的时间复杂度为 O(n log log n),其中 n 为给定范围的长度。因此,它在解决一定规模的数论问题时具有较高的效率,常被用于算法竞赛中解决相关问题。

2024-02-12

ACM算法竞赛中快速傅里叶变换的C++代码实现

快速傅里叶变换(FFT)是一种高效计算离散傅里叶变换(DFT)的算法。DFT是一种在信号处理和数字信号处理领域中广泛使用的工具,用于将一个离散序列(通常是时间或空间上的采样)转换为其在频域的表示,即频谱。 FFT算法通过分治法和对称性,将DFT的计算复杂度从O(n^2)降低到O(n log n)。它的基本思想是将长度为n的序列分成两个长度为n/2的子序列,然后递归地对这两个子序列进行DFT计算。通过利用对称性质,避免了大量的重复计算,从而加速了计算过程。 FFT算法的步骤可以简单概括如下: 如果输入序列长度为1,则直接返回。 将输入序列分成偶数索引和奇数索引两个子序列。 递归地对这两个子序列进行FFT计算。 合并这两个子序列的FFT结果,得到整个序列的FFT结果。 FFT算法在数字信号处理、图像处理、通信系统等领域有着广泛的应用,因为它能够高效地处理大规模数据并且具有良好的数值稳定性。

2024-02-12

ACM算法竞赛中大步小步算法的C++实现

大步小步算法是一种解决离散对数问题的方法。该问题描述为,给定两个整数 g 和 h,以及一个素数 p,要找到满足 g^x ≡ h (mod p) 的整数 x。这个问题在数论和密码学中很常见。 该算法的基本思想是先计算并存储一些中间结果,然后利用这些结果来快速地找到满足条件的 x。具体步骤如下: 初始化:给定 g,h,p,计算一个合适的整数 m,通常取 m = ⌈√p⌉。 小步:计算并存储 g^j mod p 的值,其中 j 的范围是 0 到 m-1。 大步:计算 g^(-m) mod p 的值,并记为 g^m mod p。 搜索:对 i = 0, 1, 2, ...,计算 hg^(im) mod p 的值,并在小步中存储的结果中查找是否存在相等的值。如果存在,则找到满足条件的 x。 大步小步算法的时间复杂度是 O(√p),相比朴素的暴力搜索 O(p) 而言,更加高效。这使得它能够处理更大规模的输入,在解决离散对数问题时有着很实用的应用价值。

2024-02-12

谷歌浏览器Chrome在线安装包

Chrome是一款由Google开发的免费网络浏览器,它是目前全球使用最广泛的浏览器之一。下面是Chrome的一些主要特点和功能: 跨平台性:Chrome可在多种操作系统上运行,包括Windows、macOS、Linux和移动操作系统Android和iOS。 快速高效:Chrome以其快速的页面加载速度和高效的性能而闻名,采用了多进程架构,使得每个标签页都在独立的进程中运行,提高了浏览器的稳定性和安全性。 简洁界面:Chrome拥有简洁直观的用户界面,包括地址栏(称为“地址栏”或“搜索栏”)、书签栏和标签页,使用户可以轻松浏览互联网。 安全性:Chrome致力于保护用户的隐私和安全,包括内置的安全浏览功能,可检测和阻止恶意网站和下载。 个性化:用户可以通过Chrome Web Store下载并安装各种扩展程序和主题,以定制和增强浏览器的功能和外观。 同步功能:Chrome可与用户的Google账户同步,包括书签、浏览历史、密码等数据,使用户可以在不同设备之间同步并访问这些数据。 开发者工具:Chrome提供了强大的开发者工具,包括调试工具、性能分析器、元素检查器等,方便开

2024-02-10

mingw64在线安装包

MinGW和MinGW-W64都是用于Windows平台的轻量级GNU工具链,用于开发和编译C和C++程序。 MinGW(Minimalist GNU for Windows)是一个32位的GNU工具链,它提供了一套基于GNU的开发环境,包括GCC编译器和一些GNU库,可以用来编译Windows下的C和C++程序。但MinGW只支持32位程序的编译。 MinGW-W64是一个64位的GNU工具链,是MinGW的升级版,原本它是MinGW的分支,后来成为独立发展的项目,它支持同时编译32位和64位程序。它包括了一系列的GNU库和工具,例如GCC、Binutils、GDB等,还支持一些实用工具和库,如OpenMP、MPI等。 总的来说,MinGW-W64可以看作是MinGW的升级版,它支持更多的编译选项和更多的库,可以编译出更加高效和安全的程序。 另外,MinGW-W64原本是从MinGW项目fork出来的独立的项目。MinGW 早已停止更新,内置的GCC最高版本为4.8.1,而MinGW-W64目前仍在维护,它也是GCC官网所推荐的。

2024-02-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除