acm
acm竞赛的一些知识,算法
abysswatcher_1
这个作者很懒,什么都没留下…
展开
-
leetcode力扣(9.回文串(不使用字符串的算法))
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-n原创 2020-05-09 20:51:35 · 178 阅读 · 0 评论 -
leetcode力扣(1.两数之和,2.两数相加,3.无重复字符的最长字串)
1.两数之和题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。链接:https://leetcode-cn.com/problems/two-sum哈希表法将 nums 中的元素值当下标,nums的下标当值存储在 hash 数组中 ...原创 2020-05-05 22:31:49 · 197 阅读 · 0 评论 -
set,vector
1原创 2020-02-19 20:08:26 · 781 阅读 · 0 评论 -
ACM.map
基本含义map翻译为映射,是STL中的常用容器。其实,数组就是一种映射,比如:int a[100];就是定义了一个int到int的映射。而a[5]=25;就是把5映射到25。数组总是将int类型映射到其它基本类型(称为数组的基类型),这同时也带来了一个问题,有时候我们希望把string映射成一个int,数组就不方便了。这时就可以使用map,map可以将任何基本类型(包括STL容器)映射到任何基本...原创 2020-02-17 22:54:37 · 494 阅读 · 0 评论 -
ACM.大一寒假2.15考试
机器人Problem:ATime Limit:1000msMemory Limit:65535KDescription机器人Bo很聪明,会做许多事情。惟独对自然数的理解与人类不一样,它是从右往左读数。比如,它看到123时,会理解成321.让它比较23与15哪一个大,它说15大。原因是它的大脑会以为是32与51在进行比较.再比如让它比较29与30,它说29大。 当然对于像90,它会把它当成...原创 2020-02-16 12:15:42 · 254 阅读 · 0 评论 -
ACM.质因数分解
唯一分解定理任意一个大于0的正整数都能被表示成若干个素数的乘积且表示方法是唯一的; 整理可以将相同素数的合并;可以得到 公式————n = P1^a1 * P2^a2 * …………* (P1 < P2 < ……Pn);...原创 2020-02-15 00:27:28 · 1387 阅读 · 1 评论 -
ACM.素数筛
一.埃氏筛筛法的思想是去除要求范围内所有的合数,剩下的就是素数 了,而任何合数都可以表示为素数的乘积,因此如果已知一 个数为素数,则它的倍数都为合数。合数的倍数一定会在筛素数倍数时候被筛掉,所以只筛素数就好,只把质数的 数筛掉 ,就是找到一个质数,把它的倍数全部标记为合数。const int N=1e7+1;int prime[N];int b[N];int cnt=0,max1=1e7...原创 2020-02-14 23:19:43 · 1084 阅读 · 0 评论 -
ACM.优先队列
优先队列种比较函数的写法。可以通过重载“<”操作符来重新定义比较规则,优先队列中元素的比较规则默认是按元素的值从大到小排序;切记:从小到大排序采用“>”号;如果要从大到小排序,则采用“<”号。可写作:bool operator < (const node &s1,const node &s2){return a.sum>b.sum;//表示...原创 2020-02-13 19:52:10 · 618 阅读 · 0 评论 -
ACM.队列
队列题目一.原创 2020-02-13 19:08:04 · 934 阅读 · 0 评论 -
ACM.基础题目——寒假培训
28的因子Problem:ATime Limit:1000msMemory Limit:65535KDescription我们都知道28的因子中含有4和7,而某些人偏爱数字4和7;例如数字:747,4,7747,4,7是兴安黑熊喜欢的数字,而476,5,27476,5,27则不是。对于给定的数字n,能否找出各个数位上数字和为n的最小的兴安黑熊喜爱的数字。如果找到则输出这个最小数, ...原创 2020-01-12 19:00:43 · 4212 阅读 · 0 评论 -
ACM.二分查找
二分,分的是答案,直接在答案在的区间范围中二分,分出一个值,就判断是不是答案,并进行转移如果已知候选答案的范围(min,max)(单调有序),有时候我们不必通过计算得到答案,只需在此范围内应用“二分”的过程,逐渐靠近答案(最后,得到答案)!通过二分的方法,大幅度地跳过一片没必要的比较和选择。一.二分查找二分法求零点,把区间折半来找零点,虽然找不到具体的零点值但是可以确定大体零点的一个范围,...原创 2020-01-11 16:14:26 · 1241 阅读 · 0 评论 -
ACM.快速幂取模
给你一个数a,让你求其b次连乘后的结果当b很小时,一般的循环算法可以解决这个问题(O(B)),但是当b较大时呢要知道1e18以上,就会long long int 也可能会溢出而在数论方面这些数又该如何表示?怎样存储?所以在此我们定义一个模数mod来代替输出即a^ b=k1mod+t即t=a^b%mod性质1:(a+b)%m=(a%m+b%m)%m性质2:(ab)%m=(a%m*b%m...原创 2020-01-11 13:59:36 · 367 阅读 · 0 评论 -
ACM.GCD与LCM
欧几里得算法取模运算的运算规则(a + b) % p = (a % p + b % p) % p(a - b) % p = (a % p - b % p) % p(a * b) % p = (a % p * b % p) % pa ^ b % p = ((a % p)^b) % p又名辗转相除法代码实现过程1非递归写法int gcd(int a,int b){int r=a%...原创 2020-01-11 13:48:28 · 536 阅读 · 0 评论 -
ACM.二进制枚举
一.二进制运算算数位运算:1、与(&):对于指定的两个数A=60(0011 1100)B=13(0000 1101)执行一下操作 A&B=12(0000 1100)就是对二进制每一位进行了一次与操作,同为1,结果为1,否则为02、或(|):对于指定的两个数A=60(0011 1100)B=13(0000 1101)执行一下操作 A|B=61(0011...原创 2020-01-09 13:11:55 · 921 阅读 · 0 评论 -
ACM.暴力枚举
#有一类问题可以采用一种盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不符合要求的,保留那些符合要求的,这种方法叫枚举算法。暴力枚举适用于数据较少的题目。...原创 2020-01-08 23:04:35 · 643 阅读 · 0 评论 -
ACM.结构体排序和桶排序
#结构体排序##sort函数sort是c++自带函数复杂度 n*log(n)包含在头文件#include的c++标准库里函数有三个参数1.要排序的数组的起始地址2.数组的结束地址3.第三个参数是排序的方法,可以不写,默认是从小到大4.从小到大可以写成sort(a,a+n,less<数据类型>)5.从大到小可写成sort(a,a+n,greater<数据类型&...原创 2020-01-08 21:52:51 · 429 阅读 · 0 评论