输入:robots.in
有若干行,每行两个整数,表示垃圾的坐标,以0 0结束。
地图大小不超过24*24,而且坐标从第一行开始从上往下给出,每行从左往右。
输出:robots.out
一个整数,表示需要的最少机器人数量。
样例: 输入 1 2 1 4 2 4 2 6 4 4 4 7 6 6 0 0 输出 2 输入 1 1 2 2 4 4 0 0 输出 1
无等差三元组nls(搜索优化)
一个等差三元组是指一个升序的三元组(s1,s2,s3),其中s2-s1与s3-s2相等。例如:(1,2,3),(2,4,6) 和 (14,21,28)都是等差三元组。
给出 L (4 <= L <= 13),表示一个升序序列的元素个数。M (L < M <= 35),表示序列中的最大整数。找出所有正好含L个元素,且可能含有的最大整数为M的正整数递增序列,使序列中不包含等差三元组。
你的程序需要输出符合以上条件的前三个序列,除非总数不到三个。 最后一行输出符合条件的序列的总数。
输入格式:(文件 nls.in)
第一行是两个由空格分开的整数 L 和 M。
输出格式:(文件 nls.out)
第1到第3行,分别输出前三个递增序列,以空格分开各个正整数。如果没有三个方案,就输出所有方案。
下面一行输出符合条件的递增序列的总数,保证一个32位的带符号整型变量可以容纳。
样例: 输入 5 9 输出
1 2 4 8 9 1 2 6 7 9 1 2 6 8 9 4
解析:
含5个元素,可能含有最大整数为9的递增序列,要求序列中不包含任何等差三元组。 第四个序列是:1 3 4 8 9。
数列的整除性 (背包问题)
问题描述:
对于任意一个整数数列,我们可以在每两个整数中间任意放一个符号'+'或'-',这样就可以构成一个表达式,也就可以计算出表达式的值。比如,现在有一个整数数列:17,5,-2,-15,那么就可以构造出8个表达式: 17+5+(-21)+15=16 17+5+(-21)-15=-14 17+5-(-21)+15=58 17+5-(-21)-15=28 17-5+(-21)+15=6 17-5+(-21)-15=-24 17-5-(-21)+15=48 17-5-(-21)-15=18
对于一个整数数列来说,我们能通过如上的方法构造出不同的表达式,从而得到不同的数值,如果该数值能够被k整除的话,那么我们就称该数列能被k整除。
在上面的例子中,该数列能被7整除(17+5+(-21)-15=--14),但不能被5整除。现在你的任务是,判断某个数列是否能被某数整除。
输入格式:
数据存放在当前目录下的文本文件\中。
文件的第一行是一个整数m,表示有m个子任务。接下来就是m个子任务的描述。 每个子任务有两行。第一行是两个整数n和k(1<=n<=10000, 2<=k<=100),n和k中间有一个空格。n 表示数列中整数的个数;k就是需要你判断的这个数列是否能被k整除。第二行是数列的n个整数,整数间用空格隔开,每个数的绝对值都不超过10000。
输出格式:
答案输出到当前目录下的文本文件 \中。
输出文件应有m 行,依次对应输入文件中的m 个子任务,若数列能被k 整除则输出 \,否则输出 \,行首行末应没有空格。
样例:
输入文件:div.in 2 4 7
17 5 -21 15 4 5
17 5 -21 15
输出文件:div.out Divisible Not Divisible
bridging signals(动态规划+二分查找)
有一个二分图的完全匹配,二分图两个顶点集合大小相等。现在要从中取定尽量多的边,使得任意两条边都不相交。如下图所示,连接关系是(4, 2, 6, 3, 1, 5),最多取3条边,满足要求。
输入:signals.in
第一行是整数p,p<40000,表示每个集合顶点个数。
接下来的p行,每行一个数,依次表示左边的点与哪一个右边的点连接。
输出:signals.out
一个整数,表示做多的边数。 样例 输入 6 4 2 6 3 1 5 输出 3 输入 10 2 3 4 5 6 7 8 9 10 1 输出 9 输入 8 8 7 6 5 4 3 2 1 输出 1