随笔分类 - ACM-NYOJ

摘要:喷水装置(二)时间限制:3000 ms | 内存限制:65535 KB难度:4描述有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。输入第一行输入一个正整数N表示共有n次测试数据。每一组测试数据的第一行有三个整数n,w,h,n表示共有n个喷水装置,w表示草坪的横向长度,h表示草坪的纵向长度。随后的n行,都有两个整数xi和ri,xi表示第i个喷水装置的的横坐标(最左边为0),ri表示该喷水装置能覆盖的圆的半径。输 阅读全文
posted @ 2012-04-19 01:09 mtry 阅读 (1804) | 评论 (0) 编辑
摘要:开心的小明时间限制:1000 ms | 内存限制:65535 KB难度:4描述小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N 元(可以等于N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j 件物品的价格为v[j], 阅读全文
posted @ 2012-04-17 21:42 mtry 阅读 (605) | 评论 (0) 编辑
摘要:回文字符串时间限制:3000 ms | 内存限制:65535 KB难度:4描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入第一行给出整数N(0<N<100)接下来的N行,每行一个字符串,每个字符串长度不超过1000.输出每行输出所需添加的最少字符数样例输入1Ab3bd样例输出2分析:d[i][j]表示从第 i 到第 j 的最优解;if(a[i]==a[j] 阅读全文
posted @ 2012-04-17 00:45 mtry 阅读 (1603) | 评论 (0) 编辑
摘要:括号匹配(二)时间限制:1000 ms | 内存限制:65535 KB难度:6描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的输入第一行输入一个正整数N,表示测试数据组数(N<=10)每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100输出对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行样例输入4 阅读全文
posted @ 2012-04-16 23:37 mtry 阅读 (1872) | 评论 (0) 编辑
摘要:前缀式计算时间限制:1000 ms | 内存限制:65535 KB难度:3描述先说明一下什么是中缀式:如2+(3+4)*5这种我们最常见的式子就是中缀式。而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )把括号去掉就是:+ 2 * + 3 4 5最后这个式子就是该表达式的前缀表示。给你一个前缀表达式,请你计算出该前缀式的值。比如:+ 2 * + 3 4 5的值就是 37输入有多组测试数据,每组测试数据占一行,任意两个操作符之间,任意两个操作数之间,操作数与操作符之间都有一个空格。输入的两个操作数可能是小数,数据保证输入的 阅读全文
posted @ 2012-04-16 14:11 mtry 阅读 (1767) | 评论 (0) 编辑
摘要:最长公共子序列时间限制:3000 ms | 内存限制:65535 KB难度:3描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。输入第一行给出一个整数N(0<N<100)表示待测数据组数接下来每组数据两行,分别为待测的两组字符串。每个字符串长度不大于1000.输出每组测试数据输出一个整数,表示最长 阅读全文
posted @ 2012-04-16 09:41 mtry 阅读 (327) | 评论 (0) 编辑
摘要:The Triangle时间限制:1000 ms | 内存限制:65535 KB难度:4描述73 88 1 02 7 4 44 5 2 6 5(Figure 1)Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left o 阅读全文
posted @ 2012-04-14 00:50 mtry 阅读 (222) | 评论 (0) 编辑
摘要:单调递增最长子序列时间限制:3000 ms | 内存限制:65535 KB难度:4描述求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4输入第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入3aaaababcabklmncdefg样例输出137分析:方法一:求最大字段和的方法相似。O(n^2)dp[i] 以 i 结尾的当然也包括i 在内的最长递增子序列;我经常犯的的一个错误是:dp[i] = d[j] +1(j<i && 阅读全文
posted @ 2012-04-14 00:24 mtry 阅读 (2386) | 评论 (0) 编辑
摘要:完全覆盖时间限制:2000 ms | 内存限制:65535 KB难度:3描述有一天小董子在玩一种游戏----用2*1或1*2的骨牌把m*n的棋盘完全覆盖。但他感觉游戏过于简单,于是就随机生成了两个方块的位置(可能相同),标记一下,标记后的方块不用覆盖。还要注意小董子只有在m*n的棋盘能被完全覆盖后才会进行标记。现在他想知道:如果标记前m*n的棋盘能被完全覆盖,标记后的棋盘是否能被完全覆盖?输入第一行有一个整数t(1<=t<=100000),表示有t组测试数据。每组测试数据有三行或一行。第一行有两个整数 m,n(1<=m,n<=25535)表示行数和列数。第二、三行都有两 阅读全文
posted @ 2012-04-06 12:43 mtry 阅读 (667) | 评论 (0) 编辑
摘要:Game of Connections时间限制:1000 ms | 内存限制:65535 KB难度:3描述This is a small but ancient game. You are supposed to write down the numbers 1, 2, 3, . . . , 2n - 1, 2n consecutively in clockwise order on the ground to form a circle, and then, to draw some straight line segments to connect them into number pai 阅读全文
posted @ 2012-03-30 16:40 mtry 阅读 (930) | 评论 (0) 编辑
摘要:快速查找素数时间限制:1000 ms | 内存限制:65535 KB难度:3描述现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。输入给出一个正整数数N(N<=2000000)但N为0时结束程序。测试数据不超过100组输出将2~N范围内所有的素数输出。两个数之间用空格隔开样例输入510110样例输出2 3 52 3 5 72 3 5 7 11算法分析:打素数表;错误原因:假如n=2000000时要考虑最后的数字View Code #include<iostream>#include<cstdio>#include<cstring> 阅读全文
posted @ 2012-03-22 22:03 mtry 阅读 (1629) | 评论 (0) 编辑
摘要:求余数时间限制:1000 ms | 内存限制:65535 KB难度:3描述现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数输入第一行有一个整数m(1<=m<=8),表示有m组测试数据;随后m行每行有一个自然数n。输出输出n整除10003之后的余数,每次输出占一行。样例输入345465456541样例输出456948算法分析:就是模拟一般的除法运算。View Code 1 #include<iostream> 2 #include<cstring> 3 #define N 1000010 4 5 using nam 阅读全文
posted @ 2012-03-22 19:39 mtry 阅读 (597) | 评论 (0) 编辑
摘要:我排第几个时间限制:1000 ms | 内存限制:65535 KB难度:3描述现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?输入第一行有一个整数n(0<n<=10000);随后有n行,每行是一个排列;输出输出一个整数m,占一行,m表示排列是第几位;样例输入3abcdefghijklhgebkflacdjigfkedhjblcia样例输出1302715242260726926算法分析:这个题我是采用计算给定字符串后面还有多少个View Code 1 #include<iostream 阅读全文
posted @ 2012-03-22 14:51 mtry 阅读 (686) | 评论 (0) 编辑
摘要:九的余数时间限制:3000 ms | 内存限制:65535 KB难度:3描述现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。输入第一行有一个整数m(1<=m<=8),表示有m组测试数据;随后m行每行有一个自然数n。输出输出n整除九之后的余数,每次输出占一行。样例输入345465456541样例输出454算法分析:这个题目有个规律,(a*10^b)%9==(a%9)*(10^b%9)%9==(a%9)*1%9==a%9View Code 1 #include<iostream> 2 #include<cstring> 阅读全文
posted @ 2012-03-22 13:54 mtry 阅读 (270) | 评论 (0) 编辑
摘要:次方求模时间限制:1000 ms | 内存限制:65535 KB难度:3描述求a的b次方对c取余的值输入第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000)输出输出a的b次方对c取余之后的结果样例输入32 3 53 100 1011 12345 12345样例输出3110481心得:这题wa好多次了,找了好久多没发现错误,long long 2^63 大概是 9*10^18,假如999999999*999999999*999999999肯定超过int 64位的长度了,所以一定溢出。测试案例 阅读全文
posted @ 2012-03-19 14:53 mtry 阅读 (363) | 评论 (0) 编辑
摘要:汉诺塔(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。现在请你计算出起始有m个金片的汉诺塔金片全部移动到另外一个针上时需要移动的最少步 阅读全文
posted @ 2012-03-15 15:40 mtry 阅读 (395) | 评论 (0) 编辑
摘要:街区最短路径问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述一个街区有很多住户,街区的街道只能为东西、南北两种方向。住户只可以沿着街道行走。各个街道之间的间隔相等。用(x,y)来表示住户坐在的街区。例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。现在要建一个邮局,使得各个住户到邮局的距离之和最少。求现在这个邮局应该建在那个地方使得所有住户距离之和最小;输入第一行一个整数n<20,表示有n组测试数据,下面是n组数据;每组第一行一个整数m<20,表示本组有m个住户,下面的m行每行有两个整数0<x,y<100,表示某个用户所在街区 阅读全文
posted @ 2012-03-15 14:47 mtry 阅读 (2440) | 评论 (1) 编辑
摘要:不再爱你……时间限制:1000 ms | 内存限制:65535 KB难度:3描述现在有一个圆柱形水杯,里面装满了水,在它的底部有一个小洞,通过一些简单的物理知识我们可以知道:1、由于重力的原因,水一定会从小洞流出来。2、小洞漏水的速度是和小洞那个位置的水所受到的压力大小成正比的。进而,我们可以知道,漏水的速度V和水面的的高度h成正比,简单起见,我们就直接让v=h吧(只是数值上的相等,v我们认为是单位时间漏出的水的体积,与小孔的大小无关,物理好的童鞋就不要深究了^_^)。3、如果你非常喜欢一个人,理论上在水漏完之前你一定不再喜欢TA了。好吧,扯远了,我们现在的问题是,如果原来倒入了高度为h的水, 阅读全文
posted @ 2012-03-08 20:13 mtry 阅读 (304) | 评论 (0) 编辑
摘要:Fibonacci数列(四)时间限制:1000 ms | 内存限制:65535 KB难度:4描述数学神童小明终于把0到100000000的Fibonacci数列(f[0]=0,f[1]=1;f[i]=f[i-1]+f[i-2](i>=2))的值全部给背了下来。接下来,CodeStar决定要考考他,于是每问他一个数字,他就要把答案说出来,不过有的数字太长了。所以规定超过4位的只要说出前4位(高4位)就可以了,可是CodeStar自己又记不住。于是他决定编写一个程序来测验小明说的是否正确。输入输入若干数字n(0 <= n <= 100000000),每个数字一行。读到文件尾结束。 阅读全文
posted @ 2012-03-02 18:19 mtry 阅读 (460) | 评论 (0) 编辑
摘要:Matrix Power Series时间限制:1000 ms | 内存限制:65535 KB难度:4描述Given an×nmatrixAand a positive integerk, find the sumS=A+A2+A3+ … +Ak.输入The input contains exactly one test case. The first line of input contains three positive integers n (n ≤ 30), k (k ≤ 10^9) and m (m < 10^4). Then follow n lines each 阅读全文
posted @ 2012-03-01 16:36 mtry 阅读 (158) | 评论 (0) 编辑
摘要:项链时间限制:1000 ms | 内存限制:65535 KB难度:3描述在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为(Mars单位),新产生的珠子的头标记为m,尾标记为n。需要时,Mars人就用吸盘夹 阅读全文
posted @ 2012-02-27 15:30 mtry 阅读 (900) | 评论 (0) 编辑
摘要:矩形嵌套时间限制:3000 ms | 内存限制:65535 KB难度:4描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。输入第一行是一个正正数N(0<N<10),表示测试数据组数,每组测试数据的第一行是一个正正数n,表示该组测试数据中含有矩形的个数(n<=1000)随后的n行,每行有两 阅读全文
posted @ 2012-02-26 13:35 mtry 阅读 (257) | 评论 (0) 编辑
摘要:最少乘法次数时间限制:1000 ms | 内存限制:65535 KB难度:3描述给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次;输入第一行m表示有m(1<=m<=100)组测试数据;每一组测试数据有一整数n(0<n<=10000);输出输出每组测试数据所需次数s;样例输入3234样例输出122这个题葫芦糊涂就过了View Code 1 #include<iostream> 2 using namespace std; 3 int main 阅读全文
posted @ 2012-02-24 19:09 mtry 阅读 (479) | 评论 (0) 编辑
摘要:Sorting It All Out时间限制:3000 ms | 内存限制:65535 KB难度:3描述An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example, the sorted sequence A, B, C, D implies that A < B, B < C and C < D. in t 阅读全文
posted @ 2011-11-27 22:43 mtry 阅读 (305) | 评论 (0) 编辑
摘要:寻找最大数时间限制:1000 ms | 内存限制:65535 KB描述请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,比如当n=92081346718538,m=10时,则新的最大数是9888输入第一行输入一个正整数T,表示有T组测试数据每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)输出每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数样例输入292081346718538 101008908 5样例输出988898算法分析:依次找出所有的值,len为数值的位数,n为要删掉的个 阅读全文
posted @ 2011-11-27 20:50 mtry 阅读 (556) | 评论 (3) 编辑
摘要:红黑树时间限制:3000 ms | 内存限制:65535 KB难度:3描述什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树。。。当然,这个是我说的。。。《算法导论》上可不是这么说的:如果一个二叉查找树满足下面的红黑性质,那么则为一个红黑树。1)每个节点或是红的,或者是黑的。2)每个叶子节点(NIL)是黑色的3)如果一个节点是红色的,那么他的两个儿子都是黑的。4)根节点是黑色的。5)对于每个节点,从该节点到子孙节点的所有路径上包含相同数目的黑色节点。我们在整个过程中会用到这些性质,当然,为了公平起见,其实即使你不知道这些性质,这个题目也是可以完成的(为什么不早说。。。。 阅读全文
posted @ 2011-11-22 21:36 mtry 阅读 (457) | 评论 (0) 编辑
摘要:Same binary weight时间限制:300 ms | 内存限制:65535 KB难度:3描述The binary weight of a positive integer is the number of 1's in its binary representation.for example,the decmial number 1 has a binary weight of 1,and the decimal number 1717 (which is 11010110101 in binary) has a binary weight of 7.Give a posi 阅读全文
posted @ 2011-11-20 22:31 mtry 阅读 (250) | 评论 (0) 编辑
摘要:众数问题时间限制:3000 ms | 内存限制:65535 KB难度:3描述所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数,多重集合S重的重数最大的元素成为众数。例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。输入第一行为n,表示测试数据组数。(n<30)每组测试的第一行是一个整数m,表示多重集S中元素的个数为m接下来的一行中给出m(m<100)个不大于10万的自然数(不会出现不同元素出现的次数相同的情况,如:S={11,11,22,2 阅读全文
posted @ 2011-11-20 14:23 mtry 阅读 (933) | 评论 (0) 编辑
摘要:找球号(一)时间限制:3000 ms | 内存限制:65535 KB难度:3描述在某一国度里流行着一种游戏。游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,现在说一个随机整数k(0<=k<=100000100),判断编号为k的球是否在这堆球中(存在为"YES",否则为"NO"),先答出者为胜。现在有一个人想玩玩这个游戏,但他又很懒。他希望你能帮助他取得胜利。输入第一行有两个整数m,n(0<=n<=100000,0<=m<=1000000);m表示这堆球里有m 阅读全文
posted @ 2011-11-20 14:06 mtry 阅读 (373) | 评论 (0) 编辑
摘要:懒省事的小明时间限制:3000 ms | 内存限制:65535 KB难度:3描述 小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。小明决定把所有的果子合成一堆。 因为小明比较懒,为了省力气,小明开始想点子了: 每一次合并,小明可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。小明在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以小明在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的... 阅读全文
posted @ 2011-11-20 12:43 mtry 阅读 (858) | 评论 (0) 编辑
摘要:擅长排列的小明时间限制:1000 ms | 内存限制:65535 KB难度:4描述小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。输入第一行输入整数N(1<N<10)表示多少组测试数据,每组测试数据第一行两个整数 n m (1<n<9,0<m<=n)输出在1-n中选取m个字符进行全排列,按字典序全部输出,每种排列占一行,每组数据间不需分界。如样例样例输入23 14 2样例输出 阅读全文
posted @ 2011-11-18 22:06 mtry 阅读 (336) | 评论 (0) 编辑
摘要:一种排序时间限制:3000 ms | 内存限制:65535 KB难度:3描述现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);1.按照编号从小到大排序2.对于编号相等的长方形,按照长方形的长排序;3.如果编号和长都相同,按照长方形的宽排序;4.如果编号、长、宽都相同,就只保留一个长方形用于排序,删除多余的长方形;最后排好序按照指定格式显示所有的长方形;输入第一行有一个整数 0<n<10000,表示接下来有n组测试数据;每一组第一行有一个整数 0<m<1000 阅读全文
posted @ 2011-11-18 21:26 mtry 阅读 (901) | 评论 (0) 编辑
摘要:Phone List时间限制:1000 ms | 内存限制:65535 KB难度:4描述Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let's say the phone catalogue listed these numbers:Emergency 911Alice 97 625 999Bob 91 12 54 26In this case, it's not possible to cal 阅读全文
posted @ 2011-11-10 19:19 mtry 阅读 (257) | 评论 (0) 编辑
摘要:三点顺序时间限制:1000 ms | 内存限制:65535 KB难度:3描述现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针给出的?如:图1:顺时针给出图2:逆时针给出 <图1> <图2>输入每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示A,B,C三个点的横纵坐标。(坐标值都在0到10000之间)输入0 0 0 0 0 0表示输入结束测试数据不超过10000组输出如果这三个点是顺时针给出的,请输出1,逆时针给出则输出0样例输入0 0 1 1 1 30 1 1 0 0 00 0 0 阅读全文
posted @ 2011-11-07 13:26 mtry 阅读 (185) | 评论 (0) 编辑
摘要:相同的雪花时间限制:1000 ms | 内存限制:65535 KB难度:4描述You may have heard that no two snowflakes are alike. Your task is to write a program to determine whether this is really true. Your program will read information about a collection of snowflakes, and search for a pair that may be identical. Each snowflake has s 阅读全文
posted @ 2011-11-02 21:37 mtry 阅读 (294) | 评论 (2) 编辑
摘要:树的判定时间限制:1000 ms | 内存限制:65535 KB难度:4描述A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following properties.There is exactly one node, called the root, to which no directed edges 阅读全文
posted @ 2011-10-25 20:46 mtry 阅读 (493) | 评论 (0) 编辑
摘要:士兵杀敌(四)时间限制:2000 ms | 内存限制:65535 KB难度:5描述南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情,军师小工的任务就是在南将军询问他某个人的军功的时候,快速的报出此人的军功,请你编写一个程序来帮助小工吧。假设起始时所有人的军功都是0.输入只有一组测试数据。每一行是两个整数T和M表示共有T条指令,M个士兵。(1<=T,M<=1000000)随 阅读全文
posted @ 2011-10-19 18:39 mtry 阅读 (230) | 评论 (0) 编辑
摘要:士兵杀敌(三)时间限制:2000 ms | 内存限制:65535 KB难度:5描述南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌数低的人,起到了很好的效果。所以,南将军经常问军师小工第i号士兵到第j号士兵中,杀敌数最高的人与杀敌数最低的人之间军功差值是多少。现在,请你写一个程序,帮小工回答南将军每次的询问吧。注意,南将军可能询问很多次。输入只有一组测试数据第一行是两个整数N,Q,其中N表示士兵的总数。Q表示南将军询问的次数。(1<N<= 阅读全文
posted @ 2011-10-17 14:15 mtry 阅读 (298) | 评论 (0) 编辑
摘要:题意:求逆序数时间限制:2000 ms | 内存限制:65535 KB难度:5描述在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。现在,给你一个N个元素的序列,请你判断出它的逆序数是多少。比如 1 3 2 的逆序数就是1。输入第一行输入一个整数T表示测试数据的组数(1<=T<=5)每组测试数据的每一行是一个整数N表示数列中共有N个元素(2〈=N〈=1000000)随后的一行共有N个整数Ai(0<=Ai<1000000000),表示数列中的所有元素。数据保证在多组测试数据中,多于 阅读全文
posted @ 2011-10-16 21:39 mtry 阅读 (481) | 评论 (0) 编辑
摘要:士兵杀敌(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军现在想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。注意,南将军可能会问很多次问题。输入只有一组测试数据第一行是两个整数N,M,其中N表示士兵的个数(1<N<1000000),M表示南将军询问的次数(1<M<100000)随后的一行是N个整数,ai表示第i号士兵杀敌数目。(0<=ai<=100)随后的M行每行有两个整数m,n,表示南将军想知道第m号到第n号士兵的总杀敌 阅读全文
posted @ 2011-10-14 22:51 mtry 阅读 (237) | 评论 (0) 编辑
摘要:汉诺塔(三)时间限制:3000 ms | 内存限制:65535 KB 难度:3描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。现在我们把三根针编号为1,2,3。所有的金片在初始时都在1号针上,现在给你的 阅读全文
posted @ 2011-10-09 20:41 mtry 阅读 (254) | 评论 (0) 编辑
摘要:小猴子下落时间限制:3000 ms | 内存限制:65535 KB难度:3描述有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果开关关闭,小猴子往左走,否则往右走,直到走到叶子结点。一些小猴子从结点1处开始往下跑,最后一个小猴儿会跑到哪里呢?输入输入二叉树叶子的深度D,和小猴子数目I,假设I不超过整棵树的叶子个数,D< 阅读全文
posted @ 2011-10-09 18:51 mtry 阅读 (504) | 评论 (0) 编辑
摘要:表达式求值时间限制:3000 ms | 内存限制:65535 KB难度:4描述ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数)输入第一行输入一个整数n,共有n组测试数据(n<10)。每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式,每个运算式都是以“=”结束。这个表达式里只包含+-*/与小括号这几种符号。其中小括号可以嵌套使用。数据保证输入的操作数中不会出现负数。数据保证除数不会为0输出 阅读全文
posted @ 2011-10-09 15:48 mtry 阅读 (384) | 评论 (0) 编辑
摘要:Binary String Matching时间限制:3000 ms | 内存限制:65535 KB描述Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how many times does A appear as a substring of B? For example, the text string B is ‘1001110110’ while the pattern string A is ‘11’, you should output 3, 阅读全文
posted @ 2011-09-29 20:19 mtry 阅读 (209) | 评论 (0) 编辑
摘要:括号配对问题时间限制:3000 ms | 内存限制:65535 KB难度:3描述现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])样 阅读全文
posted @ 2011-09-29 19:41 mtry 阅读 (384) | 评论 (0) 编辑