01 2018 档案
摘要:【题目描述】 有三个没有刻度的水壶,容量分别为a,b和c(单位为升,都是<=200的正整数)。初始时前两个水壶是空的,而第三个装满了水。每次可以从一个水壶往一个水壶里倒水,直到一个水壶倒空或者另一个水壶倒满。为了让某个水壶恰好有d升水,至少要倒多少升的水?如果无解,找一个小于且最接近d的d’代替d。
阅读全文
摘要:有一些程序,虽然写起来不难,但是可能比较麻烦或容易出错,这时就可以用c++函数库里自带的一些实用的函数。 这里只记录一些不太常见的函数。 !持续更新! 正文分界线 1. __gcd(x, y) 求两个数的最大公约数,如__gcd(6, 8) 就返回2。在 algorithm 库中。是不是很方便? 2
阅读全文
摘要:全排列可以用递归的方式手写,不过c++函数库里自带一个全排列函数。 输出 n 的全排列就是 n! 嘛 值得一提的是,这个函数并不会改变数组内元素的值和位置,数组还是 sort 后的样子。
阅读全文
摘要:就是贪心加上并查集。 先按边权从小到大排个序,然后草1到m一条一条加边,若这条边相连的两个节点没有被连过,就将这两个点所在的集合合并,这样直到并查集的树的边加到 n - 1 。则最小生成树各边长度之和就是并查集各边长度之和。 因为要记录一条边连接的哪两个节点,所以开一个结构体,里面a, b, c代表
阅读全文
摘要:还是先来一道题,方便理解线段树的特性(因为我实在想不出来啥方法了) 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格分隔的整数,
阅读全文
摘要:www.luogu.org 洛谷,页面挺漂亮 noi.openjudge.cn 一般般吧,总是不给数据范围 www.codeforces.com 战斗民族的,没怎么用,好像不错 www.codevs.cn 还行 vjudge.net 题目特别全,还能知道数据点 oj.noi.cn 不解释,反正我不怎
阅读全文
摘要:本人刚学KMP,望大佬指出说法不合适的地方...... KMP这个算法主要可以用来解决求字符串中子串的位置(当然不止这一点),绝对不是字面上的那个什么意思......它是个算法!算法!全称Knuth-Morris-Pratt! 对了,有人会问:既然求子串,那为什么不用c++库里自带的 strstr(
阅读全文
摘要:主要是怕忘。。。 unsigned int 0~4294967295 int 2147483648~2147483647 unsigned long 0~4294967295 long 2147483648~2147483647 long long的最大值:9223372036854775807 l
阅读全文
摘要:题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。 输入输出格式 输入格式: 输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。 输出格式: 输出
阅读全文
摘要:题目描述 设有n个正整数 (n<=20), 将它们连接成一排, 组成一个最大的多位整数. 例如: n=3时, 3个整数13, 312, 343连接成的最大整数为: 34331213 又如: n=4时, 4个整数7,13,4,246连接成的最大整数为: 7424613 输入输出格式 输入格式: n n
阅读全文
摘要:题目描述 某城市冬季举办环城25km马拉松接力赛,每个代表队有5人参加比赛,比赛要求每个的每名参赛选手只能跑一次,一次至少跑1km、最多只能跑10km,而且每个选手所跑的公里数必须为整数,即接力的地方在整公里处。 刘老师作为学校代表队的教练,精心选择了5名长跑能手,进行了训练和测试,得到了这5名选手
阅读全文
摘要:题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所
阅读全文
摘要:【描述】 利用动态链表记录从标准输入输入的学生信息(学号、姓名、性别、年龄、得分、地址) 其中,学号长度不超过20, 姓名长度不超过40, 性别长度为1, 地址长度不超过40 【输入】 输入包括若干行,每一行都是一个学生的信息,如:00630018 zhouyan m 20 10.0 28#460输
阅读全文
摘要:【问题描述】 给定N个整数,将这些整数中与M相等的删除 假定给出的整数序列为:1,3,3,0,-3,5,6,8,3,10,22,-1,3,5,11,20,100,3,9,3 应该将其放在一个链表中,链表长度为20 要删除的数是3,删除以后,链表中只剩14个元素:1 0 -3 5 6 8 10 22
阅读全文
摘要:【问题描述】 用递归方法求两个数m和n的最大公约数(greatest common divisor)。(m>0,n>0) 【大水题,大佬快绕】用辗转相除法求,递归实现。 输入:28 8 输出:gcd = 4 那么再水一把:求一个最小公倍数(least common multiple)。 人人都知道,
阅读全文
摘要:【问题描述】 用递归算法,把任一给定的十进制正整数转换成八进制数输出。 思路就是将该数不断除以8取余,直到商为0。再将所得余数倒着输出。到这输出就想到栈,栈就可以用递归实现。 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #i
阅读全文
摘要:【题面】 猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉的一半,又多吃了一个。以后每天早上都吃掉了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。 很明显的一道递推题。又 f[n] = f[n - 1] / 2 -
阅读全文
摘要:n个人围成一圈从1开始报数,报到m的人出圈,直到剩最后一个人为止。编程输出出圈顺序。 这道题用循环数组模拟的话就比较麻烦,因为有人出圈后就要将他后面的人向前挪一个单位,或者开一个vis数组标记,没出圈的人为0,出圈为1。但这两种方法都比较麻烦,我们需要一个动态的线性结构来表示每一个人,因此就想到了链
阅读全文
摘要:【问题描述】 从键盘读入一个后缀表达式(字符串),只含有0-9组成的运算数及加(+)、减(—)、乘(*)、除(/)四种运算符。每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以@作为结束标志。 将数字存入栈中,遇到符号就计算栈顶和它下面的一个数并将得到的新得数存入栈。 1 #inclu
阅读全文
摘要:【问题描述】 输入一行字符串,以 '@' 结束。判断其中的括号是否匹配。若匹配则输出YES;否则输出NO。 很显然,这道题用栈模拟最简单(水题)。遇 '(' 进栈,遇 ')' 退栈。最后若栈空,则匹配;否则不匹配。 1 #include<cstdio> 2 #include<iostream> 3
阅读全文
摘要:这个就是链表储存结构。 这只是一种链表,即单向链表。还有双向链表,单项循环链表,双向循环链表。 一个链表由无数个结点组成,每一个结点由数据域(用来储存数据)和指针域(用来储存下一个节点的位置),可以把链表想成一个锁链,那么指针域就是连接两个结点之间的链子 所以为了表示这种结构,这么写 1 struc
阅读全文