程序设计竞赛
BeforeEasy
这个作者很懒,什么都没留下…
展开
-
setw的使用和判断两数互质
问题很简单,一要看懂题目,二要知道考什么也就是两数是不是互质,三就是输出格式的控制 Problem Description Computer simulations often require random numbers. One way to generate pseudo-random numbers is via a function of the formseed(x+1) = [se原创 2016-08-02 16:37:30 · 639 阅读 · 0 评论 -
Biorhythms --中国剩余定理
描述题目描述 Some people believe that there are three cycles in a person’s life that start the day he or she is born. These three cycles are the physical, emotional, and intellectual cycles, and they...原创 2018-08-18 11:00:51 · 356 阅读 · 0 评论 -
二叉树创建和遍历 C++
描述题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。 输入描述: 输入包括1行字符串,长度不超过100。 输出描述: 可能有多组测试数据,对于每组数据, 输出将输入字符...原创 2018-08-16 10:17:12 · 1839 阅读 · 0 评论 -
鸡兔同笼
描述题目描述 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。 输入描述: 每组测试数据占1行,每行一个正整数a (a < 32768) 输出描述: 输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开 如果没有满足要求的...原创 2018-08-19 10:49:57 · 358 阅读 · 0 评论 -
八皇后 -- 递归
描述题目描述 会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。 给出一个数b,要求输出第...原创 2018-08-19 11:27:43 · 267 阅读 · 0 评论 -
位操作练习 --二进制循环左移
描述题目描述 给出两个不大于65535的非负整数,判断其中一个的16位二进制表示形式,是否能由另一个的16位二进制表示形式经过循环左移若干位而得到。 循环左移和普通左移的区别在于:最左边的那一位经过循环左移一位后就会被移到最右边去。比如: 1011 0000 0000 0001 经过循环左移一位后,变成 0110 0000 0000 0011, 若是循环左移2位,则变成 1100 0000 ...原创 2018-08-22 17:27:59 · 4794 阅读 · 0 评论 -
神奇的口袋--刚好装满背包的方法总数
描述题目描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。 输入描述: 输入的第一行是正整数n (1 ...原创 2018-08-17 09:54:29 · 2293 阅读 · 0 评论 -
子串计算 -- map的用法
描述题目描述 给出一个01字符串(长度不超过100),求其每一个子串出现的次数。 输入描述: 输入包含多行,每行一个字符串。 输出描述: 对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。 示例1 输入 10101 输出 0 2 01 2 1 3 10 2 101 2分析确实是需要一小...原创 2018-08-17 10:30:41 · 642 阅读 · 0 评论 -
二叉树 -- 递归找节点数
描述题目描述 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。 比如,n = 12,m = 3那...原创 2018-08-20 17:26:10 · 582 阅读 · 0 评论 -
1000个苹果分成10份,使得可以拼出1-1000的任何数
就是说1000个苹果,分成10个袋子,每个袋子装若干苹果。当有人来买苹果时,不管要的是1-1000个苹果里的多少个苹果,都可以整袋整袋凑出整好的苹果树 答:1 2 4 8 16 32 64 128 256 512 (当然最后不够512个)实际上分成2的k次幂试一试前几个应该就能找到规律了 另外在多重背包里也用到过这个思想,将多重背包分成这样的数量,就可以进行任何的组合了...原创 2018-12-17 11:45:34 · 2006 阅读 · 0 评论 -
leetcode 括号生成
描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]分析:回溯法递归每次填入的要么是(要么是),当然,第一个肯定是(,并且)的数目不会超过(;记录左括号和右括号的数量,...原创 2019-02-10 21:59:16 · 512 阅读 · 0 评论 -
最大序列和 C++
描述题目描述 给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T的“序列和”。 对于S的所有非空连续子序列T,求最大的序列和。 变量条件:N为正整数,N≤1000000,结果序列和在范围(-2^63,2^63-1)以内。 输入描述: 第一行为一个正整数N,第二行为N个整数,表示序列中的数。 输出描述: 输入可能包括多组数据,对于每一组输入数据, 仅输出一...原创 2018-08-07 10:52:04 · 809 阅读 · 0 评论 -
质因数个数 c++
描述题目描述 求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。 输入描述: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1< N< 10^9)。 输出描述: 对于每组数据,输出N的质因数的个数。 示例1 输入 120输出 5分析合数都可以分解成质因数相乘的格...原创 2018-08-05 15:03:38 · 5850 阅读 · 0 评论 -
n的阶乘 C++
描述题目描述 输入一个正整数N,输出N的阶乘。 输入描述: 正整数N(0<=N<=1000) 输出描述: 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘 示例1 输入 4 5 15输出 24 120 1307674368000分析在n<20的范围内还能考虑用long long表示,这个范围肯...原创 2018-08-09 09:39:07 · 6304 阅读 · 2 评论 -
背包问题(一):完全背包
先看看题目描述 简单点说就是,有P的本金要去买东西,一共有N种东西可以买,每个东西可以买无限个(钱够的情况下),每个东西买来之后可以拿来卖,这个东西的利润是p,买的时候的成本是c,那么问题就是用自己的本金使得最后获得的利润最大 输入是:第一行P,N,接下来N行里每行输入第i个物品的利润和本金p,c; 输出一行为最大利润分析 这是个最优问题,是之前在贪心算法里提到的背包问题的变化版,而且是0-原创 2016-08-15 17:49:50 · 469 阅读 · 0 评论 -
背包问题(二):0-1背包
**问题表述:**容量为V的背包,N件物品,每个一个, 价格ci, 利润wi;在不超过容量的前提下,使得利润最高用profit[v]表示容量为v的背包中放了物品后的最大利润;那么 profit[v] = max{profit[v], profit[v-ci]+wi};如果当前物品(第i个物品)放进去了的话,就是profit[v-ci]+wi; 没放进去的话就是profi原创 2016-08-17 20:09:43 · 473 阅读 · 0 评论 -
Horner Rule(霍纳法则)
多项式求值,a0 + a1x + a2x2 +… + anxn;c常规算法就是直接这样求和,但是想也知道肯定效率不高的,这个其实有一个更高效的算法,叫 Horner Rule. 其实就是将多项式变形为 ((…(((anx +an-1)x+an-2)x+ an-3)…)x+a1)x+a0代码样例如下:#include<cstdio>#include<iostream>#include<cmath原创 2016-08-18 22:06:22 · 1472 阅读 · 0 评论 -
优先队列
优先队列 priority_queue头文件 #include性质:还是一个队列,只不过每个元素都有优先级或者权,(对于整数来讲可能就是整数本身的大小),里面的元素都是按照优先级的顺序排列,出队时也是按照优先级从大到小。基本的操作:Queue.empty()判断是否为空Queue.top()取优先级最高的Queue.pop()出队首元素Queue.push()在基于优原创 2016-08-20 00:11:19 · 425 阅读 · 0 评论 -
STL和普通方式实现二分法
二分查找是一种比原来的普通方式速度快的查找方式,其实STL库里有自带的二分查找的上一段代码比较简明直接#include<iostream>#include<cstdio>#include<algorithm>using namespace std;long long a[250005];int main(){ int n,m,aim; while(~scanf("%d%d原创 2016-08-20 16:28:09 · 795 阅读 · 0 评论 -
计算一个数阶乘的位数
给出一个数N,求出N!的位数。暴力法肯定是不行的,阶乘是个增长速度 很快的函数,10!已经有7位了。更直接的方法是log10(N!) --以10为底N!的对数。 因为求位数就是要每次除以10 的,取对数的意义就是10的几次方才能到N!,也就是求了N!有几位。那么问题就转化成求log10(N!)了一种方法是换底公式然后求和log10(N!) = log2(1*2*3*..*N)/log2(10)原创 2017-02-27 22:30:49 · 1824 阅读 · 0 评论 -
最短路径与Floyed算法
一个矩阵cost[N][N],cost[i][j]表示从i到j的路径长度,如果不通的话就是-1;现在给你一个矩阵,希望查询出从p到q的最短路径长度,不存在路的话输出“no”是的,这是一个最短路径问题,用单源最短路径(Dijkstra)和多源最短路径(Floyed)算法都可以实现,时间要取决于N和Q,因为单源最短路径是每次查询都要来一遍,但每一遍是O(n2),而多源最短路径针对一个矩阵只需要运行一次,原创 2016-08-25 16:30:37 · 468 阅读 · 0 评论 -
最小邮票数 C++
描述题目描述 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。 如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。 输入描述: 有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M<100。然后是一个数N,N〈20,表示有N张邮票。接下来是N个正整数,分别表示这N张邮票的面值,且以升序排列。 ...原创 2018-08-03 17:00:54 · 861 阅读 · 0 评论 -
求root(N,k)
描述题目描述 N < k时,root(N,k) = N,否则,root(N,k) = root(N’,k)。N’为N的k进制表示的各位数字之和。输入x,y,k,输出root(x^y,k)的值 (这里^为乘方,不是异或),2= < k<=16,0 < x,y < 2000000000,有一半的测试点里 x^y 会溢出int的范围(>=2000000000) ...原创 2018-08-04 11:10:24 · 487 阅读 · 0 评论 -
leetcode 删除排序数组中的重复项
这个的关键是用倒叙循环好过正序循环,不需要考虑删除后导致的数据索引的问题题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为...原创 2019-02-11 00:06:54 · 133 阅读 · 0 评论