acm
丁磊_Ml
业精于勤,荒于嬉;行成于思,毁于随。
展开
-
南工ACM:最大的数
描述 小明和小红在打赌说自己数学学的好,于是小花就给他们出题了,考考他们谁NB,题目是这样的给你N个数 在这n个数之间添加N-1个*或+,使结果最大,但不可以打乱原顺序,请得出这个结果 如 1 3 5 结果是(1+3)*5=20;最大 可以添加若干个括号,但一定要保证配对,但是每两个数之间只可能有一个*或+ 数列最前和最后不应有+或乘 小明想赢小红但是他比较笨,请你帮帮他 输入原创 2017-03-27 19:07:45 · 841 阅读 · 0 评论 -
南工ACM:心急的C小加
描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?输入 第一行是一个整数T(1<T<1500)(1<T<1500),表示输入数据一共有T组。 每组测原创 2017-03-26 22:39:41 · 420 阅读 · 0 评论 -
前缀式表达式求值
上一篇博客讲了中缀,后缀表达式的求法,这里就记载一下前缀的。 可以参考这篇博客 nyoj ACM:前缀式计算( 堆栈的使用 或 递归 ) 比如求 : + 2 * + 3 4 5 注意输入的之间都有空格 思路: 1. 用数组s接受前缀表达式,连同空格一起接收。 2. 然后将s全部压入堆栈A中 3. 每次从堆栈A中取出一个字符x。如果是数字,那么就看A的下一个字符y是数字还是小数点原创 2017-04-03 08:56:27 · 2221 阅读 · 0 评论 -
中缀转后缀 和 后缀表达式求值
逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法)被称为后缀表示法,(当然波兰表示法 就是 前缀表示法)。 下面内容转载自:http://www.iteye.com/topic/1130373如何书写逆波兰表达式:先看一下怎么书写前缀表达式: 1. 如2+(3+4)*5这种我们最常见的式子就是中缀式。 2. 而把中缀式按运算顺序加上括号就是:(2+((3+4)转载 2017-04-03 08:43:20 · 1164 阅读 · 0 评论 -
nyoj ACM:表达式求值 (堆栈)
表达式求值 时间限制:3000 ms | 内存限制:65535 KB 难度:3描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是20 ,add(10,98) 的值是108等等。经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。 假设表达式可以简单定义为: 1. 一个正的十进制数原创 2017-04-02 21:37:43 · 668 阅读 · 0 评论 -
nyoj ACM:前缀式计算( 堆栈的使用 或 递归 )
前缀式计算 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 先说明一下什么是中缀式:如2+(3+4)*5这种我们最常见的式子就是中缀式。而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )把括号去掉就是:+ 2 * + 3 4 5最后这个式子就是该表达式的前缀表示。给你一个前缀表达式,请你计原创 2017-04-02 20:35:48 · 784 阅读 · 0 评论 -
南工ACM:阶乘之和
描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No; 输入 第一行有一个整数0<m<1000<m<100,表示有m组测试数据; 每组测试数据有一个正整数n<1000000; 输出 如果符合条件,输出Yes,否则输出No; 样例输入 2 9 10 样例输出 Yes No思路:贪原创 2017-03-26 10:55:09 · 904 阅读 · 0 评论 -
南工ACM:会场安排问题
描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。 输入 第一行是一个整型数m(m<100)表示共有m组测试数据。 每组测试数据的第一行是一个整数n(1<n<10000)n(1<n<10000)表示该测原创 2017-03-26 10:35:48 · 540 阅读 · 0 评论 -
树状数组总结
树状数组基本用法什么是树状数组数学解释一插点问线单点增减区间查询二插线问点区间修改单点查询 区间每次修改的值是一样的三 区间查询区间修改树状数组基本用法:一、插点问线,单点增减+区间查询 ,如“士兵杀敌(二)”二、插线问点,区间修改+单点查询 如“士兵杀敌(四)”(区间每次修改的值是一样的)三、 区间查询+区间修改 四、 树状数组求逆序数五、 多维树状数组一般的用数组数组来解的题,都是原创 2017-04-02 11:08:59 · 506 阅读 · 0 评论 -
南工ACM:+-字符串
描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。 输入 多组测试数据每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。 输出 仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。原创 2017-03-27 09:26:31 · 613 阅读 · 0 评论 -
南工ACM:找点
描述 上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗? 输入 多组测试数据。 每组数据先输入一个N,表示有N个闭区间(N≤100)。 接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两个端点。 输出 输出一个整数,表示最少需要找几个点。 样例输入 4 1 5 2 4 1 4 2 3原创 2017-03-27 11:07:01 · 478 阅读 · 0 评论 -
nyoj ACM:点的变换(矩阵运算)
点的变换 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 平面上有不超过10000个点,坐标都是已知的,现在可能对所有的点做以下几种操作:平移一定距离(M),相对X轴上下翻转(X),相对Y轴左右翻转(Y),坐标缩小或放大一定的倍数(S),所有点对坐标原点逆时针旋转一定角度(R)。 操作的次数不超过1000000次,求最终所有点的坐标。提示:如果程序中用到P原创 2017-04-05 22:18:15 · 858 阅读 · 0 评论 -
nyoj ACM:zb的生日(DFS 递归 回溯)
zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜。当他准备把西瓜送给C小加和never的时候,遇到了一个难题,never和C小加不在原创 2017-04-05 11:25:56 · 835 阅读 · 0 评论 -
nyoj ACM:一笔画问题(DFS 递归 欧拉图 连通性)
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。输入 第一行只有一个正整数N(N<=10)N(N<=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000原创 2017-04-05 10:21:01 · 1504 阅读 · 0 评论 -
nyoj ACM:部分和问题(DFS 回溯 递归)
部分和问题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给定整数a1、a2、…….an,判断是否可以从中选出若干数,使它们的和恰好为K。 输入 首先,n和k,n表示数的个数,k表示数的和。 接着一行n个数。 (1<=n<=20,保证不超int范围) 输出 如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”原创 2017-04-05 09:06:20 · 1251 阅读 · 0 评论 -
nyoj ACM:素数环(DFS 回溯 递归)
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。 输入 有多组测试数据,每组输入一个n(0<n<20)n(0<n<20),n=0表示输入结束。 输出 每组第一行输出对原创 2017-04-04 17:18:30 · 3525 阅读 · 1 评论 -
nyoj ACM: 三个水杯(回溯算法 bfs )
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入 第一行一个整数N(0<N<50)N(0<N<50)表示N组测试数据原创 2017-04-03 19:45:21 · 2044 阅读 · 0 评论 -
nyoj ACM:图像有用区域 (bfs)
图像有用区域 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 “ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色。 已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0的点)。输入 第一行输入测试数据的原创 2017-04-04 11:38:35 · 569 阅读 · 0 评论 -
南工ACM:寻找最大数(三)
描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。求这个新的整数的最大值是多少。输入 多组测试数据。 每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100). 输出 每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。 样例输入 1990 1 100 0 9090000078001234 6 样原创 2017-03-27 12:50:18 · 623 阅读 · 0 评论 -
nyoj ACM:士兵杀敌(四)(树状数组)
士兵杀敌(四) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情,军师小工的任务就是在南将军询问他某个原创 2017-04-02 13:08:04 · 594 阅读 · 0 评论 -
区间最值查询 --RMQ算法
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。这两个问题是在实际应用中经常遇到的问题,本文介绍了当前解决这两种问题的比较高效的算法。转载 2017-04-01 18:43:11 · 2072 阅读 · 0 评论 -
蓝桥杯:算法训练 未名湖边的烦恼
问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法) 输入格式 两个整数,表示m和n 输出格式原创 2017-03-23 18:09:13 · 458 阅读 · 0 评论 -
nyoj ACM:幸运三角形
描述 话说有这么一个图形,只有两种符号组成(‘+’或者‘-’),图形的最上层有n个符号,往下个数依次减一,形成倒置的金字塔形状,除第一层外(第一层为所有可能情况),每层形状都由上层决定,相邻的符号相同,则下层的符号为‘+’,反之,为‘-’;如下图所示(n = 3 时的两种情况): 如果图中的两种符号个数相同,那这个原创 2017-03-29 22:48:55 · 774 阅读 · 0 评论 -
nyoj ACM:吝啬的国度(bfs)
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。 输入 第一行输入一个整数M表示测试数据共有M(1<=M<=5)组 每组测试数据的第一原创 2017-03-29 22:23:45 · 556 阅读 · 0 评论 -
南工ACM:组合数
描述 找出从自然数1、2、… 、n(0#include<stdio.h> int main(){ int n=0,r=0; int i=0,j=0; scanf("%d%d",&n,&r); int a[r+1]; for(i=1;i<=r;i++) { a[i]=n-r+i; } while(a[r]>r)原创 2017-03-28 12:42:23 · 705 阅读 · 0 评论 -
蓝桥杯: 算法训练 2的次幂表示
二进制输出原创 2017-03-22 21:07:30 · 586 阅读 · 0 评论 -
蓝桥杯:算法训练 Anagrams问题
数组运算 字符操作原创 2017-03-22 19:13:51 · 572 阅读 · 0 评论 -
蓝桥杯:算法训练 出现次数最多的整数
问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。 输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。 输出格式原创 2017-03-22 15:09:53 · 946 阅读 · 0 评论 -
蓝桥杯:算法训练 数字三角形
问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; 输入格式 文件中首先读到的是三角形的行数。 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入原创 2017-03-23 18:58:54 · 1088 阅读 · 0 评论 -
求最大公约数:欧几里德算法(即 辗转相除法 )
定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。证明: a可以表示成a = kb + r(a,b,k,r皆为正整数,且r<br<b),则r = a mod b 假设d是a,b的一个公约数,记作d|a,d|b,即a和b都可以被d整除。 而r=a−kbr = a - kb,两边同时除以d,r/d=r∗(1/d)=(a−kb)∗(1/d)=a/d−kb/d=m r/d=r*原创 2017-03-24 21:11:45 · 1042 阅读 · 0 评论 -
nyoj ACM:士兵杀敌(二)(树状数组)
士兵杀敌(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。输入 只有一组测试数据 第一行是两个整数N原创 2017-04-01 17:03:12 · 461 阅读 · 0 评论 -
南工ACM:独木舟上的旅行
描述进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。我们要尽量减少这次活动中的花销,所以要找出可以安置所有旅客的最少的独木舟条数。现在请写一个程序,读入独木舟的最大承载量、旅客数目和每位旅客的重量。根据给出的规则,计算要安置所有旅客必须的最少的独木舟条数,并输出结果。输入 第一行输入s,表示测试数据原创 2017-03-26 09:10:06 · 796 阅读 · 0 评论 -
南工ACM:过河问题
描述在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。 输入 第一行是一个整数T(1<=T<=20)原创 2017-03-25 23:15:28 · 694 阅读 · 0 评论 -
南工ACM:喷水装置1
描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0#include<stdio.h> #include<math.h>#define LEN 20#define WID 2void allocate(double* a,int n);void kuaipai(double* a,int l,in原创 2017-03-25 13:51:45 · 454 阅读 · 0 评论 -
nyoj ACM:士兵杀敌(三)(区间最值查询 --RMQ算法)
士兵杀敌(五) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为0~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情。在这样的情况下,南将军却经常会在许多原创 2017-04-01 17:24:17 · 640 阅读 · 0 评论 -
南工ACM:喷水装置2
描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。输入 第一行输入一个正整数N表示共有n次测试数据。 每一组测试数据的第一行有三个整数n,w,h,n表示共有n个喷水装置,w表示草坪的横向原创 2017-03-25 13:47:56 · 547 阅读 · 0 评论 -
练编程:在线OJ汇总
算法设计学习 http://blog.csdn.net/rodestillfaraway/article/details/50533742南阳理工acm类别分的很好的,有时候会卡杭电 国内前几华科有一个Virtual Judge,可以使用其他高校的oj北大 浙大bestcoder 是比赛,oj用的是杭电的Leetcode其他汇总知乎回答牛客网技蒜客acm俱乐部acm俱乐原创 2017-03-25 13:07:22 · 3451 阅读 · 0 评论 -
蓝桥杯:最小公倍数
根据A,B的最大公约数,来求A,B的最小公倍数 假设A,B的最大公约数为a 则有A=a*b ; B=a*c 则A,B的最小公倍数为b*c*a=A*B/a 就两个数的最小公倍数,就等于 二者的乘积再除以他们的最大公约数关于如何求最大公约数,见 http://blog.csdn.net/mosbest/article/details/65653124#include<stdio.h>voi原创 2017-03-24 21:31:39 · 589 阅读 · 0 评论 -
nyoj ACM:迷宫寻宝(一)(bfs)
迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门(N<=5),它们分别被编号为A,B,C,D,E.为了找到宝藏,ACM必须打开门,但是,开门之前必须在迷宫里找到这个打开这个门所需的所有钥匙(每个门都至少有一把钥匙),例如:现在A门有三把钥原创 2017-04-05 22:34:36 · 1146 阅读 · 0 评论