
ACM
文章平均质量分 73
ACM相关算法及题目
初雪与你
世事静方见,人情淡始长
展开
-
图论--链式前向星
我们存图的方式通常有邻接矩阵和前向星,邻接矩阵易造成空间浪费,前向星需要sort排序,复杂度是O(nlogn),所以效率不高,链式前向星是前向星的优化,它可以避免排序。以下是边的存储结构struct Node{ int to; int w; int next;}edge[maxn];edge[i].to表示的是第i条边的终点,edge[i].next表示的...原创 2018-07-19 09:58:18 · 855 阅读 · 0 评论 -
NOIP 2012 摆花(DP)
题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i 种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。 试编程计算,一共有多少种不同的摆花方案。 输入每组输入数据的第一行包含两个正整数n和m,中间用一个空格隔开。 第...原创 2018-08-17 09:31:31 · 1006 阅读 · 0 评论 -
NOIP 2007 统计数字
题目描述某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。 输入每组输入数据包含n+1行;第一行是整数n,表示自然数的个数; 第2~n+1行,每行一个自然数。 数据规模: 40%的数据满足:1<=n<=1000; ...原创 2018-08-17 09:07:23 · 815 阅读 · 0 评论 -
NOIP 2009 分数线划定
题目描述世博会志愿者的选拔工作正在A市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。 现在就请你编写程序划定面试分数线,并输出所有进入面试的选...原创 2018-08-14 14:52:27 · 814 阅读 · 1 评论 -
NOIP 2006 开心的金明(DP)
题目描述金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)...原创 2018-08-14 14:42:14 · 836 阅读 · 0 评论 -
NOIP 2008 ISBN号码
题目描述每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个...原创 2018-08-13 20:28:55 · 539 阅读 · 0 评论 -
NOIP 2008 传球游戏(DP)
题目描述上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。 聪明的小蛮提出一个有趣的问题:有多少种不同的传...原创 2018-08-13 20:16:58 · 559 阅读 · 0 评论 -
NOIP 2006 明明的随机数
题目描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 输入每组输入有2行,第1行为1个正整数,表示所生成的随机数的个数...原创 2018-08-13 20:05:29 · 331 阅读 · 0 评论 -
NOIP 2005 校门外的树
题目描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,...,L,都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端...原创 2018-08-13 19:58:16 · 730 阅读 · 0 评论 -
NOIP 2015 过河(缩点+DP)
题目描述在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,...,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数(包括S,...原创 2018-08-13 19:50:31 · 552 阅读 · 0 评论 -
NOIP 2013 计数问题
题目描述试计算在区间1到n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如,在1到11中,即在1、2、3、4、5、6、7、8、9、10、11中,数字1出现了4次。 输入每组输入数据共1行,包含2个整数n、x,之间用一个空格隔开。 数据规模: 对于100%的数据,1≤n≤1,000,000,0≤x≤9。 输出每组输出共1行,包含一个整数,表示x出现的次数。 ...原创 2018-08-12 16:17:39 · 1762 阅读 · 0 评论 -
NOIP 2010 数字统计
题目描述:请统计某个给定范围 [L, R]的所有整数中,数字 2 出现的次数。比如给定范围 [2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6 次。 输入:2 个正整数 L 和 R,之间用一个空格隔开。输出:数字 2 ...原创 2018-08-12 15:19:34 · 1507 阅读 · 0 评论 -
NOIP 2005 采药(DP)
题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你...原创 2018-08-12 09:13:03 · 512 阅读 · 0 评论 -
NOIP 2012 质因数分解(数学)
题目描述已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。 输入每组输入数据只有一行,包含一个正整数n。 数据规模: 对于60%的数据,6≤n≤1000。 对于100%的数据,6≤n≤2*109。 输出每组输出只有一行,包含一个正整数p,即较大的那个质数。 分析:任何一个大于1的自然数 ,都可以唯一分解成有限个质数的乘积 ,这里 均为质数。...原创 2018-08-11 20:09:25 · 1646 阅读 · 0 评论 -
NOIP 2002 均分纸牌(贪心||模拟)
题目描述有N堆纸牌,编号分别为1,2,...,N。每堆上有若干张,但纸牌总数必为N的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为1的堆上取的纸牌,只能移到编号为2的堆上;在编号为N的堆上取的纸牌,只能移到编号为N-1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。 现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。 例如N=4,4堆纸牌数分别为...原创 2018-08-11 15:49:10 · 601 阅读 · 0 评论 -
NOIP 2002 过河卒(记忆化DFS||DP)
题目描述如图,A点有一个过河卒,需要走到目标B点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如图中的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如图中C 点上的马可以控制9个点(图中的P1,P2...P8 和C)。卒不能通过对方马的控制点。 棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m 为不超过20的整数,并由键盘输入),同...原创 2018-08-10 16:05:00 · 707 阅读 · 0 评论 -
NOIP 2001 一元三次方程求解(二分||盛金公式)
题目描述有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。 提示:记方程f(x)=0,若存在2个数x1和x2,且x1<x2,f(x1)*f(x2)...原创 2018-08-10 13:28:14 · 1050 阅读 · 0 评论 -
NOIP 2000 方格取数(多线程DP)
题目描述设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例): 某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。 输入每个测试文件只...原创 2018-08-10 10:55:52 · 549 阅读 · 0 评论 -
NOIP 1998 车站(规律)
题目描述火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。现给出的条件是:共有N个车站,始发站上车的人数...原创 2018-08-10 08:56:15 · 1924 阅读 · 1 评论 -
NOIP 1998 三连击(暴力)
题目描述将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。 例如:三个三位数192,384,576满足以上条件。 输入本题无输入。 输出输出所有符合要求的三个三位数,每一组占一行,数字之间由一个空格分隔。 每组中的三个数字按照从小到大输出,各组之间按照每组的第一个数从小到大输出。 分析:枚举...原创 2018-08-10 08:56:03 · 647 阅读 · 0 评论 -
NOIP 1999 Cantor表(找规律)
题目描述现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,… 输入每个测试文件只包含一组测试数据,每组输入一个正整数N(1≤N≤10000000)。 输出对于每组输入数据,输出表中的第N项。 分析:看规律...原创 2018-08-09 19:05:18 · 1109 阅读 · 0 评论 -
NOIP 2002 选数(DFS+素数判定)
题目描述已知n个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从n个整数中任选k个整数相加,可分别得到一系列的和。例如当n=4,k=3,4个整数分别为 3,7,12,19时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34 现在,要求你计算出和为素数共有多少种。 例如上例,只有一种的和为素数:3+7+1...原创 2018-08-09 16:41:42 · 482 阅读 · 0 评论 -
NOIP 1998 拼数(贪心)
题目描述设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613输入每个测试文件只包含一组测试数据,每组输入数据的第一行输入一个正整数n(n≤20)。 接下来一行输入n个正整数。 输出对于每组输入数...原创 2018-08-09 16:12:14 · 896 阅读 · 0 评论 -
NOIP 1998 高精度阶乘的和(大数计算)
题目描述用高精度计算出S=1!+2!+3!+…+N!(N≤50),其中"!"表示阶乘,例如:5!=5*4*3*2*1。 输入正整数N,输出计算结果S。 输入每个测试文件只包含一组测试数据,每组输入一个正整数N。 输出对于每组输入数据,输出阶乘和的计算结果。 分析:高精度直接上Java//package demo;import java.util.Scanner;i...原创 2018-08-09 14:27:57 · 876 阅读 · 0 评论 -
NOIP 2001 最大公约数和最小公倍数问题(暴力)
题目描述输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数。 条件: 1. P,A是正整数; 2. 要求P,Q以x0为最大公约数,以y0为最小公倍数。 试求: 满足条件的所有可能的两个正整数的个数。 输入每个测试文件只包含一组测试数据,每组两个正整数x0和y0(2<=x0<10...原创 2018-08-09 14:08:08 · 1355 阅读 · 0 评论 -
NOIP 2003 栈(卡特兰数||DFS)
题目描述栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈)。 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。 宁宁考虑的是这样一个问题:一个操作数序列,从1,2,...原创 2018-08-09 14:04:36 · 408 阅读 · 0 评论 -
NOIP 2001 装箱问题(DP)
题目描述有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入:每个测试文件只包含一组测试数据,每组输入的第一行为一个整数V(0<=V<=20000),表示箱子的容量。 第二行输入一个整数n(0<n<=30...原创 2018-08-09 13:59:51 · 682 阅读 · 0 评论 -
NOIP 1999 导弹拦截(DP)
题目描述:某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入:每个测试文件只包含一组测试数据,每组输入若干个整数,表示导弹依次飞来的高度(雷达给出的高度数据是不大于...原创 2018-08-09 13:56:44 · 847 阅读 · 0 评论 -
NOIP 2001 数的计算(递推)
题目描述我们要求找出具有下列性质数的个数(包含输入的自然数n):先输入一个自然数 n ( n≤1000 ),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入输出格式输入格式:1 个自然数 n ( n≤1000 )输出格式:...原创 2018-08-09 13:53:14 · 668 阅读 · 0 评论 -
POJ 1410 Intersection(判断线段与矩形位置关系)
题目链接题目大意:判断一条线段与一个实心矩形(四条边以及中间包含的部分)是否相交。分析:线段与矩形四条边的不规范相交(交于一条线段的端点或者重合),以及线段在矩形的内部,都算作相交。这题看似简单,其实有很多比较细节的地方,比较坑,调了好久。#include<map>#include<set>#include<cmath>#include<...原创 2018-07-31 09:50:11 · 821 阅读 · 0 评论 -
POJ 1066 Treasure Hunt
题意:在金字塔内有一个宝藏p(x,y)。现在要取出这个宝藏,在金字塔内有许多面墙,为了进入宝藏所在的位置必须把墙炸开,炸墙只能炸每个房间墙的中点,求将宝藏运出城堡所需要的最小炸墙数。分析:虽然炸墙只能炸中点,但是因为每个房间里面是空的,而且关心的是最少要炸几面墙,金字塔范围因为只有100*100,所以直接枚举边上的每个点与宝藏的连线,与墙的交点个数最少的直线,就是炸墙的路线。#inclu...原创 2018-07-31 08:21:08 · 227 阅读 · 0 评论 -
POJ 2653 Pick-up sticks(线段相交)
题目链接题目大意:有n根木条(1 <= n <= 100000),一根一根的往一个坐标系上丢,问最后不被覆盖的木条有哪些,即丢的木条如果和前面丢的木条交叉的话,就会覆盖前面那根木条。分析:因为丢出的木条是按顺序给出的,因为在上方的木条不超过1000根,所以直接枚举每条线段,如果他后面有和他相交的线段,那么这条线段就会被覆盖,标记一下,最后输出没被标记的就行了。#inclu...原创 2018-07-31 08:14:01 · 155 阅读 · 0 评论 -
POJ 1556 The Doors(计算几何+最短路)
题目链接题目大意:有一个10*10的正方形房间中间用墙隔开,每个墙上有两个门给出门的两个端点的坐标求从左边中点走到右边中点所需要的最短路程。分析:计算每个墙的端点和其他墙的端点的距离(包括起点和终点),如果中间没有墙挡住。则它们的距离就是它们的直线距离,如果中间有墙挡住,则它们之间的距离,设置为无法到达,然后用最短路跑一遍求得左边中点到右边中点的距离。#include<map&...原创 2018-07-31 07:44:32 · 251 阅读 · 0 评论 -
POJ 1269 Intersecting Lines(直线相交判断 求交点)
题目链接题目大意:每次给你两条线段,判断它们的位置关系,如果相交,还需输出它们的交点。分析:线段之间存在三种关系,平行,共线,相交。#include<map>#include<set>#include<cmath>#include<queue>#include<stack>#include<cstdio>...原创 2018-07-31 07:32:28 · 197 阅读 · 0 评论 -
POJ 3304(判断直线与线段位置关系)
题目大意:给出n条线段的坐标,问是否能找到一条直线使得所有线段投影到这条直线上至少相交于一点,如果能找到这条直线就输出Yes!,否则输出No!分析:如果能找到一条直线(记为L1)与所有线段都有交点,那么做L1的垂线L2,垂足就是所有线段投影L2的交点。枚举两两线段各一个端点,连接这条直线L3,再判断剩下的线段与这条直线是否有交点。证明:如果L3与所有线段都有交点,则保持和所有线段相交,左右...原创 2018-07-30 08:05:35 · 341 阅读 · 0 评论 -
POJ 2398(计算几何 叉积)
题目链接题目大意:给你一个被n块挡板分隔成n+1个区域的盒子,给你m个点,从小到大输出含有点的个数的区域有多少个分析:这题其实和POJ 2318差不多的只是输出不一样,还有每个隔板的读入顺序不一定是从左到右的,所以读入完以后用sort排个序,这道题其实就是考对叉积的应用,计算矢量叉积是与直线和线段相关的算法的核心部分。设矢量P = ( x1, y1 ),Q = ( x2, y2 )...原创 2018-07-28 19:24:16 · 787 阅读 · 0 评论 -
POJ 2318 (计算几何 叉积)
题目链接题意:给你一个被n块挡板分隔成n+1个区域的盒子,给你m个点,问你每个区域有多少个点。分析:这道题其实就是考对叉积的应用,计算矢量叉积是与直线和线段相关的算法的核心部分。设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则P × Q = x1*y2 - x2*y1,其结果是一个标量,对于叉积公式的推导,推荐参考这篇博客。显然有性质 P × Q = - ( Q...原创 2018-07-28 19:17:53 · 281 阅读 · 0 评论 -
POJ 3281 Dining(网络流经典构图)
题目链接题目大意:农夫John有N头牛,每头牛都有自己喜欢的食物和水的种类,一共有F种食物和D种水,现在让你来进行分配,每种食物或水只能分配给一头牛,并且每头牛只能得到一种食物和一种水,问最多能使几头牛同时享用到自己喜欢的食物和饮料。(1 <= N <= 100, 1 <= F <= 100, 1 <= D <= 100)分析:这题第一反应很容易往...原创 2018-08-03 10:36:47 · 266 阅读 · 0 评论 -
Hdu 3336 Count the string(kmp&&dp+kmp)
传送门题意:给你一个长度为 n 的字符串(1 <= n <= 200000),输出所有前缀出现的次数之和,然后mod10007的结果。分析:如果我们要把字符串的每一个前缀都拿去和字符串进行匹配的话,那么复杂度就是O(n),很明显是会TLE的,所以我们考虑其他方法。方法一:Next[j] = x 代表的是前j个字符中前缀和后缀的最大匹配长度是x,所以我们直接根据Next数组去...原创 2018-07-23 08:46:24 · 208 阅读 · 0 评论 -
Hdu 2594 Simpsons’ Hidden Talents(Next数组的应用)
传送门题意:给你两个字符串s1和s2,它们的长度不超过50000,问你s1的前缀和s2的后缀所能匹配的最大长度,如果无法匹配就输出0,否则就输出这个最大长度的序列,并输出它的长度。分析:拿到这个题感觉很简单,直接将s2字符串拼接到s1字符串后面,然后用Next[新串的长度]的值不就完了吗?这里注意一个地方,例如:s1:abcabc 和 s2:abc,照刚刚那种思路的话就会输出6 但我们很快...原创 2018-07-23 08:46:13 · 159 阅读 · 0 评论