算法
文章平均质量分 76
算法练习
是zg啊!
细水长流!
展开
-
构造Gray码的分治算法
问题描述Gray码是一个长度为2n的序列。序列中无相同元素,每个元素都是长度为n位的(0,1)串,相邻元素恰好只有一位不同。用分治策略设计一个算法对任意的n构造相应的Gray码。分析与解答Gray码 长度(位) (0,1)串 n=1 0 1 n=2 00 01原创 2021-12-17 17:24:49 · 1437 阅读 · 0 评论 -
11076 浮点数的分数表达
Description在计算机中,用float或double来存储小数有时不能得到精确值,若要精确表达一个浮点数的计算结果,最好用分数来表示小数,有限小数或无限循环小数都可以转化为分数,无限循环小数的循环节用括号标记出来。如:0.9 = 9/100.(3) = 0.3(3) = 0.3(33) = 1/3当然一个小数可以用好几种分数形式来表示,我们只感兴趣最简的分数形式(即分母最小),如:0.3(33) = 1/3 = 3/9因为任何一个数都可以转化为一个整数和一个纯小数之和,整数部分较为简单无原创 2021-09-16 20:57:59 · 464 阅读 · 0 评论 -
9506 吃水果(贪心算法)
时间限制:1000MS 代码长度限制:10KB提交次数:0 通过次数:0题型: 编程题 语言: G++;GCCDescriptionMr.chen买来了许许多多的水果来给那些acmers吃,但是由于最近大家都忙于比赛,所以呢只留下zyq在机房切题 但是lyd师兄十分喜欢吃水果,所以呢,就规定zyq一天只能吃一个。 每一个水果重量wi都不一定是一样的,而且都有一个食用期限ti。必须是在...原创 2020-04-22 23:07:22 · 795 阅读 · 0 评论 -
POJ 4001:抓住那头牛
总时间限制: 2000ms 内存限制: 65536kB描述农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:1、从X移动到X-1或X+1,每次移动花费一分钟2、从X移动到2*X,每次移动花费一分钟假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?输入两个整数,N和K输出一个整数,农夫抓到牛所要花费的最小分钟数样例输入5 17样原创 2020-06-07 12:36:44 · 209 阅读 · 0 评论 -
SCAU------18440 走迷宫2
Description有一个N*M(N,M<=10)的格子迷宫,1代表该格子为墙,不能通过,0代表可以通过,人在迷宫中可以尝试上下左右四个方向移动。另外,在迷宫中如果从左边走出迷宫会回到迷宫最右边一格(只要该格不是墙),行不变,同样,从右边走出迷宫会回到迷宫最左边一格,向上走出迷宫会回到迷宫最下边一格,向下走出迷宫会回到迷宫最上边一格。现在给定一个迷宫,以及起点和终点,问最少多少步可以走出迷宫。如果不能走出迷宫输出“die”。输入格式该程序为多CASE,第1行为CASE的数量每一个CASE原创 2020-06-07 13:24:03 · 770 阅读 · 0 评论 -
POJ4151:电影节(贪心算法)
POJ4151:电影节(贪心算法)总时间限制: 1000ms内存限制: 65536kB描述大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。输入多组数据。每组数据开头是n(n<=100),表示共n场电影。接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间n...原创 2020-04-22 16:38:31 · 496 阅读 · 0 评论 -
SCAU------9514 西园
时间限制:1000MS 代码长度限制:10KB题型: 编程题 语言: G++;GCCDescription华农人多已经不是一天两天的事了,这导致学生吃饭要排很久的队。现在,传说中的Spring Brother为了让华农学生有个舒服的就餐环境,斥巨资改建华山西园饭堂。改建后的西园饭堂单单窗口,厨师的数量和级别就有一个巨大的飞跃,学生们吃饭再也不需要排队啦。由于厨师数目很多,为了便...原创 2020-04-29 13:31:03 · 180 阅读 · 0 评论 -
POJ 3190 Stall Reservations(贪心算法)
有 n头牛(1<=n<=50,000)要挤奶。给定每头牛挤奶的时间区间[A,B] (1<=A<=B<=1,000,000,A,B为整数)。牛需要呆畜栏里才能挤奶。一个畜栏同一时间只能容纳一头牛。 问至少需要多少个畜栏,才能完成全部挤奶工作,以及每头牛都 放哪个畜栏里(Special judged)去同一个畜栏的两头牛,它们挤奶时间区间哪怕只在端点重合也是不可以的...原创 2020-04-29 14:00:53 · 306 阅读 · 0 评论 -
SCAU------18443 除法等式(枚举)
时间限制:3000MS 代码长度限制:10KB题型: 编程题 语言: G++;GCC;VCDescription输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中aj各代表0~9中的一个数字除了0可以重复外,其它数字不能重复,2<=n<=90000。输入格式多case,每行一个数字,最后一个数字是0输出格式除了最后一行0不用处理,...原创 2020-05-06 14:18:18 · 640 阅读 · 2 评论 -
SCAU------18709 魔法
时间限制:1000MS 代码长度限制:10KB题型: 编程题 语言: 不限定Description农夫约翰的奶牛场有很多奶牛,奶牛有黑白两种颜色。现在奶牛们排成整齐的一列去参加镇上的游行活动。约翰希望白色奶牛都排在前面,黑色的奶牛都排在后面。但现在队列中奶牛的颜色是混乱的,并且奶牛们都不愿意改变位置。幸运的是,约翰有一根魔法棒,每挥舞一次魔法棒就可以改变一头奶牛的颜色。请问,约翰至少要挥舞多少次魔法棒,才能将队列改成他希望的状态。注意,可以将所有的奶牛都变成白色,或者都变成黑色。输入格式原创 2020-05-25 22:10:27 · 1635 阅读 · 11 评论 -
SCAU------18712 组合问题(完善中)
时间限制:1000MS代码长度限制:10KB题型: 编程题 语言: 不限定Description找出从自然数1、2、……、m中任取k个数的所有组合,组合中字典序大的先输出。例如m=5,k=3,应输出5 4 35 4 25 4 15 3 25 3 15 2 14 3 24 2 13 2 1输入格式两个整数m和k,(1<=k<=m<=10)输出格式按字典序输出所有组合输入样例5 2输出样例5 45 35 25 14 34 24 13原创 2020-05-27 22:02:50 · 343 阅读 · 0 评论 -
SCAU------18722 稀疏矩阵的运算
时间限制:1000MS 代码长度限制:10KB题型: 编程题 语言: 不限定Description稀疏矩阵的压缩存储原则:只存矩阵的行列数和每个非零元的行列下标及其值。例如下图的矩阵M由行列数(6,7)和三元组表{(1,2,12), (1,3,9), (3,1,-3),(3,6,14),(4,3,24),(5,2,18), (6,1,15), (6,4,-7) }唯一确定。问题描述:已知一个稀疏矩阵的三元组表,使用快速转置算法求其转置矩阵的三元组表,三元组表要按行优先的方式存储。输入格式原创 2020-06-03 00:26:50 · 1005 阅读 · 0 评论 -
SCAU------18746 逆序数
时间限制:1000MS 代码长度限制:10KB题型: 编程题 语言: 不限定Description在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数是课程线性代数的一个知识点。现在给定一个排列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称ai和aj为一个逆序,请求出排列的逆序数。输入格式第一行为n,表示排列长度。(1=<n<=100000)第二行有n原创 2020-06-03 20:22:25 · 1083 阅读 · 0 评论 -
SCAU------18118 勇者斗恶龙
Description有n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)输入格式多组数据,每组数据的第一行为正整数n和m(1<=n,m<=200000);以下n行每行为一个整数,即恶龙每个头的直径;以下m行每行为一个整数,即每个骑士的能力。输入结束标志n=m=0;输出格式输出格原创 2020-06-06 17:33:11 · 473 阅读 · 0 评论 -
SCAU------18107 校赛排名
Description校赛结束了,每一个参赛选手由3个数据项构成(通过题数,用时分钟数,姓名),排名按照通过题数排序通过题数多的排前,同题数的,罚时少的排前。如果题数相同,罚时也相同,而按数据读取的先后排。给你N个参赛选手的数据,按排序先后,输出姓名输入格式第一个数为N,(N<=500000)此后,每行一个参赛选手的数据,通过题数,用时分钟数,姓名,前两者为整型数,姓名为字符串(不多于20个字符)输出格式姓名排名输入样例43 5 Jon5 100 Smith3 5 Tom6原创 2020-06-06 17:47:15 · 499 阅读 · 0 评论 -
SCAU------18443 除法等式
Description输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中aj各代表09中的一个数字除了0可以重复外,其它数字不能重复,2<=n<=90000。输入格式多case,每行一个数字,最后一个数字是0输出格式除了最后一行0不用处理,其它每个case,按被除数由小到大输出所有满足等式的情况注:如果没有满足条件的等式,该case结束后,也需要输出一个空行两个case之间用一个空行分隔输入样例446666666200000输出样例原创 2020-06-06 19:41:11 · 544 阅读 · 0 评论 -
SCAU------1079 三角形
Description著名的数学家毕达哥拉斯可能从来都不曾想过有人居然会问他这样的一个问题:给出一个整数,存在多少个直角三角形,它的某一条边的长度等于这个整数,而且其他边的长度也是整数。既然毕达哥拉斯不可能预见到有计算机的出现,如果他回答不出来,那谁又能责怪他呢?但是现在既然你有了计算机,那么回答不出来就说不过去了。输入格式 第一行有一个整数n,代表有多少个数据(1<=n<=20)。接下来有n行,每行代表一个数据。一个数据就是一个整数ai(a<=i<=n,1<=ai<原创 2020-06-06 20:13:38 · 900 阅读 · 2 评论 -
爬楼梯
树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数, 求不同的走法数例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一 级,第二次走两级,也可以第一次走两级,第二次走一级,一 共3种方法。输入输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30输出不同的走法数,每一行输入对应一行输出不同的走法数,每一行输入对应一行输出样例输入5810样例输出83489解题思路:n级台阶的走法 =(先走一级后,n-1级台阶的走法 )+(先走两级后,n原创 2020-06-06 20:51:47 · 146 阅读 · 0 评论 -
放苹果
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问 共有多少种不同的分法?5,1,1和1,5,1 是同一种分法。输入第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整 数M和N,以空格分开。1<=M,N<=10。输出对输入的每组数据M和N,用一行输出相应的K。样例输入17 3样例输出8解题思路:设i个苹果放在k个盘子里放法总数是 f(i,k),则:k > i 时, f(i,k) = f(i,i)k <= i 时原创 2020-06-06 23:39:45 · 99 阅读 · 0 评论 -
SCAU------8615 快乐
DescriptionLian是一个喜欢看动画片的人,自从成为ACMer(ACM爱好者)之后,他又迷上了网上做题。做题让他快乐,不过这也是需要付出精力的!!假设有n道题,Lian做出第i道题后,他可以获得的快乐指数将增gethappy[i],而消耗掉的精力将是losspow[i]。假设Lian初始的快乐指数为1,精力为2000。可以理解,如果他消耗完了所有的精力那他得到再多的快乐都没有用。你的任务就是帮他计算他所能得到的最多的快乐指数,且最后他依然有多余的精力(即至少为1)。输入格式第一行输入一原创 2020-06-07 13:26:52 · 395 阅读 · 0 评论 -
POJ 1833:排列
总时间限制: 5000ms 内存限制: 65536kB描述题目描述:大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。任务描述:给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。比如:n = 3,k=2 给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1,因此答案为3原创 2020-06-10 01:11:09 · 170 阅读 · 0 评论 -
不借助第三个变量交换两个变量的值
方法如下:a=a+bb=a-b, b变为原始a的值a=a-b, a变为原始b的值#include<iostream>using namespace std;int main(){ int a=10,b=20; a=a+b; b=a-b;//b变为原始a的值 a=a-b;//a变为原始b的值 cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; return原创 2020-07-31 16:50:21 · 139 阅读 · 0 评论 -
递归算法实现字符串逆序存储
写一个递归算法来实现字符串逆序存储,要求不另设串存储空间。思路:题目要求不另设串存储空间,即第一个输入的字符最后存储,最后输入的字符先存储,使用递归可容易做到 。代码如下:#include<iostream>#include<cstring>using namespace std;void InvertStore(char a[]){// 字符串逆序存储的递归算法 char ch; static int i=0;//需要使用静态变量 cin>>c原创 2020-09-03 02:25:26 · 4664 阅读 · 1 评论 -
POJ 2815:城堡问题
描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####---# 2 # # | # # # # # #---#####---#####---#####---# 3 # | | # # # # # #---#########---####原创 2020-09-05 02:15:19 · 171 阅读 · 0 评论