初级机试总结
Mad Idea
这个作者很懒,什么都没留下…
展开
-
【树】九度OJ 1172:哈夫曼树
一、题目内容题目描述:哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。输入:输入有多组数据。每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。输出:输出权值。样例输入:5 1 2 2 5 9样例输出:37二、代码及注释#include<stdio.h>#include<qu原创 2020-10-05 16:30:18 · 250 阅读 · 1 评论 -
【栈的应用】前缀表达式求值
#include<iostream>#include<stack>#include<math.h>#include<string>using namespace std;stack<int> num;stack<char> ops;string s;void cal(char c){ int a=num.top(); num.pop(); int b=num.top(); num.pop原创 2020-10-05 16:24:19 · 408 阅读 · 0 评论 -
【栈的应用】后缀表达式求值
#include<iostream>#include<stack>#include<math.h>#include<string>using namespace std;stack<int> num;stack<char> ops;string s;void cal(char c){ int a=num.top(); num.pop(); int b=num.top(); num.pop原创 2020-10-05 16:23:14 · 60 阅读 · 0 评论 -
【栈的应用】九度OJ 1108:堆栈的使用
一、题目内容题目描述: 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。输入: 对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束)。而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’; 如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈; 如果是'O’,表示将栈顶的值 pop 出来,如原创 2020-10-05 16:21:33 · 81 阅读 · 0 评论 -
【栈的应用】简单计算器:中缀表达式求值(含括号)
该算法涉及 + - * / ^ ( ) 及负数的中缀表达式求值,可作为模板#include<iostream>#include<stack>#include<math.h>#include<string>using namespace std;stack<int> num;stack<char> ops;string s;void cal(){ int a=num.top(); num.pop();原创 2020-10-05 16:17:24 · 341 阅读 · 0 评论 -
【栈的应用】九度OJ 1153:括号匹配问题
一、题目内容题目描述: 在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注.输入: 输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100。 注意:cin.getline(str,100)最多只能原创 2020-10-05 16:13:54 · 383 阅读 · 0 评论 -
【最小点覆盖】POJ 2226:Muddy Fields
一、题目内容POJ 2226 原题地址二、题意解释告诉你一个矩阵,让你用1 * x (x 为任意值) 的木板去铺符号* 可以覆盖问最少多少木板能够把所有的*覆盖掉三、代码及注释#include<stdio.h>#include<iostream>#include<string.h>using namespace std;const int maxn=2505;int g[maxn][maxn];int girl[maxn],used[maxn]原创 2020-10-04 11:39:31 · 175 阅读 · 0 评论 -
【二分图最大独立集】POJ 3692:Kindergarten
一、题目内容POJ 3692 原题地址二、题意解释一群男孩女孩,同性之间都相互认识,但是异性之间只有某些人认识彼此。给出相互认识的异性的各自编号。求组成一个小队,这个小队里的人都相互认识。问这个小队最多能有多少人。三、代码及注释#include<stdio.h>#include<iostream>#include<string.h>using namespace std;/*把相互不了解的人作为边构建二分图,这样题意是选择相互了解的人,那么是选择二原创 2020-10-04 11:33:01 · 93 阅读 · 0 评论 -
【最小点覆盖】POJ 3041:Asteroids
一、题目内容POJ 3041 原题地址二、题意解释有一个N*N的网格,该网格有K个障碍物.你有一把武器,每次你使用武器可以清楚该网格特定行或列的所有障碍.问你最少需要使用多少次武器能清除网格的所有障碍物?三、代码及注释最小点覆盖=最大匹配最大匹配:在二分图中最多能找到多少条没有公共端点的边最小点覆盖:选择最少的点使得所有边都至少有一个端点被选中了,倒过来说就是,删除包含这些点的边,可以删掉所有边。点集里面的点能覆盖所有的边最小边(路径)覆盖:实质是个边集,这个集合里的边能覆盖所有的点,二原创 2020-10-04 11:16:17 · 235 阅读 · 0 评论 -
【开关问题】POJ 3276:Face The Right Way
一、题目内容POJ 3276 原题地址二、题意解释有n头牛,每头牛要么面朝前方或者面朝后方。现在可以连续驱使连续的k头牛反转。求使得所有的牛面朝前方的最小操作数和对应的k是多少?三、代码及注释#include<cstdio>#include<string.h>using namespace std;const int Max_N=5001;int dir[Max_N],f[Max_N],n;//dir记录其本身的方向,f记录他作为k长度的序列头时是否需要反转in原创 2020-10-04 10:36:13 · 60 阅读 · 0 评论 -
【尺取法】POJ 3061:Subsequence
一、题目内容POJ 3061 原题地址二、题意解释从给定序列里找出区间和大于等于S的最小区间的长度。三、代码及注释#include<cstdio>#include<algorithm>using namespace std;//poj3061,³ÌÐòÉè¼ÆP148int cn,n,S;int a[1000005];int sum[1000005];void solve(){ int s=0,t=0,sum=0;//s为尺取法起始位置,t为终止位置原创 2020-10-04 10:30:30 · 51 阅读 · 0 评论 -
【尺取法】POJ 3320:Jessica‘s Reading Problem
一、题目内容POJ 3320 原题地址二、题意解释一本书有 P 页,每页都有个知识点a[i],知识点可能重复,求包含所有知识点的最少的页数。三、代码及注释#include<cstdio>#include<algorithm>#include<set>#include<map>using namespace std;int p;int a[1000005];void solve(){ set<int> all;//原创 2020-10-04 10:26:00 · 163 阅读 · 0 评论 -
【贪心】POJ 2431:Expedition
一、题目内容POJ 2431 原题地址二、题意解释一辆卡车,初始时,距离终点L,油量为P,在起点到终点途中有n个加油站,每个加油站油量有限,而卡车的油箱容量无限.卡车在行车途中,每走一个单位的距离消耗一个单位的油量,给定n个加油站距离终点的距离以及油存储量。问卡车是否能到达终点,如果可达,最少需要加多少次油,否则输出-1.三、代码及注释#include<stdio.h>#include<queue>#include<algorithm>using n原创 2020-10-04 10:17:05 · 334 阅读 · 0 评论 -
【贪心】POJ 3069:Saruman‘s Army
一、题目内容POJ 3069 原题地址二、题意解释一个直线上有N个点。点i的距离是Xi。从这些点中选取若干个加上标记。要求:对于每个点,与其距离为R的范围内必有做标记的点(包括自身)。求至少标记多少点才能满足要求。三、代码及注释#include<stdio.h>#include<algorithm>using namespace std;int X[1001];int main(){ int n,r; while(scanf("%d%d",&am原创 2020-10-03 16:21:08 · 162 阅读 · 0 评论 -
【贪心】CodeForces:556D Case of Fugitive
一、题目内容CodeForces:556D Case of Fugitive 原题地址二、题意解释有N个岛屿,每个岛屿的左端点和右端点已知,此时有m种桥,其长度已知,问能否用这些桥连接起来所有的岛屿。三、代码及注释#include<stdio.h>#include<algorithm>#include<queue>using namespace std;typedef long long ll;//思想:把桥长和岛屿所得区间长的小值都先升序排列,接着原创 2020-10-03 16:15:58 · 110 阅读 · 0 评论 -
【贪心】POJ 3617:Best Cow Line
一、题目内容POJ 3617 原题地址二、题意解释给定一个字符串,重排,每次从头或尾取较小值放到新序列的末尾。题目要求是每80个为一行输出。三、代码及注释#include<cstdio>using namespace std;int n;char S[2001];int main(){ scanf("%d",&n); for(int j=0; j<n; j++) { scanf(" %c",&S[j]);原创 2020-10-03 11:20:35 · 936 阅读 · 0 评论 -
【贪心】POJ 3253:Fence Repair
一、题目内容POJ 3253 原题地址二、题意解释有一个农夫要把一个木板钜成几块给定长度的小木板,每次锯都要收取一定费用,这个费用就是当前锯的这个木版的长度,给定各个要求的小木板的长度,及小木板的个数n,求最小费用如38 8 5:先从无限长的木板上锯下长度为 21 的木板,花费 21再从长度为21的木板上锯下长度为5的木板,花费5再从长度为16的木板上锯下长度为8的木板,花费8总花费 = 21+5+8 =34三、代码及注释#include<stdio.h>#inclu原创 2020-10-03 11:15:41 · 243 阅读 · 0 评论 -
【贪心】POJ 2586:Y2K Accounting Bug
一、题目内容POJ 2586 原题地址二、题意解释某公司每个月要么盈利s元,要么亏损d元,一年之中任意连续的五个月的利润和是亏损的,最后问一年的总收入是多少,如果盈利即输出数额,如果亏损,则输出Deficit。三、代码及注释#include<cstdio>using namespace std;/*贪心,要使每五个月都亏损,那么就让这些亏损的月份在后面更有利符合最优子结构性质。5个月统计一次都亏空,那么有5种情况: 1、若SSSSD亏空,那么全年可能最大盈利情原创 2020-10-03 11:11:07 · 110 阅读 · 0 评论 -
【贪心】POJ 1328:Radar Installation
一、题目内容POJ 1328 原题地址二、题意解释假设海岸线是一条无限延伸的直线。陆地在海岸线的一侧,而海洋在另一侧。每一个小的岛屿是海洋上的一个点。雷达坐落于海岸线上,只能覆盖d距离,所以如果小岛能够被覆盖到的话,它们之间的距离最多为d。题目要求计算出能够覆盖给出的所有岛屿的最少雷达数目。三、代码及注释#include<iostream>#include<math.h>#include<algorithm>#define INF 0x7ffffff原创 2020-10-03 11:06:40 · 69 阅读 · 0 评论 -
【贪心】九度OJ 1437:To fill or not to fill
一、题目内容题目描述:With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different gas station may give different price. You ar原创 2020-10-03 10:59:36 · 67 阅读 · 0 评论 -
【贪心】九度OJ 1435:迷瘴
一、题目内容题目描述:通过悬崖的yifenfei,又面临着幽谷的考验——幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅。由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死。幸好yifenfei早有防备,提前备好了解药材料(各种浓度的万能药水)。现在只需按照配置成不同比例的浓度。现已知yifenfei随身携带有n种浓度的万能药水,体积V都相同,浓度则分别为Pi%。并且知道,针对当时幽谷的瘴气情况,只需选择部分或者全部的万能药水,然后配置出浓度不大于 W%的药水即可解毒。原创 2020-10-03 10:53:59 · 124 阅读 · 0 评论 -
【贪心】九度OJ 1434:今年暑假不AC
一、题目内容题目描述:“今年暑假不AC?”“是的。”“那你干什么呢?”“看世界杯呀,笨蛋!”“...”确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)输入:输入数据包含多个测试实例,每个原创 2020-09-30 17:49:31 · 114 阅读 · 0 评论 -
【贪心】九度OJ 1433:FatMouse‘ Trade
一、题目内容题目描述:FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food原创 2020-09-30 17:42:29 · 163 阅读 · 0 评论 -
【二分查找】POJ 2785:4 Values whose Sum is 0
一、题目内容POJ 2785 原题地址二、题意解释输入一个n行四列的矩阵,每一列取一个数,就是四个数,求有多少种着四个数相加和为0的情况三、代码及注释#include<cstdio>#include<algorithm>using namespace std;//参考 二分查找中的抽签问题int n;const int MAX_N=4001;int A[MAX_N],B[MAX_N],C[MAX_N],D[MAX_N],CD[MAX_N*MAX_N];voi原创 2020-09-29 23:35:44 · 156 阅读 · 0 评论 -
【二分查找】挑战程序设计 P143:最大化平均值
一、题目内容题目描述: 有n个物品的重量和价值分别为wi和vi,从中选出k个物品使得单位重量的价值最大样例输入:n=3k=2【w,v】=【2,2】,【5,3】,【2,1】样例输出:0.75二、代码及注释#include<cstdio>#include<algorithm>//思路:这种题有一个统一模式:设定一个判定函数用于判断数据是否符合条件,用二分查找不断获得数据using namespace std;const int Max_L=1001;原创 2020-09-29 23:30:30 · 108 阅读 · 0 评论 -
【二分查找】POJ 2456:Aggressive cows
一、题目内容POJ 2456 原题地址二、题意解释有n个牛栏,选m个放进牛,相当于一条线段上有 n 个点,选取 m 个点,使得相邻点之间的最小距离值最大三、代码及注释#include<cstdio>#include<algorithm>using namespace std;//思路:这种题有一个统一模式:设定一个判定函数用于判断数据是否符合条件,用二分查找不断获得数据const int INF=200005;int n,m;int X[100001];/原创 2020-09-29 23:25:02 · 69 阅读 · 0 评论 -
【二分查找】POJ 1064:Cable master
一、题目内容POJ 1064 原题地址二、题意解释给出n条线段,以米的单位给出,小数点后两位(精确到厘米),要你对这些线段裁剪,裁剪出m条等长的线段,并且让这些线段尽可能长另外线段的长度不能小于1厘米,如果筹不够m条,输出0.00二、代码及注释#include<cstdio>#include<cmath> //floor函数需要调用//思路:这种题有一个统一模式:设定一个判定函数用于判断数据是否符合条件,用二分查找不断获得数据using namespace st原创 2020-09-29 23:16:44 · 76 阅读 · 0 评论 -
【二分查找】挑战程序设计 P2:抽签
一、题目内容题目描述: 你的朋友提议玩一个游成:将写有数字的n个纸片放入口袋中,你可以从口袋中抽取4次纸片,每次记下纸片上的数字后都将其放回口袋中。 如果这4个数字的和是m,就是你赢,否则就是你的朋友赢。你挑战了好几回,结果一次也没赢过,于是怒而撕破口袋,取出所有纸片,检查自己是否真的有赢的可能性。 请你编写一个程序,判断当纸片上所写的数字是k1,k2....kn时,是否存在抽取4次和为m的方案。如果存在,输出Yes;否则,输出No。样例输入: n=3 m=10 k原创 2020-09-29 23:08:46 · 224 阅读 · 0 评论 -
【查找】九度OJ 1126:打印极值点下标
一、题目内容题目描述:在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。输入:每个案例的输入如下:有2×n+1行输入:第一行是要处理的数组的个数n;对其余2×n行,第一行是此数组的元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔。输出:每个案例输出为n行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。样例输入:31010 12 12 11原创 2020-09-29 22:58:42 · 96 阅读 · 0 评论 -
【二分查找】九度OJ 1069:查找学生信息
一、题目内容题目描述: 输入N个学生的信息,然后进行查询。输入: 输入的第一行为N,即学生的个数(N<=1000)接下来的N行包括N个学生的信息,信息格式如下:01 李江 男 2102 刘唐 男 2303 张军 男 1904 王娜 女 19然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:02030104输出: 输出M行,每行包括一个对应于查询的学生的信息。如果没有对应的学生信息,则输出“No Answer!”原创 2020-09-29 22:55:19 · 180 阅读 · 0 评论 -
【查找】九度OJ 1052:找x
一、题目内容题目描述:输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入:测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出:对于每组输入,请输出结果。样例输入:21 30样例输出:-1二、代码及注释#include<stdio.h>int main(){ int n; int buf[200]; while(scan原创 2020-09-29 22:51:15 · 79 阅读 · 0 评论 -
【排版问题】九度OJ 1161:Repeater
一、题目内容题目描述:Harmony is indispensible in our daily life and no one can live without it----may be Facer is the only exception. One day it is rumored that repeat painting will create harmony and then hundreds of people started their endless drawing. Their pa原创 2020-09-27 11:58:28 · 1232 阅读 · 0 评论 -
【排版问题】九度OJ 1432:叠框
一、题目内容题目描述:把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。输入:输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;输出:输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。样例输入:11 B A 5 @ W样例输出: AAAAAAAAAABBB原创 2020-09-27 11:52:35 · 172 阅读 · 0 评论 -
【排版问题】九度OJ 1065:输出梯形
一、题目内容题目描述:输入一个高度h,输出一个高为h,上底边为h的梯形。输入:一个整数h(1<=h<=1000)。输出:h所对应的梯形。样例输入:4样例输出: **** ****** ******************二、代码及注释#include<stdio.h>int main(){ int h; while(scanf("%d",&h)!=EOF){ int maxline=h原创 2020-09-27 11:47:30 · 81 阅读 · 0 评论 -
【Hash问题】POJ 3349:Snowflake Snow Snowflakes
一、题目内容POJ 3349 原题地址二、题意解释在n(n<100000)个雪花中判断是否存在两片完全相同的雪花,每片雪花有6个角,每个角的长度限制为1000000两片雪花相等的条件:雪花6个角的长度按顺序相等(这个顺序即可以是顺时针的也可以是逆时针的)三、代码及注释#include <iostream>#include <algorithm>#include <stdio.h>#include <stdlib.h>#includ原创 2020-09-27 11:39:17 · 134 阅读 · 0 评论 -
【Hash问题】九度OJ 1088:剩下的树
一、题目内容题目描述: 有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。 现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。 可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。输入: 两个整数L原创 2020-09-27 11:27:43 · 1601 阅读 · 0 评论 -
【Hash问题】九度OJ 1156:谁是你的潜在朋友
一、题目内容题目描述: “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。 首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有原创 2020-09-26 23:43:41 · 198 阅读 · 0 评论 -
【Hash问题】九度OJ 1431:Sort
一、题目内容题目描述:给你n个整数,请按从大到小的顺序输出其中前m大的数。输入:每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。输出:对每组测试数据按从大到小的顺序输出前m大的数。样例输入:5 33 -35 92 213 -644样例输出:213 92 3二、代码及注释#include<stdio.h>#define OFFSET 500000/原创 2020-09-26 23:38:24 · 154 阅读 · 0 评论 -
【Hash问题】九度OJ 1018:统计同成绩学生人数
一、题目内容题目描述:读入N名学生的成绩,将获得某一给定分数的学生人数输出。输入:测试输入包含若干测试用例,每个测试用例的格式为第1行:N第2行:N名学生的成绩,相邻两数字用一个空格间隔。第3行:给定分数当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。输出:对每个测试用例,将获得给定分数的学生人数输出。样例输入:380 60 9060285 660560 75 90 55 75750样例输出:102二、代原创 2020-09-26 23:35:01 · 281 阅读 · 0 评论 -
【日期问题】九度OJ 1186:打印日期
一、题目内容题目描述:给出年分m和一年中的第n天,算出第n天是几月几号。输入:输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。输出:可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。样例输入:2000 32000 312000 402000 602000 612001 60样例输出:2000-01-032000-01-312000-02-092000-02-292000-0原创 2020-09-26 23:27:14 · 213 阅读 · 0 评论