算法竞赛
文章平均质量分 64
奇迹是执着的人创造的
这个作者很懒,什么都没留下…
展开
-
算法从零开始 c/c++基础 查漏补缺
算法从零开始 一算法学的零零散散,蓝桥勉强拿个国三,ACM惨败,称着假期,好好从头开始,也是学长建议,刷算法笔记前面是基础、浏览一遍,查漏补缺即可:1.绝对值在10^9范围以内的整数都可以定义成int型2.题目要求超过2147483647,如10^10或者10^18次方,就得用long long来存储3.双精度double,8B,64位,有效精度15~16位4.0~9的AS...原创 2018-07-13 20:08:39 · 502 阅读 · 0 评论 -
迭代法求平方根
#include<iostream>#include<math.h>using namespace std;int main(){ double x; cin>>x; double y1,y2; y2=1; while(fabs(y1-y2)>1e-10){ y1=y2; y2=0.5*(y1+x/y1); } co...原创 2018-09-05 18:34:06 · 1132 阅读 · 1 评论 -
codeup 2.3 选择结构
问题 A: 例题4-1 一元二次方程求根时间限制:1 Sec内存限制:12 MB题目描述求一元二次方程ax2+bx+c=0的根,三个系数a, b, c由键盘输入,且a不能为0,但不保证b2-4ac>0。程序中所涉及的变量均为double类型。输入以空格分隔的一元二次方程的三个系数,双精度double类型输出分行输出两个根如下(注意末尾的换行):r1...原创 2018-09-24 18:03:11 · 450 阅读 · 1 评论 -
codeup3.3 图形输出
问题 A: 输出梯形时间限制:1 Sec内存限制:32 MB题目描述输入一个高度h,输出一个高为h,上底边为h的梯形。输入一个整数h(1<=h<=1000)。输出h所对应的梯形。样例输入5样例输出 ***** ******* ********* ***********************...原创 2018-09-25 17:00:33 · 184 阅读 · 0 评论 -
codeup 3.4 日期处理
问题 B: Day of Week时间限制:1 Sec内存限制:32 MB题目描述We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 4...原创 2018-09-26 16:38:27 · 221 阅读 · 0 评论 -
算法笔记 第四章 排序(选择排序 插入排序)
选择排序:#include<iostream>using namespace std;void selectsort(int a[],int n){//数组传的就是首地址 for(int i=0;i<n-1;i++){ int min=i; for(int j=i+1;j<n;j++){ if(a[j]<a[min]) min=j;...原创 2018-10-03 14:46:31 · 171 阅读 · 0 评论 -
算法笔记 4.1 PAT A1025
1025 PAT Ranking (25 分)Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhejiang University. Each test is supposed to run simultaneously in several pl...原创 2018-10-03 20:55:18 · 265 阅读 · 0 评论 -
算法笔记 4.2 散列 字符串hash初步 例题
题目:输入M:接下来输入M个字符串输入N:接下来输入N个字符串求N个字符串分别在M个字符串中出现的次数字符串均为小写字母组成 长度不超过4要求:不准遍历,每次查找时间复杂度O(1)分析:字符串hash初步 转换为n进制数(字符串字符种类个数为n),肯定能唯一表示代码:#include<iostream>#include <string>usi...原创 2018-10-03 23:55:11 · 488 阅读 · 0 评论 -
codeup 4.2 算法初步->哈希
问题 A: 谁是你的潜在朋友时间限制:1 Sec内存限制:32 MB题目描述 “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。首先你对借阅记录进行了一番整理,把...原创 2018-10-04 00:52:05 · 241 阅读 · 0 评论 -
算法笔记 4.3 递归 例题 全排列与八皇后
1.全排列问题描述:输入一个正整数n,输出1~n的全排列代码:#include<iostream> using namespace std;const int maxn=11;int n,P[maxn],hashTable[maxn]={false};void generateP(int index){ if(index==n+1){//递归边界,已经处...原创 2018-10-04 18:21:58 · 497 阅读 · 0 评论 -
codeup 4.3 递归
问题 A: 吃糖果时间限制:1 Sec内存限制:32 MB题目描述名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0)。妈妈告诉名名每天可以吃一块或者两块巧克力。假设名名每天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案。例如:如果N=1,则名名第1天就吃掉它,共有1种方案;如果N=2,则名名可以第1...原创 2018-10-05 18:50:51 · 186 阅读 · 0 评论 -
codeup 3.1 简单模拟
问题 A: 剩下的树时间限制:1 Sec内存限制:32 MB题目描述有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。 现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点...原创 2018-10-06 13:47:22 · 300 阅读 · 0 评论 -
codeup3.2 查找元素
问题 A: 统计同成绩学生人数时间限制:1 Sec内存限制:32 MB题目描述读入N名学生的成绩,将获得某一给定分数的学生人数输出。输入测试输入包含若干测试用例,每个测试用例的格式为第1行:N第2行:N名学生的成绩,相邻两数字用一个空格间隔。第3行:给定分数当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。输出对每...原创 2018-10-06 14:11:57 · 190 阅读 · 0 评论 -
算法笔记 PAT B1020 月饼
1020 月饼 (25 分)月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨...原创 2018-10-06 15:35:21 · 325 阅读 · 2 评论 -
算法笔记 PAT B1023 组个最小数
1023 组个最小数 (20 分)给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。现给定数字,请编写程序输出能够组成的最小的数。输入格式:输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、...原创 2018-10-06 16:15:01 · 270 阅读 · 0 评论 -
算法笔记 4.4 贪心 区间贪心
贪心分治动规区别1.简单贪心PAT B1020 月饼PAT B1023 组个最小数2.区间贪心给出N个开区间(x,y),从中选择尽可能多的开区间,使得这些开区间两两之间没有交集例如:(1,3)、(2,4)、(3,5)、(6,7) 最多选3个:(1,3),(3,5)、(6,7)贪心算法思想:基础两点:a.优先选择短的区间b.如果存在一个区间包含另一个区间,应选择更小...原创 2018-10-06 17:29:50 · 1015 阅读 · 0 评论 -
codeup 4.4 贪心
目录问题 A: 看电视代码A:问题 B: 出租车费代码B:问题 C: To Fill or Not to Fill代码C:问题 D: Repair the Wall代码D:问题 E: FatMouse's Trade代码E:问题 F: 迷瘴代码F:问题 G: 找零钱代码G:问题 A: 看电视时间限制:1 Sec内存限制:...原创 2018-10-06 17:45:07 · 321 阅读 · 0 评论 -
codeup4.5 二分
问题 A: 找x时间限制:1 Sec内存限制:32 MB题目描述输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出对于每组输入,请输出结果。样例输入41 2 3 43样例输出...原创 2018-10-17 23:39:36 · 290 阅读 · 0 评论 -
算法笔记 pat 3.5 D进制的A+B
1022D进制的A+B(20 分)输入两个非负 10 进制整数A和B(≤230−1),输出A+B的D(1<D≤10)进制数。输入格式:输入在一行中依次给出 3 个整数A、B和D。输出格式:输出A+B的D进制数。输入样例:123 456 8输出样例:1103注意结果为0时 建议每次都要测试一下边界值...原创 2018-09-29 23:24:32 · 197 阅读 · 1 评论 -
codeup 3.5 进制转换
问题 A: 又一版 A+B时间限制:1 Sec内存限制:32 MB题目描述输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。输入输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。当m为0时输入结束。输出输出格式:每个测试用例的输出占一行,输出A+B的m进制数...原创 2018-09-30 01:07:43 · 323 阅读 · 0 评论 -
C++ 读取一行带空格字符串
关于在C++中字符串的输入整理笔记1. cincin是C++中最常用的输入语句,当遇到空格或者回车键即停止如:#include <iostream>#include <string>using namespace std;int main(){ chara[50]; cin>>a; ...转载 2018-09-30 19:08:03 · 10393 阅读 · 0 评论 -
算法笔记3.6 字符串处理 PAT例题
1009 说反话 (20 分)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:...原创 2018-09-30 19:31:37 · 188 阅读 · 0 评论 -
codeup 3.6 字符串处理
问题 A: 字符串连接时间限制:1 Sec内存限制:32 MB题目描述不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。输入每一行包括两个字符串,长度不超过100。输出可能有多组测试数据,对于每组数据,不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。输出连接后的字符串。样例输入abc def...原创 2018-09-30 19:46:29 · 442 阅读 · 0 评论 -
中国剩余定理
题目:题目描述人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。然后再给出一个起始日期,要求从这一天开始,算出最少再过多少天后三个峰值同时出现。 输入你会得到一些病例。每种情况的输入由一行四...原创 2018-11-26 23:05:53 · 329 阅读 · 0 评论 -
最小公倍数lcm和最大公约数gcd
递归求最大公约数(辗转相除法|欧几里得算法)//最大公约数int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b);}//最大公约数 简洁写法int gcd(int a,int b){ return !b?a:gcd(b,a%b);} 然后 a,b的最大公约数=(a*b)/(a,b的最小...原创 2018-11-26 23:16:35 · 352 阅读 · 0 评论 -
PAT B 1004 成绩排名
1004 成绩排名 (20 分)读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和...原创 2018-12-01 19:53:06 · 125 阅读 · 0 评论 -
PAT B 1005 继续(3n+1)猜想
1005 继续(3n+1)猜想 (25 分)卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4...原创 2018-12-01 20:38:16 · 169 阅读 · 0 评论 -
PAT B 1006 换个格式输出整数
1006 换个格式输出整数 (15 分)让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输...原创 2018-12-01 20:47:03 · 191 阅读 · 1 评论 -
图的遍历 DFS(深度优先)
总结伪代码:void DFS(u){ vis[u]=true;//设置u已经被访问 for(从u出发能到达的所有顶点v){//枚举从u出发可以到达的所有顶点v if(vis[v]==false){//若v未被访问 DFS(v);//递归访问v } } }void DFSTrave(G){//遍历图 for(G的所有顶点u){//对G的所有顶点u if(vis[...原创 2018-12-08 22:04:41 · 1054 阅读 · 0 评论 -
lowbit
lowbit(i)=-i&i=2^p 从最低位1开始截取(截取一个1及其后面的0) 组成的数转换为10进制 去年蓝桥的填空题就被坑了#include<iostream> #include<string>using namespace std;int a[1000000];int index;void toBinary(int ...原创 2019-01-11 16:09:03 · 609 阅读 · 0 评论 -
算法笔记5.1 最大公约数与最小公倍数
输入正整数m,n,求m,n的最大公约数和最小公倍数(最简洁写法)#include<iostream> using namespace std;//辗转相除法求最大公约数int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}//最小公倍数int lcm(int a,int b){ ...原创 2019-02-27 20:33:08 · 521 阅读 · 0 评论 -
codeup 5.2 Least Common Multiple
问题 A: Least Common Multiple时间限制:1 Sec内存限制:32 MB提交:442解决:208[提交][状态][讨论版][命题人:外部导入]题目描述The least common multiple (LCM) of a set of positive integers is the smallest positive integer whi...原创 2019-02-27 21:16:54 · 127 阅读 · 0 评论 -
算法笔记5.3 分数四则运算
5.3.1分数的表示和化简#include<iostream> #include<cmath>using namespace std;struct Fraction{ int up,down;};int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b);}//分数规范化 化简v...原创 2019-02-27 21:50:42 · 319 阅读 · 2 评论 -
codeup 5.3 分数矩阵
问题 A: 分数矩阵时间限制:1 Sec内存限制:32 MB提交:434解决:165[提交][状态][讨论版][命题人:外部导入]题目描述我们定义如下矩阵:1/1 1/2 1/31/2 1/1 1/21/3 1/2 1/1矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。请求出这个矩阵的总和。输入输入包含多组测试数据。每行给定整数N(N...原创 2019-02-27 22:47:40 · 180 阅读 · 0 评论 -
codeup 4.6 two pointers
问题 A: 二路归并排序(mergesort)递归法 [2*+]时间限制:1 Sec内存限制:128 MB提交:279解决:0[提交][状态][讨论版][命题人:外部导入]题目描述二路归并排序(mergesort)递归法用递归法进行二路归并排序输入:第一行一个数据n,表示有n个数要排序。接下来n行每行一个<=10^7的整数。输出:n行,由小到大排序...原创 2019-02-24 14:36:26 · 178 阅读 · 0 评论 -
PAT B1040/A1093 有几个PAT
1040 有几个PAT (25 分)字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。现给定字符串,问一共可以形成多少个 PAT?输入格式:输入只有一行,包含一个字符串,长度不超过105,只包含 P、A、T 三种字母。输出格式:...原创 2019-02-24 15:59:06 · 171 阅读 · 0 评论 -
4.7 随机选择算法
随机选择算法,求一列数中第K大的数BUG代码#include<iostream> using namespace std;//比快排还要简化 肯定比排序的时间复杂度低int Partition(int A[],int left,int right){ int temp=A[left]; while(left<right){ while(lef...原创 2019-02-24 17:25:40 · 723 阅读 · 1 评论 -
算法笔记5.4 数学问题->素数 普通做法 埃式筛法
1.判断素数bool isPrime(int n){ int sqr=(int)sqrt(1.0*n); for(int i=2;i<=sqr;i++){ if(n%i==0) return false; } return true;}#include<iostream> #include<cmath>using namespace ...原创 2019-02-28 19:58:14 · 204 阅读 · 0 评论 -
two pointers
1.给定一个递增(无相等)的正整数序列和一个正整数M,求序列中的两个不同位置的数a和b,使得他们的和恰好为M,输出所有满足条件的方案。例如给定序列{1,2,3,4,5,6}和一个正整数M=8,就存在2+6=8成立。代码://sublime中间路劲名不能有空格#include<iostream> using namespace std;int main(){ ...原创 2019-02-14 10:47:36 · 776 阅读 · 0 评论 -
PAT B1013 数素数
1013数素数(20 分)令Pi表示第i个素数。现任给两个正整数M≤N≤104,请输出PM到PN的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM到PN的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:...原创 2019-02-28 20:42:35 · 195 阅读 · 0 评论